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

3.6 KiB
Raw Blame History

MeetNote 项目状态

立项日期2026-04-13 个人项目 / 私有部署 / 自用优先

一句话

手机录音 → 上传网页 → 云端转写 → AI 总结,中英混说精准。对标 Otter.ai / 通义听悟 / 飞书妙记,零订阅成本。

锁定决策Phase 1 规划结论)

架构

  • 手机端录音:用原生录音 AppiOS 语音备忘录 / Android 录音机),不做浏览器录音
  • PWA 角色:上传 + 资料库 + 查看,响应式网页即可
  • 转写:云端 Groq Whisper-large-v3中英混说最佳
  • 总结Poe Claude Sonnet 4.6(已有配额)
  • VPS Claude CodeMVP 不碰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
  • API4491
  • 来源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