- 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>
MeetNote API
FastAPI 后端,端口 4491。
启动
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 /healthPOST /api/upload-url— 申请 presigned URL 创建会议POST /api/upload-complete— 通知后端上传完成,触发后台处理GET /api/meetings— 会议列表GET /api/meetings/{id}— 单个会议GET /api/meetings/{id}/transcriptGET /api/meetings/{id}/summaryDELETE /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 真实总结