- Define architecture: PWA upload + FastAPI backend + Groq Whisper + Poe Claude - Skip browser recording (use phone native), skip real-time, skip calendar (v2) - Use MinIO S3 multipart direct upload with ffmpeg silencedetect chunking - Target: $1/month personal use, 4-5 day MVP Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
84 lines
3.6 KiB
Markdown
84 lines
3.6 KiB
Markdown
# MeetNote 项目状态
|
||
|
||
> 立项日期:2026-04-13
|
||
> 个人项目 / 私有部署 / 自用优先
|
||
|
||
## 一句话
|
||
手机录音 → 上传网页 → 云端转写 → AI 总结,中英混说精准。对标 Otter.ai / 通义听悟 / 飞书妙记,零订阅成本。
|
||
|
||
## 锁定决策(Phase 1 规划结论)
|
||
|
||
### 架构
|
||
- **手机端录音**:用原生录音 App(iOS 语音备忘录 / Android 录音机),不做浏览器录音
|
||
- **PWA 角色**:上传 + 资料库 + 查看,响应式网页即可
|
||
- **转写**:云端 Groq Whisper-large-v3(中英混说最佳)
|
||
- **总结**:Poe Claude Sonnet 4.6(已有配额)
|
||
- **VPS Claude Code**:MVP 不碰,v2 Phase C 作为智能体增强层
|
||
- **日历集成**:MVP 不做,列表按日期分组替代;v2 再加 .ics 订阅
|
||
- **说话人分离**:MVP 不做;v2 再加 pyannoteAI
|
||
|
||
### 技术栈
|
||
- 前端:Next.js 15 + React 19 + Tailwind + shadcn/ui
|
||
- 后端:FastAPI + SQLModel + RQ(内嵌 Redis)
|
||
- 上传:前端直传 MinIO,S3 multipart 断点续传(绕开后端 body 限制)
|
||
- 切片:后端 ffmpeg silencedetect,按静音点切成 <20MB/块,时间戳合并
|
||
- 存储:PostgreSQL (复用 `/opt/postgres/` 新建 meetnote 库) + MinIO (复用 `/opt/minio/` 新建 meetnote bucket)
|
||
- 部署:Coolify 两应用 → `meetnote.kang-kang.com` + `meetnote-api.kang-kang.com`
|
||
|
||
### 设计风格
|
||
- **候选 1(推荐)**:11 Dark Dev SaaS(完整源码,56 UI 组件,Bento 卡片契合四格总结)
|
||
- 候选 2:01 Swiss 极简留白(亮色,无源码要从头撸)
|
||
- 最终决策待 A2 确认
|
||
|
||
## 端口分配
|
||
- 前端:**4490**
|
||
- API:**4491**
|
||
- 来源:init-project 分配(2026-04-13,端口注册中心 3201 当时 503,走文件扫描回退)
|
||
|
||
## 成本估算(个人使用,约 20h 会议/月)
|
||
| 项 | 月成本 |
|
||
|---|---|
|
||
| Groq Whisper API | ~$0.80 |
|
||
| Poe Claude 总结 | $0(已有配额)|
|
||
| VPS 增量 | $0(复用)|
|
||
| **合计** | **≈ $1/月** |
|
||
|
||
对比 Otter Pro $16.99/月、飞书妙记 ¥30/月 → 省 95%+。
|
||
|
||
## MVP 任务清单(Phase A,目标 4-5 天)
|
||
1. A1 项目初始化 ✓ 进行中
|
||
2. A2 设计系统选型(对接风格库 11)
|
||
3. A3 后端骨架(FastAPI + 三张表 + upload-url/upload-complete API)
|
||
4. A4 前端直传 MinIO(分片 + 断点续传 + 进度条)
|
||
5. A5 切片转写 + 总结 worker(ffmpeg → Groq → Poe)
|
||
6. A6 前端列表 + 详情页(按日期分组 + 音频播放器 + 四格总结)
|
||
7. A7 部署上线(Coolify)
|
||
|
||
## v2 候选(Phase B + C,MVP 稳定后)
|
||
- Phase B:日历 .ics 订阅、全文/语义搜索(pgvector)、说话人分离、分享链接
|
||
- Phase C:VPS Claude Code 智能体层(跨会议关联、跨会议待办聚合、自动建 Gitea issue、生成跟进邮件)
|
||
|
||
## 关键约束 & 坑位
|
||
- **Groq Whisper 单次上限 25MB** → 必须切片,按静音点切避免切坏句子
|
||
- **长音频总结** → >2h 走 map-reduce(先分段总结再合成全局)
|
||
- **MinIO CORS** → 必须允许 `meetnote.kang-kang.com` 直传,否则浏览器拦截
|
||
- **iOS m4a** → 1h ≈ 30MB,3h ≈ 90MB,6h ≈ 180MB
|
||
- **前端 @aws-sdk/client-s3** → S3 multipart 分片(5MB/片),断网续传
|
||
|
||
## 环境变量(后端)
|
||
```
|
||
DATABASE_URL=postgresql://...@127.0.0.1:5432/meetnote
|
||
MINIO_ENDPOINT=127.0.0.1:9000
|
||
MINIO_BUCKET=meetnote
|
||
MINIO_ACCESS_KEY=
|
||
MINIO_SECRET_KEY=
|
||
GROQ_API_KEY=
|
||
POE_API_KEY=(复用全局)
|
||
```
|
||
|
||
## 依赖(未完成)
|
||
- [ ] Groq API key 申请(https://console.groq.com)
|
||
- [ ] MinIO 创建 meetnote bucket + CORS 配置
|
||
- [ ] PostgreSQL 创建 meetnote 库
|
||
- [ ] GitHub 远程未配(本机 gh 未装,走 Gitea only)
|