startup-plan/技术设计/总待完成清单.md
WangDL 1ac15bcf87 update: mark B20-B22 Docker/Shutdown/Migration as done
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 10:52:32 +08:00

204 lines
11 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.

# 知习 总待完成清单
> 整合后端、iOS、跨项目所有待完成事项按优先级排列。以后以此文件为主。
>
> 更新时间2026-05-17
---
## 优先级说明
| 标记 | 含义 | 时间窗口 |
|------|------|---------|
| 🔴 P0 | 阻断性/前置依赖,现在就应该做 | 本周 |
| 🟠 P1 | 核心功能链路,紧接着做 | 本月 |
| 🟡 P2 | 内测前补齐(体验/稳定性) | TestFlight 前 |
| 🟢 P3 | 内测后迭代 | App Store 前 |
| ⚪ 远期 | 暂缓,待触发条件满足 | 无固定时间 |
---
## 一、后端
> 详细文档:[后端待完成事项清单](./api-server/后端待完成事项清单.md) | 路线图:[后端开发路线图](./api-server/后端开发路线图.md)
### 🔴 P0 — 安全/可靠性底线
| # | 事项 | 说明 | 详见 | 状态 |
|---|------|------|------|------|
| B1 | CI/CD 密钥脱敏 | deploy.yml 明文硬编码 DB 密码/JWT Secret/Swagger 密码 | [潜在问题清单 #4](./潜在问题清单.md) | ✅ |
| B2 | Queue 接 BullMQ + Redis | 当前队列是内存数组 push/shift重启全丢 | [潜在问题清单 #2](./潜在问题清单.md) | ✅ |
| B3 | AI 分析 await 修复 | `ai-analysis.service.ts` fire-and-forget 异常静默丢失 | [潜在问题清单 #10](./潜在问题清单.md) | ✅ |
| B4 | 限流 Guard 全局注册 | 改为 RateLimitGuard + @RateLimit() 装饰器,全局生效 | [潜在问题清单 #21](./潜在问题清单.md) | ✅ |
| B5 | 响应拦截器全局注册 | ResponseInterceptor 已写好但未注册 | [潜在问题清单 #22](./潜在问题清单.md) | ✅ |
| B6 | 分页 DTO 接入 | PaginationDto 已写好但所有 list 接口未使用 | [潜在问题清单 #28](./潜在问题清单.md) | ✅ |
### 🟠 P1 — AI 工作流
| # | 事项 | 说明 | 详见 | 状态 |
|---|------|------|------|------|
| B7 | 费曼解释评估 Workflow | 用户提交费曼解释 → AI 评估 | [AI架构设计](./api-server/AI架构设计.md) | ✅ |
| B8 | 知识导入解析 Workflow | 文档/文本 → AI 切分知识点 → 入库 | [AI架构设计](./api-server/AI架构设计.md) | ✅ |
| B9 | 复习卡片生成 Workflow | AI 自动生成间隔复习卡片 | [AI架构设计](./api-server/AI架构设计.md) | ✅ |
| B10 | 长期趋势分析 Workflow | 7/30 天学习数据 → 趋势报告 | [AI架构设计](./api-server/AI架构设计.md) | ✅ |
| B11 | AI 联调 + Prompt 调优 | DeepSeek/MiniMax 真实调用测试Prompt 迭代 | [后端待完成事项清单](./api-server/后端待完成事项清单.md) | |
### 🟠 P1 — 异步化
| # | 事项 | 说明 | 详见 | 状态 |
|---|------|------|------|------|
| B12 | AI 分析异步化 | 当前同步等待 AI 返回,改 BullMQ 队列 | [Redis缓存设计](./api-server/Redis缓存设计.md) | ✅ |
| B13 | 文档导入异步化 | Worker 消费导入任务AI 切分知识点 | [Redis缓存设计](./api-server/Redis缓存设计.md) | ✅ |
| B14 | 通知推送队列 | BullMQ notification 队列 + APNs | [Redis缓存设计](./api-server/Redis缓存设计.md) | ✅ |
| B15 | Worker 实现 | 3 个 Worker 文件全为空壳,需真正消费队列 | [潜在问题清单 #3](./潜在问题清单.md) | ✅ |
### 🟡 P2 — 存储/文件
| # | 事项 | 说明 | 详见 | 状态 |
|---|------|------|------|------|
| B16 | COS 对象存储接入 | 文件上传/下载/签名 URL | [Redis缓存设计](./api-server/Redis缓存设计.md) | ✅ |
| B17 | 文件上传完整流程 | POST /api/files/upload-url → COS → complete | [后端开发路线图 P5](./api-server/后端开发路线图.md) | ✅ |
| B18 | 文档导入真实解析 | 替换 3 层 setTimeout mock | [潜在问题清单 #24](./潜在问题清单.md) | ✅ |
| B19 | Storage Service 实现 | 当前只有 getUploadPath + healthCheck无真正读写 | [潜在问题清单 #25](./潜在问题清单.md) | ✅ |
### 🟡 P2 — 基础设施补全
| # | 事项 | 说明 | 详见 |
|---|------|------|------|
| B20 | Docker Compose | api-server + MySQL + Redis + Worker + Nginx | [架构总览 #2](./api-server/架构总览.md) | ✅ |
| B21 | enableShutdownHooks | SIGTERM 时优雅关闭,排空连接 | [潜在问题清单 #26](./潜在问题清单.md) | ✅ |
| B22 | Prisma Migration | 创建 migrations/ 目录schema 变更版本管理 | [潜在问题清单 #29](./潜在问题清单.md) | ✅ |
| B27 | 限流改为 Guard/Interceptor | RateLimitService 在 AppModule无法注入 feature module改用全局 Guard/Interceptor 统一限流 | [潜在问题清单 #21](./潜在问题清单.md) | ✅ |
### ⚪ 远期 — 商业化/后台/客服
| # | 事项 | 说明 | 详见 |
|---|------|------|------|
| B23 | Plans + Membership + Subscription | 套餐/权益/Apple IAP 订阅 | [后端开发路线图 P6](./api-server/后端开发路线图.md) |
| B24 | Admin 后台 | Users/Knowledge/Feedback 管理 + AI Cost Dashboard + Audit Logs | [后端开发路线图 P7-P8](./api-server/后端开发路线图.md) |
| B25 | SupportTicket + Dify + HelpCenter | 工单系统 + 智能客服 + 帮助中心 | [后端开发路线图 P9](./api-server/后端开发路线图.md) |
| B26 | AIQuota / UsageLimit | AI 额度控制(免费/Pro 差异化) | [AI架构设计](./api-server/AI架构设计.md) |
---
## 二、iOS
> 详细文档:[缺失项与待补全方向](./ios-projects/缺失项与待补全方向.md)
### 🔴 P0 — 前后端打通
| # | 事项 | 说明 | 详见 | 状态 |
|---|------|------|------|------|
| I1 | 知识库列表接后端 | LibraryHomeView 调 GET /api/knowledge-bases | [缺失项 一](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I2 | 知识点列表接后端 | LibraryDetailPage 调 GET /api/knowledge-items | [缺失项 一](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I3 | 学习会话接后端 | StudyHomeView 调 GET/POST /api/learning-sessions | [缺失项 一](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I4 | 主动回忆接后端 | ActiveRecallView 调 GET/POST /api/active-recalls | [缺失项 一](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I5 | AI 分析结果接后端 | AIAnalysisViewModel 调 POST /api/ai-analysis | [缺失项 一](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I6 | 复习计划接后端 | ReviewCardView 调 GET /api/reviews/due | [缺失项 一](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I7 | 学习活跃接后端 | AnalysisHomeView 调 GET /api/activity/summary | [缺失项 一](./ios-projects/缺失项与待补全方向.md) | ✅ |
### 🟠 P1 — 架构补全
| # | 事项 | 说明 | 详见 | 状态 |
|---|------|------|------|------|
| I8 | ViewModel 层迁移 | 其余页面从 View 内聚状态迁移到 ViewModel | [缺失项 二](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I9 | 本地缓存层 | UserDefaults/SwiftData 缓存学习数据,支持离线浏览 | [潜在问题清单 #18](./潜在问题清单.md) | ✅ |
| I10 | 测试修复 | 4 个 Test 文件引用的 ViewModel/FileCache 已创建,验证可编译 | [潜在问题清单 #13](./潜在问题清单.md) | ✅ |
| I11 | LocalizedStringKey 接入 | 180+ key 已写好View 需从硬编码文案切换 | [潜在问题清单 #20](./潜在问题清单.md) | ✅ |
### 🟡 P2 — 体验/动效
| # | 事项 | 说明 | 详见 | 状态 |
|---|------|------|------|------|
| I12 | 动效补充 | 页面过渡、按钮反馈、AI 分析中状态、学习完成反馈 | [缺失项 三](./ios-projects/缺失项与待补全方向.md) | ✅ |
| I13 | 无障碍基础适配 | accessibilityLabel、Dynamic Type、VoiceOver | [缺失项 四](./ios-projects/缺失项与待补全方向.md) | ✅ |
### 🟢 P3 — TestFlight 前
| # | 事项 | 说明 | 详见 |
|---|------|------|------|
| I14 | 数据埋点 | 产品行为事件追踪PostHog/Firebase | [缺失项 八](./ios-projects/缺失项与待补全方向.md) |
| I15 | 崩溃监控 | Firebase Crashlytics 或 Sentry | [缺失项 六](./ios-projects/缺失项与待补全方向.md) |
| I16 | ViewModel/Service 单元测试 | Mock Repository 测试 | [缺失项 五](./ios-projects/缺失项与待补全方向.md) |
| I17 | Tab 结构调整决策 | 保持 5-Tab 或合并为 4-Tab | [缺失项 七](./ios-projects/缺失项与待补全方向.md) |
---
## 三、跨项目 / 策略层
> 来源:[潜在问题清单 🧭 方向/策略](./潜在问题清单.md)
### 🔴 P0 — 方向决策(不写代码)
| # | 事项 | 说明 |
|---|------|------|
| S1 | 选定第一个垂直知识库方向 | 3 个候选方向(公考申论/AI工具学习/前端面试)至今未打分未选定 |
| S2 | 做 3-5 个竞品拆解 | 零竞品文档,无法定义差异化 |
| S3 | 准备第一个 7 天路径的内容 | 产品核心是 AI + 结构化知识库,内容还没准备 |
| S4 | 砍掉 MVP 不需要的模块 | 代码已远超 MVP 计划,方向确定后应裁剪 |
| S5 | 算清 AI 单用户月成本 | 为定价打底,判断盈亏线 |
### 🟠 P1 — 验证机制
| # | 事项 | 说明 |
|---|------|------|
| S6 | 设定验证退出条件 | 没有"什么是验证失败"的定义和时间节点 |
| S7 | 设计输入降门槛方案 | 用户不愿主动输入是最大风险之一,需缓解策略 |
| S8 | 定 AI 分析质量验收标准 | 没有产品侧的 AI 效果验收机制 |
| S9 | 建立 Prompt 版本管理和效果追踪 | 核心资产需要 A/B 测试和迭代机制 |
### 🟡 P2 — 运营准备
| # | 事项 | 说明 |
|---|------|------|
| S10 | 跑一次真实用户获取 | 等待名单未真正跑通过 |
| S11 | 准备内测运营方案 | 客服响应 SLA、内测群管理、版本发布沟通流程 |
| S12 | 隐私政策合规检查 | 当前隐私政策为 AI 生成模板App Store 审核可能被拒 |
| S13 | 内容持续供给计划 | 一个 7 天路径学完就没新内容了 |
---
## 四、官网
> 来源:[潜在问题清单](./潜在问题清单.md)
| # | 事项 | 说明 | 优先级 |
|---|------|------|--------|
| W1 | Waitlist 表单接后端 API | 当前只 e.preventDefault() + 假成功提示 | 🟡 P2 |
| W2 | Support 表单有效化 | 无 action/method提交即刷新丢失 | 🟡 P2 |
| W3 | 品牌名统一为"知习 AI" | 目前与"龙德AI学习"混用 | 🟡 P2 |
| W4 | CSS 变量修复 | 7 个自定义属性未定义 | 🟢 P3 |
| W5 | og:image 补齐 | og-default.png 不存在 | 🟢 P3 |
| W6 | robots.txt 域名修正 | 写死 localhost:4321 | 🟢 P3 |
| W7 | sitemap 补全 | 缺 /product、/philosophy | 🟢 P3 |
---
## 执行顺序建议
```
第 0 批(现在,不写代码):
S1 → S2 → S3 → S4 → S5
选定方向 → 竞品拆解 → 准备内容 → 裁剪范围 → 算清成本
第 1 批(✅ 已完成 2026-05-18
B1 → B2 → B3 → B4 → B5 → B6
CI/CD脱敏 → BullMQ → AI await修复 → 限流注册 → 拦截器注册 → 分页
第 2 批(✅ 已完成 2026-05-18
B7-B11 → B12-B15 → I1-I7 ✅ → I8-I11 ✅
AI Workflows ✅ → 异步化 → iOS 前后端打通 → iOS 架构补全
第 3 批TestFlight 前):
✅ I12-I13 → ✅ B16/B17/B19 → ✅B18 → ✅B20-B22 → ✅B27 → S6-S9 → W1-W3
✅ iOS 动效/无障碍(已完成) → ✅ COS 接入(已完成) → ✅文档导入解析 → ✅基础设施补全 → 验证机制 → 官网修复
第 4 批App Store 前):
I14-I17 → S10-S13 → W4-W7
埋点/崩溃监控/测试/Tab决策 → 运营准备 → 官网细节
第 5 批(远期):
B23-B26
商业化 → 后台 → 客服
```