Phase 1: - 프로젝트 초기화 (TypeScript strict, electron-vite, ESLint, Prettier) - shared 타입 (ipc-channels 113채널, types, errors, constants) - 메인 프로세스 뼈대 (bootstrap, lifecycle, 단일 인스턴스) - LoggerService, ConfigService (electron-store ESM dynamic import) - React 19 + MUI 7 Dashboard, 시스템 트레이 Phase 2: - AudioCaptureService (node-record-lpcm16, PCM16 16kHz mono) - HotkeyService (uiohook-napi, 더블프레스, holdMode/toggleMode) - LocalSTTService (faster-whisper Python sidecar, 이중 조건 플러시) - VoiceModeService 오케스트레이터 (이중 상태머신, Action Queue) - Python sidecar (FastAPI: health/load/transcribe/shutdown) - IPC 핸들러 (voice, stt, hotkey) + Preload API 확장
47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
---
|
|
name: implement-phase
|
|
description: Speakly RE 노하우를 기반으로 D3RO-VOICE의 특정 페이즈를 구현. 페이즈 번호를 인자로 전달.
|
|
argument-hint: "[phase number, e.g. 1]"
|
|
allowed-tools: Read Write Edit Bash Glob Grep Agent
|
|
---
|
|
|
|
# Phase Implementation
|
|
|
|
지정된 페이즈를 구현합니다.
|
|
|
|
## 실행 순서
|
|
|
|
1. **설계서 로드** (필수, 반드시 먼저):
|
|
- `docs/design/00-master-architecture.md` — 파일 트리, 초기화 순서, 서비스 의존관계
|
|
- `docs/design/01-service-specifications.md` — 서비스 인터페이스, 상태 머신, 이벤트
|
|
- `docs/design/02-ipc-and-types.md` — IPC 채널, TypeScript 타입, 에러 코드
|
|
- `docs/design/03-db-and-ui.md` — DB 스키마, 컴포넌트 명세, MUI 테마
|
|
2. **페이즈 문서 로드**: `docs/phases/phase-$ARGUMENTS.md` 읽기
|
|
3. **RE 참조 문서 확인**: `docs/re-findings/` 에서 관련 노하우 확인
|
|
4. **현재 코드 상태 파악**: 기존 구현된 코드 검토
|
|
4. **구현 계획 수립**: TaskCreate로 세부 태스크 생성
|
|
5. **구현**: 태스크별로 순차 구현
|
|
- 타입 정의 (shared/) 먼저
|
|
- 메인 프로세스 서비스 구현
|
|
- IPC 핸들러 등록
|
|
- 렌더러 UI 구현
|
|
- 프리로드 브릿지 업데이트
|
|
6. **테스트**: 각 모듈 단위 테스트
|
|
7. **CLAUDE.md 업데이트**: 현재 상태 갱신
|
|
8. **Memory 갱신** (필수): `project_status.md`에 완료된 Phase, 작업 내역, 기술 결정 기록
|
|
|
|
## 구현 규칙 (위반 불가)
|
|
- 서비스는 **설계서 01**의 인터페이스를 그대로 구현 (메서드 시그니처, 이벤트 페이로드 일치)
|
|
- IPC 채널은 **설계서 02**의 `IPC_CHANNELS` 상수를 그대로 사용 (임의 채널명 금지)
|
|
- 타입은 **설계서 02**의 `shared/types.ts` 정의를 그대로 사용 (임의 타입 금지)
|
|
- 에러는 **설계서 02**의 `D3ROError` + `ErrorCode` enum 사용
|
|
- DB는 **설계서 03**의 drizzle-orm 스키마 그대로 사용
|
|
- UI는 **설계서 03**의 컴포넌트 Props/상태 명세 준수
|
|
- 팝업은 **설계서 03**의 HTML/CSS/애니메이션 수학 공식 준수
|
|
|
|
## 완료 조건
|
|
- 모든 태스크 completed
|
|
- `npm run typecheck` 통과
|
|
- `npm run test` 통과
|
|
- CLAUDE.md "현재 상태" 업데이트됨
|
|
- Memory `project_status.md` 갱신됨 (Phase 완료 내역, 기술 결정, 다음 작업)
|