feat: add HA infrastructure, CI/CD pipeline, and Redis/Celery hardening

- Add docker-compose.ha.yml for PostgreSQL/Redis HA setup with Patroni and Sentinel
- Add docker-compose.prod.yml for production deployment
- Add GitHub Actions CI/CD workflow (build.yml)
- Add install.cmd for Windows one-click setup
- Harden Redis connection with retry logic and health checks
- Add Celery HA config with Redis Sentinel support
- Add HA operations runbook
- Update README with deployment and architecture docs
- Move landing page spec to .claude/specs/design/
- Update memory intelligence PRD
This commit is contained in:
zhangtuo
2026-02-28 14:57:02 +08:00
parent 9cdff18336
commit c82d408ea1
14 changed files with 1301 additions and 24 deletions

View File

@@ -3,9 +3,15 @@
## 概述
**功能名称**: 记忆智能 (Memory Intelligence)
**版本**: v1.0
**版本**: v1.1
**优先级**: Phase 2.5 (体验增强后、社区化前)
**目标用户**: 家长 + 3-8 岁儿童
**更新记录**: 2025-01-22 合并 `backend/docs/memory_system_prd.md`
### 核心愿景
将当前的"数据存储"升级为有温度的**"情感连接系统"**。
我们不只是在记住数据,而是在**维护孩子与故事世界的关系**。让每一个故事不再是孤立的碎片,而是构建孩子专属"故事宇宙"的砖瓦。
### 核心价值
@@ -14,10 +20,39 @@
- **延续故事**: 角色、世界观跨故事延续
- **主动关怀**: 适时推送个性化故事建议
### 产品痛点与解决方案
| 用户角色 | 核心痛点 | 解决方案 | 预期价值 |
|---------|---------|---------|---------|
| **孩子** | "上次的小兔子怎么不认识我了?" 故事之间缺乏连续性。 | **角色一致性与记忆注入** 故事开头主动提及往事,角色性格延续。 | 建立情感依恋,提升沉浸感。 |
| **家长** | "这App除了生成故事还能干嘛" 无法感知产品的长期教育价值。 | **显性化成长轨迹** 词汇量统计、主题变化、成就徽章可视化。 | 提高付费意愿,提供社交货币。 |
| **平台** | 用户用完即走,缺乏留存壁垒。 | **沉没成本与情感资产** 积累的记忆越多,越舍不得离开。 | 提升长期留存率 (LTV)。 |
---
## 一、功能模块
### 1.0 记忆分层模型
#### 层级 1: 核心档案 (Identity Layer)
*性质:永久、静态、显性*
- **数据**: 姓名、年龄、性别
- **输入**: 家长在 Onboarding 阶段手动输入
- **作用**: 决定故事的基础适龄性和称呼
#### 层级 2: 故事宇宙 (Universe Layer)
*性质:长期、动态积累、半显性*
- **主角设定**: 姓名、性格特征(勇敢/害羞)、外貌特征(戴眼镜/卷发)
- **常驻配角**: 从随机故事中涌现出的固定伙伴(如"爱吃胡萝卜的松鼠奇奇"
- **世界观**: 故事发生的背景(魔法森林、未来城市、海底世界)
- **成就系统**: 孩子获得的虚拟奖励(勇气勋章、小小探险家)
#### 层级 3: 工作记忆 (Working Memory)
*性质:短期、自动衰减、隐性*
- **关键情节**: 最近 3 个故事的结局和核心冲突
- **情感标记**: 孩子对特定内容的反应(根据"重播"、"跳过"推断)
- **新学词汇**: 故事中出现的高级词汇
### 1.1 孩子档案系统 (Child Profile)
| 字段 | 类型 | 说明 |
@@ -244,7 +279,13 @@ CREATE TABLE memory_items (
请创作一个适合{age}岁儿童的故事,约{word_count}字。
```
### 5.2 成就提取 Prompt
### 5.2 智能开场白 (Memory Injection)
在生成新故事时Prompt 必须包含一段"记忆唤醒"指令:
- **示例**: "小明,还记得上周我们帮小松鼠找回了松果吗?今天,小松鼠带来了一位新朋友..."
- **策略**: 提取权重最高的 Top 3 记忆注入 Prompt
### 5.3 成就提取 Prompt
```
请分析以下故事,提取主角获得的成长/成就:
@@ -412,7 +453,43 @@ def check_push_notifications():
---
## 八、里程碑
## 八、关键功能特性
### 8.1 成长时间轴 (Growth Timeline)
一个可视化的 H5 页面或 App 模块,以时间轴形式展示里程碑:
- 🌟 **初次相遇**: 创建角色的第一天
- 📖 **阅读打卡**: 累计阅读 10/50/100 本
- 🏅 **获得成就**: 获得"诚实勋章"
- 🧠 **能力解锁**: 第一次阅读"科幻"题材
### 8.2 成就仪式感 (Achievement Ceremony)
- **触发**: 故事生成并分析后,如果获得新成就
- **表现**: 弹窗动画 + 音效 + "恭喜获得 [勇气] 徽章"
- **分享**: 允许生成带二维码的成就海报
---
## 九、记忆类型扩展
| 类型 Key | 描述 | 来源 | 过期策略 |
|---------|------|------|---------|
| `recent_story` | 最近读过的故事梗概 | 阅读事件 | 30天衰减 |
| `favorite_character` | 孩子喜欢的角色 | 重播/高评分 | 长期有效 |
| `scary_element` | 孩子害怕/不喜欢的元素 | 跳过/负反馈 | 长期有效 (避雷) |
| `vocabulary_growth` | 新掌握的词汇 | 故事分析 | 90天衰减 |
| `emotional_highlight` | 高光时刻 (如: 特别开心的情节) | 互动数据 | 60天衰减 |
---
## 十、里程碑
### Phase 1: 基础建设 (v0.3.0)
- [x] 数据库 `MemoryItem` 表 (已存在)
- [ ] 扩展 `MemoryItem` 类型字段,支持更多维度
- [ ] 优化 `_build_memory_context`,支持更自然的 Prompt 注入
- [ ] 前端:简单的"近期回忆"展示列表
### M1: 孩子档案基础
- [ ] 数据库模型
@@ -436,9 +513,18 @@ def check_push_notifications():
- [ ] 偏好学习算法
- [ ] 推荐优化
### Phase 2: 可视化与成就 (v0.4.0)
- [ ] 实现"成就提取器" (Achievement Extractor) 的闭环通知
- [ ] 前端:开发"我的成就"和"成长时间轴"页面
- [ ] 增加故事开场白的动态生成逻辑
### Phase 3: 深度智能 (v0.5.0+)
- [ ] 引入向量数据库,实现基于语义的记忆检索 (不仅是时间最近)
- [ ] 情感分析模型:分析用户行为推断情感倾向
---
## 、风险与应对
## 十一、风险与应对
| 风险 | 影响 | 应对 |
|------|------|------|
@@ -448,7 +534,7 @@ def check_push_notifications():
---
## 十、相关文档
## 十、相关文档
- [孩子档案数据模型](./CHILD-PROFILE-MODEL.md)
- [故事宇宙记忆结构](./STORY-UNIVERSE-MODEL.md)