木棉盛夏 — 产品说明与路线图
品牌:木棉盛夏(主软件)· 木棉书简(回忆录成书)· 木棉家忆(家族树)
基于代码库全局检索整理(页面路由、API、SaaS 进度、前后端实现)。
与SAAS_IMPLEMENTATION.md互补:该文档偏落地 checklist;本文档偏产品全景、功能说明与方向。
文档目录
1. 产品定位与成熟度
木棉盛夏 是一款基于 Web 的 AI 应用,两大产品模块:
- 木棉书简:多 Agent 引导口述,生成可珍藏的人生书简(章节归档)
- 木棉家忆:口述 / 文本 → 四表抽取 → 世系表 → 塔状家族树可视化
- 多模态输入:实时语音 ASR、语音文件、图片 OCR、TTS 朗读
- 账号体系:手机号注册登录、家族空间、数据导出与注销
技术栈摘要
| 层级 | 技术 |
|---|---|
| 后端 | Python 3.11、FastAPI、Uvicorn、SQLAlchemy(raw SQL 为主) |
| 数据库 | PostgreSQL |
| 认证 | JWT + PBKDF2 密码哈希 |
| 前端 | 静态 HTML / CSS / JS(无构建步骤) |
| AI | 火山方舟(对话/TTS/ASR)、DeepSeek(家族树抽取)、MediaKit OCR |
| 部署 | Docker Compose、Render Blueprint、本机 + ngrok 分享 |
当前成熟度:可演示的 MVP / 内测原型(核心链路能跑,距离公开 SaaS 仍有明显缺口)。
粗估完成度约 70%~80%(功能面较全,工程化、安全收口、商业化未齐)。
2. 离「可上线产品」还差什么
P0 — 上线前必须补(安全 + 稳定)
| 缺口 | 现状 | 为何重要 |
|---|---|---|
| API 安全收口 | 主页 /api/chat、TTS、OCR、ASR 未强制登录;部分访谈/归档接口鉴权偏弱;/api/admin/prompts 无管理员校验 |
公网(含 ngrok)暴露后可能被滥用,产生 AI 费用与数据风险 |
| 忘记密码 / 短信验证 | 仅有 CLI scripts/reset_user_password.py,无用户自助流程 |
普通用户无法自助找回密码 |
| 对象存储(A7) | blob_storage 仅 local 实现;S3/OSS 为 NotImplementedError |
云部署重启后上传文件易丢失 |
| 自动化测试(D1/D2) | 无 tests/ 目录;CI 仅 import/compile |
改代码易回归;族谱流水线无自动化保障 |
| 监控告警(C4) | 仅标准 logging,无 Sentry/告警 | 线上故障难以及时发现 |
相关文件:backend/main.py、backend/routes/interview.py、backend/routes/archive.py、backend/services/blob_storage.py、.github/workflows/ci.yml
P1 — 产品体验收口(从「能用」到「好用」)
| 缺口 | 对应 SAAS 项 | 说明 |
|---|---|---|
主页「家族树录入」与 /family-tree 四表流程割裂 |
B3 | 用户不知该用主页还是家族树页 |
| 塔状树两套实现 | B4 | 服务端 step3/tower + 前端 tower-tree.html iframe 并存 |
| 新用户 onboarding | B5 | 注册后缺少引导(创建家族、第一步做什么) |
| 手机端体验 | — | 已有基础响应式;家族树多步骤在大屏更合适 |
| 邀请家庭成员 | — | 库表有 memberships,无邀请 API;注销时多成员家族不可删 |
P2 — 商业化与运营(若要对外收费)
| 缺口 | 说明 |
|---|---|
| 落地页 + 定价(C3) | 无产品介绍页、无套餐说明 |
| 支付 | 无 Stripe/微信/支付宝;用户协议写「后续付费」 |
| Staging 环境(D3) | 无预发环境,改完直接上生产风险大 |
| Redis 分布式限流(A8) | 多实例部署时内存限流失效 |
P3 — 可延后但长期有价值
- 微信登录(
users.wechat_openid已在 schema 预留) - 邮件通知、审计日志、备份与灾难恢复文档
- PWA / 原生 App
- 国际化、API 版本化(
/v1) - 关系矩阵 UI(后端 API 已有,前端未作为主流程)
SaaS 清单对照(摘自 SAAS_IMPLEMENTATION.md)
已完成:A1–A6、B1–B2、C1–C2
未完成:A7、A8、B3–B5、C3–C4、D1–D3
3. 功能说明(功能 / 实现 / 特点)
3.1 账号与家族空间
| 功能 | 如何实现 | 特点 |
|---|---|---|
| 注册 / 登录 | 前端 login.html + auth.js;后端 POST /api/auth/register、/login;JWT + PBKDF2(user_service.py、security.py) |
手机号 + 密码;注册须勾选协议;Token 存 localStorage |
| 当前用户 | GET /api/auth/me;deps.py 解析 Bearer / Cookie |
登录后绑定 user_id、family_id、person_id |
| 数据导出 | GET /api/auth/export + account_data.py;页面 /account |
JSON 副本:会话、消息、族谱、草稿等(不含密码) |
| 账号注销 | POST /api/auth/delete-account |
须密码 + 输入 DELETE;家族有多成员时拒绝删除 |
| 演示账号 | scripts/seed_demo_account.py |
13800000000 / demo123456,适合内测 |
页面路由:/login、/signin(重定向)、/account(见 backend/frontend_pages.py)
3.2 人生访谈(回忆录)
| 功能 | 如何实现 | 特点 |
|---|---|---|
| 访谈对话 | 主页 / + app.js;POST /api/session/start;POST /api/conversation/message |
「人生访谈」与「家族树录入」两种 session 模式 |
| 多 Agent 编排 | orchestrator.py + agent_1~agent_5 |
Agent1 引导提问;Agent4 生成初稿;Agent5 修订 |
| 会话持久化 | PostgreSQL sessions、conversation_messages |
生产强制 DB;开发可警告后回退 |
| 结束并生成初稿 | POST /api/interview/{id}/end |
写入 memoir_drafts |
| 回忆录阅读 | /memoir + archive.py |
章节树、阅读、修订、确认归档 |
| 提示词管理 | /admin/prompts + /api/admin/prompts* |
在线改 Agent 提示词(当前无鉴权,仅适合内网) |
主要 API 模块:session_api.py、conversation.py、interview.py
3.3 语音 / 图片 / 通用聊天
| 功能 | 如何实现 | 特点 |
|---|---|---|
| 实时语音输入 | WebSocket /ws/asr + 火山 ASR |
主页麦克风录音转文字 |
| 语音文件识别 | POST /api/auc/file |
上传音频转文字 |
| AI 朗读 | POST /api/tts |
火山 TTS 返回 MP3 |
| 图片 OCR | POST /api/ocr/image + MediaKit OCR |
本地需 PUBLIC_BASE_URL(如 ngrok)供公网拉图 |
| 豆包式闲聊 | POST /api/chat、/api/chat/stream(火山方舟) |
与访谈 Agent 独立;当前未强制登录 |
实现文件:backend/main.py、backend/ws_client.py、backend/services/ocr_image.py
3.4 家族树(核心差异化)
| 功能 | 如何实现 | 特点 |
|---|---|---|
| 口述录入(主页) | 主页「家族树录入」+ POST /api/familytree/generate-from-session/{session_id} |
边聊边录,适合快速起步 |
| 四表专业流程 | /family-tree + familytree-test.js |
① DeepSeek 抽四表 → ② 世系表 HTML → ③ 塔状树 |
| 四表抽取 / 校验 | POST /api/familytree/step1/* + family_marriage_extract.py |
人物 / 婚姻 / 父子 / 兄弟姐妹 |
| 世系表渲染 | POST /api/familytree/step2/render + family_tree_pipeline/ |
校验、布局、HTML 世系图 |
| 塔状家族树 | 前端 tower-tree.html(iframe ?embed=1)+ 可选 step3/tower |
过继、离异虚线、防重叠;两套实现并存 |
| 草稿保存 | GET/POST /api/familytree/draft + family_tree_store.py |
四表 JSON 持久化 DB + 本地 cache |
| 关系矩阵(高级) | POST /api/familytree/matrix/*、families/* |
后端完整;前端未作为主流程 |
正式入口:/family-tree(旧 /familytree-test 307 重定向)
3.5 合规与分享
| 功能 | 如何实现 | 特点 |
|---|---|---|
| 隐私政策 / 用户协议 | /privacy、/terms |
注册须勾选 |
| 账号与数据 | /account |
导出 + 注销 |
| 本机 + ngrok 分享 | start.bat、bootstrap-ngrok.bat、show-share-link.bat |
朋友浏览器访问;宿主须保持 start 运行 |
| 手机 / 电脑 | 响应式 Web + 手机侧栏菜单(☰) | 无独立 App;同一 https 链接多端可用 |
操作指南:分享给朋友-ngrok一步步.md
3.6 基础设施(开发者向)
| 功能 | 如何实现 | 特点 |
|---|---|---|
| 健康检查 | GET /api/health |
DB、ARK、语音、OCR、Agent 引擎状态 |
| 生产校验 | startup_checks.py |
PRODUCTION=1 时强制 DB、JWT 等 |
| 限流 | middleware/rate_limit.py |
登录 / 注册 / 聊天;单实例内存 |
| 文件存储 | services/blob_storage.py |
local 可用;S3/OSS 预留未实现 |
| 部署 | Dockerfile、docker-compose.yml、render.yaml |
容器化与 Render Blueprint |
| CI | .github/workflows/ci.yml |
基础检查,无集成测试 |
3.7 用户路径简图
flowchart LR
subgraph pages [页面]
Home["/ 主页"]
Memoir["/memoir"]
FT["/family-tree"]
Tower["/tower-tree"]
Login["/login"]
Account["/account"]
end
subgraph apis [主要 API]
Chat["/api/chat*"]
Session["/api/session/*"]
Conv["/api/conversation/*"]
FTAPI["/api/familytree/*"]
Auth["/api/auth/*"]
Archive["/api/archive/*"]
end
Home --> Session
Home --> Conv
Home --> Chat
Home --> FTAPI
Memoir --> Archive
FT --> FTAPI
FT --> Tower
Login --> Auth
Account --> Auth
4. 未来发展方向
4.1 从「个人工具」到「家族协作平台」
- 家庭成员邀请(链接 / 扫码加入同一
family_id) - 角色权限(管理员 / 录入员 / 只读)
- 多人共同补全族谱(冲突合并、变更历史)
- 讲述者与人物档案绑定(
persons与访谈 speaker 深度关联)
定位升级:「全家一起补回忆录 + 修族谱」,而非单人记事本。
4.2 AI 能力产品化
- 口述 → 结构化族谱 作为核心卖点(四表 + 世系 + 塔状树一条龙)
- 智能追问(Agent 按缺失关系主动提问)
- OCR 老照片 / 族谱页 批量导入
- 语音优先(面向长辈:大字、少打字、纯语音录入)
差异化:中文复杂亲属关系(过继、再婚、同父异母、相好等)的规则与可视化。
4.3 商业化路径
| 阶段 | 内容 |
|---|---|
| 免费内测 | ngrok / 小云部署;限制人数与 AI 调用量 |
| 基础版 | 月费:访谈条数 + 族谱人数上限 |
| 高级版 | 导出印刷 PDF、大容量存储、多家庭成员、优先模型 |
| B 端 | 地方志馆、家谱公司、养老机构白标 |
需补:落地页(C3)+ 支付 + 用量计费 + 套餐限制中间件。
4.4 工程成熟度演进
flowchart TB
subgraph now [当前 MVP]
A1[本机 / ngrok]
A2[单实例]
A3[local 存储]
end
subgraph next [约 6 个月]
B1[云部署 24h]
B2[S3 / OSS]
B3[测试 + Staging]
B4[短信登录 / 找回密码]
end
subgraph later [约 12 个月+]
C1[家庭协作]
C2[付费套餐]
C3[微信生态]
C4[PWA / 小程序]
end
now --> next --> later
- 短期:P0(安全、存储、测试、监控)+ 流程统一(B3–B5)
- 中期:固定域名云部署、短信登录、家庭邀请、落地页
- 长期:协作编辑、印刷导出、微信生态、行业合作
4.5 内容与生态
- 模板库:章节模板、族谱样例(如李氏演示数据)
- 导出形态:PDF 回忆录、可印刷族谱图、GEDCOM 等交换格式
- 开放 API:供家谱软件、档案馆对接
5. 总结对照表
| 维度 | 现状 | 产品化目标 |
|---|---|---|
| 核心功能 | 访谈 + 族谱 + 语音/OCR 已通 | 统一流程,减少双轨实现 |
| 用户体系 | 手机密码 + 单家族 | 短信/微信 + 邀请协作 |
| 部署 | 本机 / Docker / Render 骨架 | 24h 云端 + 对象存储 |
| 安全 | 部分 API 未鉴权 | 全站强制登录 + 管理后台保护 |
| 合规 | 隐私/协议、导出/注销已有 | 完善告知与审计 |
| 商业 | 无 | 落地页 + 套餐 + 支付 |
| 质量 | 几乎无自动化测试 | CI 集成测试 + 李氏样例回归 |
| 分享 | ngrok 本机隧道 | 固定域名 SaaS |
6. 建议落地顺序
若目标为 「可给亲友长期使用的内测版」:
- P0 安全收口:chat/TTS/OCR/ASR 与 admin 鉴权
- B3 + B4:主页与
/family-tree引导统一;塔状树只保留一套 - 云部署 + 固定域名:摆脱「必须开着 start.bat」
- 自助找回密码(或短信验证码登录)
- A7 对象存储 + D1 基础集成测试
若目标为 「对外收费 SaaS」,在以上基础上追加:C3 落地页、支付、用量限制、C4 监控、D3 Staging。
相关文档
| 文档 | 说明 |
|---|---|
SAAS_IMPLEMENTATION.md |
SaaS 分步 checklist(A/B/C/D 阶段) |
分享给朋友-ngrok一步步.md |
本机 + ngrok 零成本分享给朋友 |
README.md |
安装、环境变量、Docker、GitHub |
文档版本:与代码库同步整理。功能以实际代码与路由为准。