Phase 1 foundation: Prisma + /api/meetings CRUD (#1)

* feat(phase-1): Prisma 연동 + 회의록 CRUD API

Phase 1 foundation (ROADMAP #1~#3):

- src/lib/db.ts: Prisma 클라이언트 싱글톤 (dev hot-reload 대응)
- Meeting 스키마 확장: attendees/tags (String[]), template/depth/
  summaryMode/customPrompt (향후 참조 복원용), createdAt 인덱스
- 첫 마이그레이션 `20260421104750_init` 생성
- /api/meetings (GET 목록 + POST 생성)
  - q 파라미터로 제목/transcript/markdown 부분 검색
  - limit (max 100), offset 페이지네이션
  - attendees/tags 배열 타입 정규화
- /api/meetings/[id] (GET/PUT/DELETE)
  - PUT은 markdownMinutes/title/attendees/tags만 편집 허용
  - 존재하지 않는 id에 대해 404
- docker-compose.yml: tools 프로필에 migrate 서비스 추가
  (app 컨테이너 bloat 없이 마이그레이션 실행)
- Prisma mock 기반 API 테스트 14개 신규 (총 71 tests)

* docs: migrate 실행 단계 추가, ROADMAP의 #1/#2 완료 체크

* docs: PR 본문 드래프트 추가
This commit is contained in:
2026-04-28 16:38:09 +09:00
committed by GitHub
parent 78e0caac0b
commit cf6613bb94
11 changed files with 615 additions and 15 deletions
+11 -3
View File
@@ -57,7 +57,7 @@
| STT (실시간) | Web Speech API — Chrome 내장, 무료 |
| AI 요약 | Gemini 2.5 Flash Lite — 무료 등급 15 RPM / 1000 RPD |
| DB | PostgreSQL 16 + Prisma 7 (스키마 준비, Phase 1에서 활용 예정) |
| 테스트 | Vitest (57 tests, jsdom) |
| 테스트 | Vitest (71 tests, jsdom) |
| 배포 | Docker Compose (app + db + test profile) |
---
@@ -75,7 +75,15 @@ cp .env.example .env
`.env`에서 **`GEMINI_API_KEY`** 설정 ([Google AI Studio](https://aistudio.google.com/apikey)에서 무료 발급).
> 키가 없어도 "단순 변환" 모드는 정상 동작.
### 2. 기동
### 2. DB 마이그레이션 (최초 1회 + 스키마 변경 시)
```bash
docker compose --profile tools run --rm migrate
```
이 명령은 `db` 컨테이너를 자동 기동하고 `prisma migrate deploy`로 테이블을 생성합니다.
### 3. 기동
```bash
docker compose up -d --build
@@ -148,7 +156,7 @@ src/
│ ├── upload/AudioUploader.tsx
│ ├── recorder/LiveRecorder.tsx # 좌우 분할 뷰
│ └── minutes/MinutesViewer.tsx
└── __tests__/ # 57 tests
└── __tests__/ # 71 tests
docs/
├── ROADMAP.md # 개발 로드맵 (Phase 0~4)