Files
meetnote/.memory/status.md
kang 823e195395 docs: lock MVP plan and design decisions
- 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>
2026-04-13 18:30:28 +08:00

84 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MeetNote 项目状态
> 立项日期2026-04-13
> 个人项目 / 私有部署 / 自用优先
## 一句话
手机录音 → 上传网页 → 云端转写 → AI 总结,中英混说精准。对标 Otter.ai / 通义听悟 / 飞书妙记,零订阅成本。
## 锁定决策Phase 1 规划结论)
### 架构
- **手机端录音**:用原生录音 AppiOS 语音备忘录 / 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
- 上传:前端直传 MinIOS3 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 卡片契合四格总结)
- 候选 201 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 切片转写 + 总结 workerffmpeg → Groq → Poe
6. A6 前端列表 + 详情页(按日期分组 + 音频播放器 + 四格总结)
7. A7 部署上线Coolify
## v2 候选Phase B + CMVP 稳定后)
- Phase B日历 .ics 订阅、全文/语义搜索pgvector、说话人分离、分享链接
- Phase CVPS Claude Code 智能体层(跨会议关联、跨会议待办聚合、自动建 Gitea issue、生成跟进邮件
## 关键约束 & 坑位
- **Groq Whisper 单次上限 25MB** → 必须切片,按静音点切避免切坏句子
- **长音频总结** → >2h 走 map-reduce先分段总结再合成全局
- **MinIO CORS** → 必须允许 `meetnote.kang-kang.com` 直传,否则浏览器拦截
- **iOS m4a** → 1h ≈ 30MB3h ≈ 90MB6h ≈ 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