# M17 ~ M19：`ai-talk` 新里程碑与 Issue 规划

## 里程碑目标

从 `M17` 开始，把当前 `apps/web` 中偏占位性质的 `ai-talk` 入口，升级为一个真正可持续演进的 AI 入口域：

- `web` 负责公开体验与对话入口
- `admin` 负责运营治理与工作台
- `server` 负责试用码、会话审计、RAG 与 AI 编排

这条线的核心不是一次性把所有 AI 功能都做重，而是先把：

- 页面结构
- 访问控制
- 会话模型
- 管理边界

一次规划清楚，后续再按 issue 渐进落地，避免来回重构。

## 已锁定决策

- `profile` 继续保持 **SSR 概览页**
- `ai-talk` 采用 **SSR 入口页 + 子路由工作区**
- 知识库第一阶段采用 **单人知识库**
- web 端访问控制采用 **试用码 + 10 轮对话**
- admin 第一阶段就支持 **完整会话审计**
- 真实问答链路采用 **流式优先**

## 当前边界

### 本轮里程碑做什么

- 建立 `ai-talk` 的 route-first 页面结构
- 建立试用码、公开访客会话与消息审计模型
- 建立 web 端最小真实 RAG 对话闭环
- 让 admin 能治理试用码、会话与 RAG 状态
- 让现有 AI 工作台与 `ai-talk` 能力边界更清楚

### 本轮里程碑不做什么

- 不做开放注册与公开账户体系
- 不做多租户知识库
- 不做复杂知识源可视化管理后台
- 不做数字人真实音视频编排
- 不做 `Offer 对比建议` 的真实功能闭环

## 里程碑拆解

### M17：`ai-talk` 入口域立起来（体验优先）

#### issue-172：`web ai-talk` Route-first 入口与信息架构重组

- 目标：将 `/{locale}/ai-talk` 固定为 SSR 入口页，统一承接 AI Talk 主介绍、功能入口卡片与 `coming soon` 说明。
- 新增并固定子路由：
  - `/{locale}/ai-talk/chat`
  - `/{locale}/ai-talk/sessions/[sessionId]`
  - `/{locale}/ai-talk/avatar`
- 说明：当前先把入口域结构立住，不要求所有功能都已经接上真实后端。

#### issue-173：`admin /dashboard/ai` 升级为“运营 + 工作台”双区

- 目标：保留现有 AI workbench 主路由，但内部明确分为：
  - `AI Talk 管理`
  - `RAG 运行状态`
  - `简历优化建议`
  - `JD 匹配分析`
  - `Offer 对比建议（coming soon）`
- 说明：当前先收住分区、入口与空状态，不要求全部模块都能触发真实能力。

#### issue-174：数字人页面与媒体契约预留

- 目标：新增 `/{locale}/ai-talk/avatar` 独立页面，先承接一段简短自我介绍与能力说明。
- 预留后续接口方向：
  - 角色信息
  - 媒体资源
  - 播放状态
  - 控制区
- 说明：当前不接 TTS、视频流或数字人服务商。

### M18：试用码 + RAG 多轮对话最小闭环

#### issue-175：试用码、额度与公开访客鉴权模型

- 目标：在 `server` 新增公开 AI Talk 访客链路，不复用 admin JWT 登录。
- 第一阶段固定模型：
  - admin 生成试用码
  - web 用户输入试用码领取对话资格
  - 每个试用码可支撑 **10 轮用户提问**
  - `1 轮 = 1 次用户消息`
- 新增核心对象：
  - `AiTalkTrialCode`
  - `AiTalkGuestSession`
  - `AiTalkMessage`
- 说明：不做公开注册、公开账户体系或多租户用户模型。

#### issue-176：`web ai-talk` 最小真实 RAG 会话（流式优先）

- 目标：在 `/{locale}/ai-talk/chat` 启动对话，在 `/{locale}/ai-talk/sessions/[sessionId]` 承接真实多轮会话。
- 第一阶段能力：
  - 输入问题
  - 流式回答
  - 来源片段
  - 剩余轮次
  - 历史消息回显
- 说明：问答基础能力复用现有 `RagService` / AI provider，但新增面向公开访客的 `ai-talk` 应用链路，不直接暴露 admin 专用 RAG 接口。

#### issue-177：admin 的试用码 / 会话 / RAG 状态治理

- 目标：让 `dashboard/ai` 能治理：
  - 试用码
  - 会话审计
  - RAG 状态与重建
- 会话审计第一阶段包含：
  - 会话列表
  - 会话详情
  - 完整消息时间线
  - 试用码关联关系
- 说明：RAG 管理第一阶段复用现有 `status / rebuild` 能力，不做知识源编辑器。

### M19：admin AI 工作台与 `ai-talk` 能力收口（基础版）

#### issue-178：简历优化建议切到“当前简历结构驱动”的基础版

- 目标：让 admin AI 工作台中的“简历优化建议”以当前 `StandardResume` / 发布快照 / 导出内容为基础输入，而不是继续依赖临时粘贴文本。
- 第一阶段基础版只要求输出：
  - 优化建议摘要
  - 面向用户的改写建议
  - 对应的 markdown / pdf 导出链路或引用入口
- 说明：差异预览、一键应用、精确字段定位先预留接口，不强制本轮完成。

#### issue-179：JD 匹配分析切到统一输入基线（基础版）

- 目标：让 `JD 匹配分析` 与 `简历优化建议` 共用同一套当前简历结构基线。
- 第一阶段只做：
  - JD 输入
  - 分析结果
  - 面向当前简历结构的修改建议
- 说明：不做结构化 patch、自动应用或多版本派生简历。

#### issue-180：Offer 对比明确后置为高级版

- 目标：在 `dashboard/ai` 与 `ai-talk` 入口规划中保留 `Offer 对比建议`，但当前只以 `coming soon` 形式存在。
- 当前阶段只保留：
  - 入口卡片
  - 文案说明
  - 模块 README 中的能力边界记录
- 说明：不进入真实接口与数据模型实现。

## 实施顺序建议

1. `issue-172`：先把 web 端 `ai-talk` 路由结构立住
2. `issue-173`：同步把 admin AI 页改成“运营 + 工作台”分区
3. `issue-174`：把数字人入口页与类型契约预留出来
4. `issue-175`：建立试用码、额度与公开访客模型
5. `issue-176`：接通最小真实 RAG 多轮对话
6. `issue-177`：补齐 admin 治理端闭环
7. `issue-178`：让简历优化建议切回当前结构基线
8. `issue-179`：让 JD 匹配分析共用统一输入基线
9. `issue-180`：把 Offer 对比正式降级为后续高级版

## 一句话总结

`M17 ~ M19` 的重点不是“一次性把 AI 做重”，而是先把 `ai-talk` 收成：

- web 有入口
- server 有模型
- admin 有治理
- 后续数字人、RAG、多轮对话与高级版建议都能顺着当前结构继续长
