- 删除旧版 v0.1 规划,只保留完全版 - 更新全部 7 大模块文档,补充具体决策和实操内容 - 新增 AI架构设计、营销冷启动调研方案、客服设计详案等子文档 - 新增 潜在问题清单(56项技术+方向问题) - 整理图片到 images/ 目录
13 KiB
13 KiB
潜在问题清单
基于
思路梳理.md的 9 项已知问题之外,逐层审查代码后发现的问题。 更新时间:2026-05-12
🔴 严重(会阻断编译 / 上线 / 安全)
| # | 位置 | 问题 | 后果 |
|---|---|---|---|
| 1 | 后端 13 个 Repository 全部 | 数据只存内存 Map,没有调 Prisma 写 MySQL。服务器上已有 MySQL,但代码不走它。 |
服务重启 = 全量数据丢失 |
| 2 | 后端 infrastructure/queue/queue.service.ts |
队列是内存数组 push/shift,不是 BullMQ,没接 Redis |
队列任务重启丢失,无可靠异步处理 |
| 3 | 后端 3 个 Worker 文件 | 全是空壳(只有 console.log + setInterval),没有真正消费队列 |
异步任务(AI分析/导入/通知)全部未生效 |
| 4 | 后端 .gitea/workflows/deploy.yml |
数据库密码、Redis 密码、JWT Secret、Swagger 密码全部明文硬编码 | 任何人拿到仓库就能访问生产环境 |
| 5 | 后端 服务器密钥/WangDL.pem |
SSH 密钥已提交到 Git,.gitignore 没排除 |
密钥泄露风险 |
| 6 | iOS 全部 View 文件 | 自定义 NavigationLink(destination:label:) 没有定义,SwiftUI 原生签名不同 |
项目无法编译 |
| 7 | iOS Core/Network/APIConfig.swift + Info.plist |
baseURL 使用 http:// 明文,NSAllowsArbitraryLoads = true |
App Store 审核必然被拒 |
🟠 高危(功能主链路断裂)
| # | 位置 | 问题 | 后果 |
|---|---|---|---|
| 8 | 后端 auth.service.ts L154-158 |
Apple 登录实际未接入,走 mock(verifyRealApple 直接抛异常) |
用户认证链无效(虽账号刚开通,但代码需要准备好) |
| 9 | 后端 modules/ 大部分 Controller |
10 个 Controller 没有 @UseGuards(JwtAuthGuard),或使用 user?.id || 'anonymous' 降级 |
未登录可调用知识库/AI分析/学习记录等接口 |
| 10 | 后端 ai-analysis.service.ts L61-78 |
.then().catch() 未 await,fire-and-forget |
AI 分析异常静默丢失 |
| 11 | iOS Core/Network/APIClient.swift L11 |
Token 只存 actor 内 var token: String?,没写 Keychain |
杀进程重启就要重新登录 |
| 12 | iOS 全部 View | APIService 有 8 个 Service 类(20+ 方法),但没有任何 View 调用它们。所有数据硬编码。 |
前后端完全断开 |
| 13 | iOS Tests 全部 4 个文件 | 引用的 ReviewPlanViewModel、StudyHomeViewModel、AIChatViewModel、FileCache 全不存在 |
测试无法编译 |
| 14 | 官网 WaitlistForm.astro L83-95 |
提交事件只 e.preventDefault() 然后显示假成功,没有 fetch() |
等待名单完全无效 |
| 15 | 官网 support.astro |
反馈表单无任何 JS 处理,无 action/method,提交即刷新丢失 |
支持/反馈功能无效 |
🟡 中危(体验 / 架构债务)
| # | 位置 | 问题 | 后果 |
|---|---|---|---|
| 16 | iOS 全部 View | 零 ViewModel 分层,所有逻辑写在 View @State 里,无 @StateObject/@Published |
代码不可测试,日后重构极其困难 |
| 17 | iOS 全部 View | 零加载态(Loading)、零错误态(Error)、零空态(Empty) | 用户体验极差,网络出错无提示 |
| 18 | iOS 无任何持久化 | 没有 CoreData/SwiftData/UserDefaults 持久层,无离线缓存 | 断网完全不能用 |
| 19 | iOS SettingsView / LibrarySubpages |
所有保存/提交按钮的闭包是 {} 空的,点了无任何反应 |
设置和创建知识库等全部失效 |
| 20 | iOS zh-Hans.lproj/Localizable.strings |
180+ key 已写好,但没有一个 View 用 NSLocalizedString |
多语言架构白写了 |
| 21 | 后端 common/utils/rate-limit.service.ts |
限流 Service 写好了但没在任何 Module 注册,没在任何 Controller 使用 | 零限流保护 |
| 22 | 后端 common/interceptors/response.interceptor.ts |
拦截器写好了但没全局或局部注册 | 响应格式不一致 |
| 23 | 后端 大部分 Controller | @Body() body: any 无 DTO class |
无输入校验,恶意 payload 直通 |
| 24 | 后端 document-import.service.ts |
用 3 层 setTimeout 模拟处理,无真正文件解析 |
资料导入完全无效 |
| 25 | 后端 infrastructure/storage/ |
只有 getUploadPath() 和 healthCheck(),没有真正的读写/上传 |
文件上传完全无效 |
| 26 | 后端 main.ts |
无 enableShutdownHooks() |
SIGTERM 时请求被硬断,连接不排空 |
| 27 | 后端 ID 类型 | Prisma schema 用 BigInt,所有代码生成 string ID |
接 Prisma 时全部 ID 逻辑要重写 |
| 28 | 后端 所有 list 接口 | PaginationDto 写好了但无接口使用 |
无分页,数据量大时撑不住 |
| 29 | 后端 prisma/migrations/ |
无 migration 目录 | 数据库 schema 变更无版本管理 |
🟢 低危(清理 / 微调)
| # | 位置 | 问题 |
|---|---|---|
| 30 | 官网 src/styles/global.css |
7 个 CSS 自定义属性(--color-accent、--color-text 等)未定义,Tailwind v4 变量名不一致 |
| 31 | 官网品牌名 | "知习 AI" 和 "龙德AI学习" 两个名字混用,约各占一半页面 |
| 32 | 官网 sitemap.xml.astro |
缺少 /product 和 /philosophy,lastmod 生成时间全是"今天" |
| 33 | 官网 BaseLayout.astro L12 |
og-default.png 不存在,所有页面社交分享无缩略图 |
| 34 | 官网 robots.txt |
写死 Sitemap: http://localhost:4321/sitemap.xml |
| 35 | 官网 support.astro / privacy.astro |
绕过 BaseLayout,缺失所有 SEO meta 标签 |
| 36 | 后端 Swagger | 生产环境 ENABLE_SWAGGER=true,且密码硬编码在 deploy.yml |
| 37 | 后端 无 docker-compose.yml |
文档写了但没创建,本地无法一键起全栈 |
| 38 | 后端 E2E 测试 | test/app.e2e-spec.ts 期望 Hello World! 但根路径返回的是健康检查 JSON |
| 39 | iOS 无崩溃监控 | 无 Crashlytics / Sentry / 自建监控 |
| 40 | iOS 无推送 | 无 BGTaskScheduler,无 Push Notification 注册 |
📊 统计
| 等级 | 数量 |
|---|---|
| 🔴 严重 | 7 |
| 🟠 高危 | 8 |
| 🟡 中危 | 14 |
| 🟢 低危 | 11 |
| - 合计(技术向) | 40 |
🧭 项目方向 / 策略层遗漏(非技术问题)
这些是你现有的规划文档中提到但未实质性推进、或根本没被覆盖的问题。
| # | 类别 | 问题 | 现状 | 为什么重要 |
|---|---|---|---|---|
| D1 | 方向决策 | 3 个候选方向至今未选定 | 方向验证.md 列出了公考申论 / AI工具学习 / 前端面试三个方向,评分维度也写了,但没打分没结论 |
代码已经写了 21 个页面 + 13 个后端模块,但还不知道往哪个垂直方向走。按计划"先选方向再做产品",现在反了 |
| D2 | 竞品分析 | 零竞品拆解 | 文档多次提"做竞品分析表""看竞品差评",但没有任何竞品文档 | 没有竞品分析就无法定义差异化,也不知道当前方向是否已红海 |
| D3 | 第一个知识库内容 | 没有开始准备内容 | 计划反复强调"只做一个7天路径",但没有任何内容草稿 | 产品核心价值是 AI + 结构化知识库,AI 链路通了但内容没准备,学什么? |
| D4 | 范围失控 | 实际代码远超 MVP 计划 | 计划要求 8 个 P0 模块、8-14 页、不做 Worker/导入/通知;实际做了 13 模块、21 页、3 Worker、文档导入骨架 | 每多做一个未验证的模块都是成本,而且在方向没确定前做这些是风险 |
| D5 | AI 成本模型 | 没算过真实的 AI 调用成本 | 计划提了"成本失控"的警惕,但没有具体数字:每用户每天几次调用、每次多少 token、月成本预估 | 不收钱还好,一旦内测量大或定价,成本算不清就没办法定价,也没办法判断盈亏 |
| D6 | 验证的硬性退出条件 | 没有"什么是验证失败"的定义 | 方向验证.md 有最低目标(50条原话、10份问卷等),但没有明确时间节点和放弃标准 |
容易陷进"再试试"的循环,没有止损线 |
| D7 | 定价策略 | 商业化与支付模块.md 只是目录骨架 |
没有月订阅/年订阅的具体金额、没有竞品价格对比、没有用户付费意愿数据 | 这是你 思路梳理.md 第 9 条自己写的,但完全没推进 |
| D8 | 季节性风险 | 公考/面试方向有强时间窗口 | 公务员考试有固定报名和考试周期,错过窗口期获客成本急剧上升 | 如果选定公考方向但不卡时间发布,第一波内测可能完全找不到备考用户 |
| D9 | 用户输入意愿风险 | 没提出降低输入门槛的方案 | Demo与MVP.md 自己写了"用户不愿意主动输入内容"是最大风险之一,但没有给缓解策略 |
学习闭环的核心是用户写笔记/回答,如果用户跳过这一步,整个链条断了 |
| D10 | 内容持续供给 | 知识库由谁维护、更新节奏 | 产品定位是"AI驱动的学习系统",但内容来源方案停在"合法整理"这四个字上 | 一个 7 天路径学完就没新内容了,用户不回来。没有持续的内容生产计划 |
| D11 | AI 分析质量的验证标准 | 没有产品侧的 AI 效果验收机制 | AI 分析输出的是掌握度/薄弱点/建议,但没有说"多准确算合格",谁来验收 | 如果 AI 分析结果用户觉得不靠谱,产品核心价值崩塌。需要真人验证标准 |
| D12 | Prompt 管理策略 | 没有 Prompt 版本管理和效果追踪 | BACKEND-PLAN.md 设计了 prompts/ 目录和 Provider 抽象,但没有 prompt A/B 测试、效果对比、迭代机制 |
Prompt 是这个产品的核心资产之一,随缘改会越来越差 |
| D13 | 品牌定位 | 品牌名都不统一 | 官网页面和 app 里"知习 AI"和"龙德AI学习"混用,没有正式品牌命名文档 | 内测用户看到两个名字会很困惑,不利于口碑传播 |
| D14 | 内测用户获取 | 没有用户触达的路径验证 | 计划写了小红书/B站/知乎 + 等待名单,但等待名单在官网上是假的,没有跑过一次真实用户获取 | 方向验证的第一步"看评论区"还没批量执行过 |
| D15 | 上线后运营 | 零运营准备 | 计划有 运营与客服模块.md 但只是目录,没有客服响应 SLA、没有内测群管理方案、没有版本发布沟通流程 |
TestFlight 内测用户遇到问题找谁?等多久?怎么反馈给你?全没定义 |
| D16 | 隐私合规落空 | 官网隐私政策是用 AI 生成的模板 | privacy.astro 内容很长但法律有效性存疑;App Privacy 数据声明没准备 |
App Store 上架时 Apple 会严格审查隐私声明,模板可能被退回 |
📊 统计(含方向)
| 等级 | 数量 |
|---|---|
| 🔴 严重(技术) | 7 |
| 🟠 高危(技术) | 8 |
| 🟡 中危(技术) | 14 |
| 🟢 低危(技术) | 11 |
| 🧭 方向/策略 | 16 |
| 合计 | 56 |
🎯 建议优先修复顺序
第 0 批(现在,不写代码):
D1 选定一个垂直方向并打分 → 不选方向后面都是浪费
D2 做 3-5 个竞品拆解 → 知道差异化在哪
D3 准备第一个 7 天路径的内容 → 没内容验证不了学习闭环
D4 砍掉 MVP 不需要的模块和页面 → 别再继续膨胀了
第 1 批(技术底线,本周):
#6 iOS NavigationLink 编译问题 → 让项目能跑
#1 Repository 接 Prisma + MySQL → 数据能落库
#4 CI/CD 密钥脱敏 → 安全底线
#5 删除或 gitignore WangDL.pem → 安全底线
#7 iOS 换 HTTPS → App Store 上架要求
第 2 批(功能链路,下周):
D5 算清 AI 单用户月成本 → 为定价打底
#2 Queue 接 BullMQ + Redis → 异步链路通
#8 Apple 登录接入 → 认证链路通
D14 跑一次真实用户获取 → 开始验证方向
#14 官网 Waitlist 接后端 API → 等待名单能用
#12 iOS View 调 APIService → 前后端打通
D13 统一品牌名 → 知习 or 龙德,选一个
第 3 批(内测前):
D6 设定验证退出条件和时间节点 → 有止损线
D9 设计输入降门槛方案 → 解决最大风险
D11 定 AI 分析质量验收标准 → 产品核心价值要可控
#9 各 Controller 加 Auth Guard → 接口安全
#11 Token 写 Keychain → 登录持久化
#16 iOS MVVM 分层 → 代码可维护
#17 iOS 加载/错误/空态 → 体验完整
D15 准备内测运营方案 → TestFlight 用户有处可去
D16 检查隐私政策合规性 → App Store 审核不被拒