Skip to content

feat: add local audio intake bootstrap#55

Merged
seonghobae merged 3 commits into
developfrom
feat/issue-33-audio-intake-bootstrap
Mar 12, 2026
Merged

feat: add local audio intake bootstrap#55
seonghobae merged 3 commits into
developfrom
feat/issue-33-audio-intake-bootstrap

Conversation

@seonghobae

@seonghobae seonghobae commented Mar 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add a secure local-audio selection and project bootstrap flow that keeps source validation and bootstrap roots inside the Tauri boundary
  • expand shared contracts and Python validation so local_audio requests use a trusted projectId handoff while Rust rehydrates the stored source metadata before engine execution
  • document the reference-only bootstrap decision, app-owned Tauri path roots, and the rfd admission rationale for the native file picker

Verification

  • ./scripts/harness/quickcheck.sh
  • cargo check --manifest-path apps/desktop/src-tauri/Cargo.toml
📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • 로컬 오디오 파일 선택 및 프로젝트 부트스트랩 추가: WAV/MP3/FLAC/M4A 지원, 원본 파일을 참조하는 방식으로 분석 시작 가능, UI에 "로컬 오디오 선택" 버튼 및 선택 정보 표시
  • Localization
    • 선택/오디오 관련 문구(선택 버튼, 선택된 파일, 참조 설명, 지원 포맷 안내) 한국어·영문 추가
  • Docs
    • 로컬 오디오 인테이크 설계·보안·아키텍처 문서 추가/갱신
  • Tests
    • 로컬 오디오 입력 및 검증 경로에 대한 단위/통합 테스트 추가

Walkthrough

로컬 오디오 파일 선택 부트스트랩 기능이 추가됩니다. React가 Tauri에게 파일 선택을 요청하면 Rust에서 검증 후 앱 소유 프로젝트/캐시/임시 루트를 생성·저장하고, 분석 요청에 참조형 로컬 오디오 메타데이터를 포함해 Python으로 전달합니다.

Changes

Cohort / File(s) Summary
문서·계획
ARCHITECTURE.md, docs/architecture/overview.md, docs/security/app-security.md, docs/plans/2026-03-12-issue-33-audio-intake-bootstrap-design.md, docs/plans/2026-03-12-issue-33-audio-intake-bootstrap.md
로컬 오디오 부트스트랩 아키텍처, 보안 고려사항, 설계·실행 계획 추가. 앱 소유 경로 및 원본 파일 참조 방식 명시.
Tauri 설정
apps/desktop/src-tauri/Cargo.toml, apps/desktop/src-tauri/build.rs, apps/desktop/src-tauri/capabilities/main.json, apps/desktop/src-tauri/permissions/autogenerated/select_local_audio_source.toml
rfd 의존성 추가, select_local_audio_source 명령 노출, 관련 권한 항목 및 자동생성 권한 TOML 추가.
Tauri 백엔드 구현
apps/desktop/src-tauri/src/main.rs
파일 다이얼로그 통합, select_local_audio_source 커맨드 구현, 프로젝트별 bootstrap 생성·검증·저장, 분석 요청에 로컬 오디오 메타데이터 연결 로직 추가.
클라이언트 UI·로직
apps/desktop/src/App.tsx, apps/desktop/src/lib/analysis.ts, apps/desktop/src/App.test.tsx
UI에 로컬 오디오 선택 버튼/상태/오류 처리 추가, selectLocalAudioSource 공개 API 구현 및 테스트 보강(성공/다양한 오류 경로).
지역화
apps/desktop/src/locales/en/common.json, apps/desktop/src/locales/ko/common.json
로컬 오디오 선택 관련 문구(선택 버튼, 선택 파일 표시, 형식 안내 등) 추가.
공유 타입·검증
packages/shared-types/src/index.ts, packages/shared-types/test/index.test.ts
AnalysisSourceKindlocal_audio 추가, LocalAudioSource, ProjectBootstrapSummary 타입 및 생성·검증·파싱 함수 추가, AnalysisJobRequest를 유니온으로 리팩토링 및 테스트 확장.
Python 백엔드
services/analysis-engine/src/bandscope_analysis/api.py, services/analysis-engine/tests/test_api.py, services/analysis-engine/tests/test_cli.py
API에서 sourceKindlocal_audio 허용, projectId/localSource 검증 로직 추가, 관련 유닛·CLI 테스트 보강.

Sequence Diagram(s)

sequenceDiagram
    participant User as 사용자
    participant React as React UI
    participant Tauri as Tauri (Rust)
    participant FS as 파일시스템
    participant Python as Python 백엔드

    User->>React: "Choose Local Audio" 클릭
    React->>Tauri: select_local_audio_source() 호출
    Tauri->>FS: 파일 다이얼로그 열기 / 파일 경로 수신
    Tauri->>Tauri: 파일 검증 (확장자, 크기)
    Tauri->>Tauri: 앱 소유 project/cache/temp 루트 생성
    Tauri->>Tauri: ProjectBootstrapSummary 생성 및 저장
    Tauri-->>React: ProjectBootstrapSummary 반환
    React->>React: 선택 상태 업데이트
    React->>Python: 분석 요청 전송 (sourceKind: "local_audio", projectId)
    Python->>Python: localSource 검증 및 분석 실행 (원본 파일 경로 참조)
    Python-->>React: 분석 상태/결과 반환
Loading
sequenceDiagram
    participant Client as 클라이언트
    participant Shared as SharedTypes
    participant Tauri as Tauri/Rust
    participant Python as Python 엔진

    Client->>Shared: AnalysisJobRequest 생성 (sourceKind: "local_audio")
    Shared->>Client: 유니온 기반 검증 (projectId 필수)
    Client->>Tauri: 분석 시작 요청 전송
    Tauri->>Tauri: projectId로 bootstrap 조회 -> localSource 추출
    Tauri->>Python: 분석 페이로드 전송 (localSource 포함)
    Python->>Python: localSource 필드 재검증
    Python->>Python: 원본 경로로 분석 수행
    Python-->>Client: 결과 반환
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60분

Possibly related PRs

Poem

🐰 로컬 파일 눌러 고개를 끄덕여,
작은 부트스트랩이 프로젝트에 깃들어,
Rust가 확인하고 루트들을 지켜,
Python은 원본을 불러 노래하네,
참조로 남겨 공간을 아끼며 춤을 추네 🎶

@coderabbitai

coderabbitai Bot commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 0c07bde4-aa3f-42a0-a13c-67133a0f06f9

📥 Commits

Reviewing files that changed from the base of the PR and between 895bdfc and 322f3be.

⛔ Files ignored due to path filters (5)
  • apps/desktop/src-tauri/Cargo.lock is excluded by !**/*.lock
  • apps/desktop/src-tauri/gen/schemas/acl-manifests.json is excluded by !**/gen/**
  • apps/desktop/src-tauri/gen/schemas/capabilities.json is excluded by !**/gen/**
  • apps/desktop/src-tauri/gen/schemas/desktop-schema.json is excluded by !**/gen/**
  • apps/desktop/src-tauri/gen/schemas/macOS-schema.json is excluded by !**/gen/**
📒 Files selected for processing (20)
  • ARCHITECTURE.md
  • apps/desktop/src-tauri/Cargo.toml
  • apps/desktop/src-tauri/build.rs
  • apps/desktop/src-tauri/capabilities/main.json
  • apps/desktop/src-tauri/permissions/autogenerated/select_local_audio_source.toml
  • apps/desktop/src-tauri/src/main.rs
  • apps/desktop/src/App.test.tsx
  • apps/desktop/src/App.tsx
  • apps/desktop/src/lib/analysis.ts
  • apps/desktop/src/locales/en/common.json
  • apps/desktop/src/locales/ko/common.json
  • docs/architecture/overview.md
  • docs/plans/2026-03-12-issue-33-audio-intake-bootstrap-design.md
  • docs/plans/2026-03-12-issue-33-audio-intake-bootstrap.md
  • docs/security/app-security.md
  • packages/shared-types/src/index.ts
  • packages/shared-types/test/index.test.ts
  • services/analysis-engine/src/bandscope_analysis/api.py
  • services/analysis-engine/tests/test_api.py
  • services/analysis-engine/tests/test_cli.py

Cache: Disabled due to Reviews > Disable Cache setting

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.


📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • 로컬 오디오 파일 선택 및 프로젝트 부트스트랩 추가: WAV/MP3/FLAC/M4A 지원, 원본 파일을 참조하는 방식으로 분석 시작 가능, UI에 "로컬 오디오 선택" 버튼 및 선택 정보 표시
  • Localization
    • 선택/오디오 관련 문구(선택 버튼, 선택된 파일, 참조 설명, 지원 포맷 안내) 한국어·영문 추가
  • Docs
    • 로컬 오디오 인테이크 설계·보안·아키텍처 문서 추가/갱신
  • Tests
    • 로컬 오디오 입력 및 검증 경로에 대한 단위/통합 테스트 추가

Walkthrough

로컬 오디오 파일 선택 부트스트랩 기능이 추가됩니다. React가 Tauri에게 파일 선택을 요청하면 Rust에서 검증 후 앱 소유 프로젝트/캐시/임시 루트를 생성·저장하고, 분석 요청에 참조형 로컬 오디오 메타데이터를 포함해 Python으로 전달합니다.

Changes

Cohort / File(s) Summary
문서·계획
ARCHITECTURE.md, docs/architecture/overview.md, docs/security/app-security.md, docs/plans/2026-03-12-issue-33-audio-intake-bootstrap-design.md, docs/plans/2026-03-12-issue-33-audio-intake-bootstrap.md
로컬 오디오 부트스트랩 아키텍처, 보안 고려사항, 설계·실행 계획 추가. 앱 소유 경로 및 원본 파일 참조 방식 명시.
Tauri 설정
apps/desktop/src-tauri/Cargo.toml, apps/desktop/src-tauri/build.rs, apps/desktop/src-tauri/capabilities/main.json, apps/desktop/src-tauri/permissions/autogenerated/select_local_audio_source.toml
rfd 의존성 추가, select_local_audio_source 명령 노출, 관련 권한 항목 및 자동생성 권한 TOML 추가.
Tauri 백엔드 구현
apps/desktop/src-tauri/src/main.rs
파일 다이얼로그 통합, select_local_audio_source 커맨드 구현, 프로젝트별 bootstrap 생성·검증·저장, 분석 요청에 로컬 오디오 메타데이터 연결 로직 추가.
클라이언트 UI·로직
apps/desktop/src/App.tsx, apps/desktop/src/lib/analysis.ts, apps/desktop/src/App.test.tsx
UI에 로컬 오디오 선택 버튼/상태/오류 처리 추가, selectLocalAudioSource 공개 API 구현 및 테스트 보강(성공/다양한 오류 경로).
지역화
apps/desktop/src/locales/en/common.json, apps/desktop/src/locales/ko/common.json
로컬 오디오 선택 관련 문구(선택 버튼, 선택 파일 표시, 형식 안내 등) 추가.
공유 타입·검증
packages/shared-types/src/index.ts, packages/shared-types/test/index.test.ts
AnalysisSourceKindlocal_audio 추가, LocalAudioSource, ProjectBootstrapSummary 타입 및 생성·검증·파싱 함수 추가, AnalysisJobRequest를 유니온으로 리팩토링 및 테스트 확장.
Python 백엔드
services/analysis-engine/src/bandscope_analysis/api.py, services/analysis-engine/tests/test_api.py, services/analysis-engine/tests/test_cli.py
API에서 sourceKindlocal_audio 허용, projectId/localSource 검증 로직 추가, 관련 유닛·CLI 테스트 보강.

Sequence Diagram(s)

sequenceDiagram
    participant User as 사용자
    participant React as React UI
    participant Tauri as Tauri (Rust)
    participant FS as 파일시스템
    participant Python as Python 백엔드

    User->>React: "Choose Local Audio" 클릭
    React->>Tauri: select_local_audio_source() 호출
    Tauri->>FS: 파일 다이얼로그 열기 / 파일 경로 수신
    Tauri->>Tauri: 파일 검증 (확장자, 크기)
    Tauri->>Tauri: 앱 소유 project/cache/temp 루트 생성
    Tauri->>Tauri: ProjectBootstrapSummary 생성 및 저장
    Tauri-->>React: ProjectBootstrapSummary 반환
    React->>React: 선택 상태 업데이트
    React->>Python: 분석 요청 전송 (sourceKind: "local_audio", projectId)
    Python->>Python: localSource 검증 및 분석 실행 (원본 파일 경로 참조)
    Python-->>React: 분석 상태/결과 반환
Loading
sequenceDiagram
    participant Client as 클라이언트
    participant Shared as SharedTypes
    participant Tauri as Tauri/Rust
    participant Python as Python 엔진

    Client->>Shared: AnalysisJobRequest 생성 (sourceKind: "local_audio")
    Shared->>Client: 유니온 기반 검증 (projectId 필수)
    Client->>Tauri: 분석 시작 요청 전송
    Tauri->>Tauri: projectId로 bootstrap 조회 -> localSource 추출
    Tauri->>Python: 분석 페이로드 전송 (localSource 포함)
    Python->>Python: localSource 필드 재검증
    Python->>Python: 원본 경로로 분석 수행
    Python-->>Client: 결과 반환
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60분

Possibly related PRs

Poem

🐰 로컬 파일 눌러 고개를 끄덕여,
작은 부트스트랩이 프로젝트에 깃들어,
Rust가 확인하고 루트들을 지켜,
Python은 원본을 불러 노래하네,
참조로 남겨 공간을 아끼며 춤을 추네 🎶

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/issue-33-audio-intake-bootstrap

Comment @coderabbitai help to get the list of available commands and usage tips.

@seonghobae

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@seonghobae seonghobae enabled auto-merge (squash) March 12, 2026 08:34
@coderabbitai

coderabbitai Bot commented Mar 12, 2026

Copy link
Copy Markdown
Contributor
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae seonghobae merged commit fb2283c into develop Mar 12, 2026
19 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant