- 3 tables: Meeting / TranscriptSegment / Summary (with state machine) - Routes: /api/upload-url + /api/upload-complete + meetings CRUD - MinIO presigned PUT for direct browser upload - BackgroundTasks state-machine stub for A5 to flesh out - SQLite for local dev, PostgreSQL+asyncpg for prod - CORS configured for frontend on 4490 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
38 lines
1.0 KiB
Markdown
38 lines
1.0 KiB
Markdown
# MeetNote API
|
||
|
||
FastAPI 后端,端口 4491。
|
||
|
||
## 启动
|
||
|
||
```bash
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install -r requirements.txt
|
||
cp .env.example .env # 填 GROQ_API_KEY / POE_API_KEY
|
||
uvicorn app.main:app --reload --port 4491
|
||
```
|
||
|
||
## 路由
|
||
|
||
- `GET /health`
|
||
- `POST /api/upload-url` — 申请 presigned URL 创建会议
|
||
- `POST /api/upload-complete` — 通知后端上传完成,触发后台处理
|
||
- `GET /api/meetings` — 会议列表
|
||
- `GET /api/meetings/{id}` — 单个会议
|
||
- `GET /api/meetings/{id}/transcript`
|
||
- `GET /api/meetings/{id}/summary`
|
||
- `DELETE /api/meetings/{id}`
|
||
|
||
## 数据库
|
||
- 默认 `sqlite+aiosqlite:///./meetnote.db`(本地开发)
|
||
- 生产改 `DATABASE_URL=postgresql+asyncpg://...`
|
||
|
||
## 状态机
|
||
`pending → uploading → uploaded → splitting → transcribing → summarizing → done | failed`
|
||
|
||
## A3 vs A5
|
||
A3(本提交)只搭好骨架 + state-machine stub。A5 会接上:
|
||
- ffmpeg silencedetect 切片
|
||
- Groq Whisper 真实转写
|
||
- Poe Claude 真实总结
|