Files
life-echo/README.md

257 lines
8.5 KiB
Markdown
Raw Normal View History

# 岁月时书 (Life Echo)
2026-01-07 11:56:19 +08:00
> 一个基于实时 WebSocket 长连接的智能语音对话回忆录生成系统
2026-01-07 11:56:19 +08:00
## 📖 项目简介
**岁月时书 (Life Echo)** 是一个创新的回忆录生成平台,通过 AI 智能对话引导用户回顾人生历程,并将口语对话自动整理为结构化的回忆录章节,最终生成精美的 PDF 电子书。
refactor(api,expo): 多智能体与会话收敛、回忆录兼容层移除、后端测试集大幅删减 - 对齐「多智能体收敛」与「回忆录 stories-first / markdown-first」方向:收紧运行时契约、 删除过渡兼容路径与双轨逻辑,并同步更新客户端与文档。 - Chat:以 ChatOrchestrator 为实时编排入口;删除独立 conversation_agent,精简 prompts。 - Memoir:删除 memory_agent;MemoirOrchestrator、classification / story_route 与 prompts 收敛到 prepare_batches + run_story_pipeline_for_category_batch 主链路。 - 将 agents 侧 processor 迁入 feature 层为 background_runner,并移除 features 下重复/过时 processor 封装。 - 新增 history_store,强化「conversation_messages 为 DB 真源、Redis 为缓存」模型。 - 调整 models、repo、service、session_history;精简 WS message_types,重构 pipeline 与 router。 - 移除章节占位、整章再生等旧路径;章节列表与封面逻辑要求 story 关联;收紧 cover 资格与 enqueue。 - helpers、repo、service、router、reading_segment_materialize、story_pipeline_sync、pdf_service 等按 canonical markdown / cover_asset_id 收缩;删除 memoir_images/provider 等冗余。 - tasks:memoir_tasks、chapter_cover_tasks 等大幅瘦身;story_image_tasks 等与当前图片任务对齐。 - core:config、logging、redis、task_tracker 小幅调整。 - auth / user / payment / quota:路由或服务侧删减过时接口或逻辑(如 payment router 行数减少)。 - pyproject.toml、development.sh、.env.example / .env.production、README 等同步说明或变量。 - Alembic 0001_initial_schema 微调(与当前 schema 叙事一致的小改动)。 - 回忆录:types / mappers / api、章节页与 memoir 页与后端契约对齐;markdown-renderer 调整。 - 语音:删除 voice/player,voice-segment-store 相应精简。 - api/tests:删除 conftest 及绝大部分既有测试文件(websocket_baseline、conversation、memoir 图片、PDF、SMS 等),属有意收缩/待按 backend-test-system 重建的信号。 - docs:新增多智能体收敛与移除兼容层计划摘要;更新 story-first 设计、backend-test-system、 multi-agent-refactor-plan、实施总结等。 BREAKING CHANGE: 后端对外契约、回忆录章节字段与若干路由/任务行为已变更;大量 API 测试被移除, CI 若依赖这些用例需按新策略补测或调整流水线。
2026-03-22 16:45:57 +08:00
后端侧:会话轮次以 DB `conversation_messages` 为真源、Redis 为缓存;实时对话编排统一走 `ChatOrchestrator`;图像任务为 `generate_story_image`(正文)与 `generate_chapter_cover`(章节封面)。详见 [api/README.md](api/README.md)。
### 核心功能
- 🎙️ **实时语音对话** - 基于 WebSocket 的实时双向语音交互
- 🤖 **智能访谈引导** - AI Agent 根据传记结构动态引导用户讲述人生故事
- 📝 **自动内容整理** - 将口语对话自动整理为优雅的书面语章节
- 📚 **结构化回忆录** - 基于传记结构自动组织章节内容
- 📄 **PDF 导出** - 生成精美的回忆录 PDF 文档
- 💾 **本地数据存储** - Android 端使用 Room 数据库实现离线数据管理
## 🏗️ 项目结构
2026-01-07 11:56:19 +08:00
```
life-echo/
├── api/ # 后端服务FastAPI
│ ├── agents/ # LangChain Agent对话引导、记忆整理
│ ├── database/ # 数据库模型和连接PostgreSQL
│ ├── routers/ # API 路由REST + WebSocket
│ ├── services/ # 业务服务ASR、TTS、PDF、LLM
│ ├── tasks/ # Celery 后台任务
│ ├── docs/ # API 详细文档
│ ├── main.py # FastAPI 应用入口
│ └── README.md # API 服务文档
├── app-android/ # Android 应用
2026-01-07 11:56:19 +08:00
│ └── app/
│ └── src/main/java/com/huaga/life_echo/
│ ├── data/ # 数据层Room、Repository
│ ├── network/ # 网络层WebSocket、REST API
│ ├── ui/ # UI 层Jetpack Compose
│ ├── feature/ # 功能模块(语音录制等)
│ └── navigation/ # 导航管理
│ └── README.md # Android 应用文档
└── docs/ # 项目文档
├── 开发计划.md # 开发计划与任务分解
├── 数据库设计.md # 数据库设计文档
├── AGENT.md # Agent 设计文档
└── v1_features_*.md # 功能需求文档
2026-01-07 11:56:19 +08:00
```
## 🚀 快速开始
### 前置要求
- **后端开发**
- Python 3.10+
- Docker & Docker Compose用于 PostgreSQL、Redis
- LLM API KeyDeepSeek 或兼容 OpenAI 的服务)
2026-01-07 11:56:19 +08:00
- **Android 开发**
- Android Studio Hedgehog | 2023.1.1+
- JDK 11+
- Android SDKAPI 24+
### 后端服务启动
详细步骤请参考 [api/README.md](api/README.md)
2026-01-07 11:56:19 +08:00
```bash
# 1. 进入 API 目录
2026-01-07 11:56:19 +08:00
cd api
# 2. 安装依赖
uv sync --dev
2026-01-07 11:56:19 +08:00
# 3. 配置环境变量(创建 .env 文件)
# 参考 api/README.md 中的环境变量配置说明
2026-01-07 11:56:19 +08:00
# 4. 启动 PostgreSQL 和 Redis
docker-compose -f docker-compose.dev.yml up -d
# 5. 数据库迁移
# uv run alembic upgrade head
# 6. 启动 FastAPI 服务
uv run uvicorn main:app --reload --host 0.0.0.0 --port 8000
# 7. 启动 Celery Worker另一个终端
uv run celery -A tasks.celery_app worker --loglevel=info --pool=solo
2026-01-07 11:56:19 +08:00
```
数据库 schema 迁移的正式标准是 Alembic当前仓库已引入脚手架`api/migrations/*.sql` 保留为历史/一次性 SQL 脚本,详情见 `api/README.md`
### 后端开发工具链
后端开发环境通过 `uv sync --dev` 安装开发工具,当前约定如下:
- `ruff`:负责 `lint` + `format`
- `pytest`:统一测试入口
- `pytest-asyncio`:负责 `async def` 测试和异步 fixture
- `pytest-cov`:负责覆盖率统计
- `pyright`:负责类型检查,但不替代测试和 `lint`
常用命令详见 `api/README.md`
### Android 应用启动
详细步骤请参考 [app-android/README.md](app-android/README.md)
2026-01-07 11:56:19 +08:00
```bash
# 1. 使用 Android Studio 打开项目
# File -> Open -> 选择 app-android 目录
# 2. 同步 Gradle 依赖
# Android Studio 会自动同步,或点击 Sync Now
# 3. 配置 API 地址(开发环境)
# 编辑 app/src/main/java/com/huaga/life_echo/config/AppConfig.kt
# 修改 BASE_URL 和 WS_BASE_URL
# 4. 运行应用
# 点击 Run 按钮或使用快捷键 Shift+F10
2026-01-07 11:56:19 +08:00
```
## 🛠️ 技术栈
### 后端技术栈
| 技术 | 版本 | 用途 |
|------|------|------|
| FastAPI | 0.115.0 | Web 框架REST API 和 WebSocket |
| LangChain | 0.3.7 | AI Agent 框架(对话引导、内容整理) |
| PostgreSQL | 17 | 关系型数据库 |
| SQLAlchemy + Alembic | 2.0.36 / 1.18+ | ORM 与数据库 schema migration |
| Redis | 7 | 缓存和会话存储 |
| Celery | 5.3 | 异步任务队列 |
| OpenAI API | - | ASR语音识别、TTS语音合成 |
| DeepSeek API | - | LLM大语言模型 |
| ReportLab + WeasyPrint | - | PDF 生成 |
### Android 技术栈
| 技术 | 版本 | 用途 |
|------|------|------|
| Kotlin | 1.9+ | 编程语言 |
| Jetpack Compose | - | 声明式 UI 框架 |
| Ktor | - | HTTP 客户端和 WebSocket |
| Room | - | 本地数据库SQLite |
| Coroutines + Flow | - | 异步编程和响应式数据流 |
| DataStore | - | 键值对存储Token 管理) |
| Coil | - | 图片加载库 |
2026-01-07 11:56:19 +08:00
## 📚 文档导航
2026-01-07 11:56:19 +08:00
### 项目文档
2026-01-07 11:56:19 +08:00
- [开发计划](docs/开发计划.md) - 项目开发计划与任务分解
- [数据库设计](docs/数据库设计.md) - 数据库表结构设计
- [Agent 设计](docs/AGENT.md) - AI Agent 工作流程设计
2026-01-07 11:56:19 +08:00
### API 文档
2026-01-07 11:56:19 +08:00
- [API README](api/README.md) - API 服务完整文档
- [本地开发环境配置](api/docs/本地开发环境配置.md) - 开发环境搭建指南
- [WebSocket 快速测试指南](api/docs/WebSocket快速测试指南.md) - WebSocket 测试文档
- [WebSocket 测试文档](api/docs/WebSocket测试文档.md) - WebSocket 详细测试说明
2026-01-07 11:56:19 +08:00
### Android 文档
- [Android README](app-android/README.md) - Android 应用完整文档
## 🔐 认证系统
系统使用 JWTJSON Web Token进行认证采用访问令牌Access Token+ 刷新令牌Refresh Token机制
- **访问令牌**:有效期 2 小时,用于 API 请求认证
- **刷新令牌**:有效期 30 天,用于刷新访问令牌
详细认证流程请参考 [api/README.md#认证系统](api/README.md#认证系统)
## 🌟 功能特性
### 已实现功能
- ✅ 用户注册与登录(手机号 + 密码)
- ✅ JWT 认证系统(访问令牌 + 刷新令牌)
- ✅ 实时 WebSocket 语音对话
- ✅ AI 智能对话引导(基于传记结构)
- ✅ 语音识别ASR和语音合成TTS
- ✅ 对话内容自动整理为章节
- ✅ 回忆录章节管理
2026-01-07 11:56:19 +08:00
- ✅ PDF 导出功能
- ✅ Android 本地数据存储Room
- ✅ 离线数据同步
- ✅ 用户套餐与订单管理
- ✅ 常见问题FAQ和反馈系统
### 开发中功能
- 🔄 更多传记结构模板
- 🔄 图片上传与管理
- 🔄 章节编辑功能
- 🔄 多语言支持
## 📝 开发指南
2026-01-07 11:56:19 +08:00
### 添加新的 API 路由
2026-01-07 11:56:19 +08:00
1.`api/routers/` 目录创建新的路由文件
2. 定义路由函数
3.`api/main.py` 中注册路由
2026-01-07 11:56:19 +08:00
### 添加新的数据库模型
2026-01-07 11:56:19 +08:00
1.`api/database/models.py` 中定义模型类
2. 继承 `Base`
3. 运行数据库迁移
2026-01-07 11:56:19 +08:00
### 添加新的 Android 功能
2026-01-07 11:56:19 +08:00
1.`app-android/app/src/main/java/com/huaga/life_echo/` 下创建功能模块
2. 遵循 MVVM 架构模式
3. 使用 Compose 构建 UI
## 🔒 安全注意事项
1. **环境变量安全**:确保 `.env` 文件不被提交到版本控制
2. **SECRET_KEY 安全**:生产环境必须使用强随机字符串
3. **CORS 配置**:生产环境应限制为特定域名
4. **API Key 安全**:妥善保管 LLM API Key
5. **密码安全**:密码使用 bcrypt 哈希存储
详细安全建议请参考 [api/README.md#安全注意事项](api/README.md#安全注意事项)
## 🤝 贡献指南
1. Fork 本项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
2026-01-07 11:56:19 +08:00
MIT License
## 📮 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送反馈(应用内反馈功能)
---
**岁月时书** - 让每一段人生故事都被温柔记录 ✨