# 里程碑与 Issue 拆解建议

本文件不是实际 Issue 的替代品，而是**Issue 规划草稿池**。

## M1 基础工程

### issue-01 workspace 初始化

- 背景：当前仓库仍是单体 Vue 项目
- 目标：只引入 workspace 基础结构，不迁移业务
- 验收：能解释为什么这么拆，不要求功能迁移完成

### issue-02 apps 与 packages 占位骨架

- 目标：建立 `apps/web`、`apps/admin`、`apps/server` 与 `packages/*` 的最小占位结构

### issue-03 共享配置占位

- 目标：逐步引入共享 `tsconfig`、`eslint`、环境变量约束骨架

### issue-04 空应用脚手架策略说明

- 目标：写清何时创建真实 `Next.js` / `NestJS` 应用，而不是在 M1 一次性生成

## M2 鉴权与角色

### issue-05 apps/server 最小 NestJS 脚手架

- 目标：为后续鉴权与角色能力提供唯一业务后端入口

### issue-06 鉴权领域与角色模型

- 目标：定义 `admin` / `viewer`、用户实体与权限边界

### issue-07 JWT 登录最小闭环

- 目标：完成登录、令牌签发、最小鉴权闭环

### issue-08 apps/admin 最小登录壳

- 目标：创建后台登录壳，只承接最小登录与鉴权状态

### issue-09 viewer 只读守卫与体验

- 目标：明确哪些能力只读、哪些能力禁止触发真实操作

## M3 简历内容与发布流

### issue-10 双语内容模型

- 目标：建立标准简历的双语数据结构与模块边界（`zh/en`）

### issue-11 草稿与发布态

- 目标：建立草稿 / 已发布状态与最小发布流

### issue-12 web 公开读取已发布版本

- 目标：创建 `apps/web` 最小展示壳，并只读取已发布内容

### issue-23 主题模式与展示配置边界

- 目标：明确 `light / dark`、展示配置与后续多模板扩展钩子
- 说明：当前只做架构约束与边界设计，不直接实现完整主题系统

## M4 AI 工具链

### issue-13 provider 适配器接口

- 目标：建立 AI Provider 抽象与 OpenAI-compatible 适配器入口
- 说明：当前无正式 API Key，可先落地本地 mock / fake provider

### issue-14 文件提取入口

- 目标：支持 `pdf/md/txt/docx` 的最小文本提取入口

### issue-15 缓存分析报告

- 目标：建立 mock 结果缓存与任务结果读取链路

### issue-16 admin 触发 / viewer 只读

- 目标：在后台中区分 `admin` 真实触发、`viewer` 只读 mock 体验

## M5 导出与下载

### issue-17 markdown 导出

- 目标：由 `apps/server` 输出标准 Markdown 简历导出

### issue-18 pdf 导出

- 目标：由 `apps/server` 输出标准 PDF 简历导出

### issue-19 web/admin 下载入口

- 目标：在 `apps/web` 与 `apps/admin` 中接入导出下载入口

## M6 测试、CI/CD、部署

### issue-20 单元测试基建

- 目标：补齐 `apps/server`、`apps/admin`、`apps/web` 的基础测试策略与关键测试

### issue-21 GitHub Actions

- 目标：建立类型检查、测试、构建的 CI 流程

### issue-22 Vercel + 云服务器部署文档

- 目标：打通 `web/admin` 前端部署与 `server` 云主机部署文档

## M8 数据持久化与共享契约

### issue-36 Drizzle / libsql 最小接入与环境边界

- 目标：为 `apps/server` 接入 `Drizzle ORM + SQLite/libsql` 的最小运行骨架
- 说明：当前只解决连接、配置、迁移入口与环境变量边界，不扩展业务改造

### issue-37 简历草稿 / 发布快照表设计

- 目标：为标准双语简历建立最小持久化表结构，覆盖 `draft / published`
- 说明：只服务当前单份标准简历，不提前设计 JD 变体、多租户或复杂版本系统

### issue-38 ResumePublicationService 持久化改造

- 目标：把当前内存态发布流改造成基于数据库仓储的实现
- 说明：保持现有接口语义稳定，优先完成“可替换、可解释、可测试”的服务重构

### issue-39 packages/api-client 最小共享契约

- 目标：抽离 `admin / web / server` 共用的最小 DTO、错误语义与请求封装
- 说明：先解决重复类型和契约漂移，不一次性做成完整 SDK

### issue-40 admin / web 切换到共享契约并完成冒烟验证

- 目标：让 `apps/admin` 与 `apps/web` 消费共享契约并完成保存 / 发布 / 公开读取冒烟链路
- 说明：本任务以联调与收束为主，不展开新的 UI 改版

## M9 体验基线与主题边界

### issue-42 共享主题 tokens 与 light/dark 最小闭环

- 目标：为 `web / admin` 建立统一主题变量、`light / dark` 切换能力与后续多模板扩展钩子
- 说明：当前只做主题基线与持久化，不实现多模板系统

### issue-43 admin 后台信息架构与仪表盘壳整理

- 目标：整理后台首页的信息架构、操作区与状态区，让现有保存 / 发布 / AI 入口更清晰可演示
- 说明：当前不引入第三方完整 admin 模板，不扩展复杂 CMS

### issue-44 web 公开简历页视觉基线升级

- 目标：基于真实已发布简历内容，升级公开页视觉层次、模块节奏与双主题下的阅读体验
- 说明：当前只做基线样式与结构优化，不进入 Figma 精修和商业版模板系统

### issue-45 packages/ui 最小共享展示组件沉淀

- 目标：抽离 `web / admin` 共用的最小展示区块、标题、卡片与状态组件，减少重复结构
- 说明：先做教学友好的轻量共享层，不一次性做完整组件库

### issue-46 教程大纲与里程碑收束

- 目标：沉淀 M9 的设计取舍、主题边界与共享 UI 边界
- 说明：若正文时机未到，至少先输出可继续展开的教程大纲

## M12 开源版收尾与智能简历改写

### issue-132 admin AI 工作台布局收口与测试目录规范

- 目标：把 `dashboard/ai` 收成按行组织的工作台结构，并把 `apps/admin` 测试统一迁移到 `__tests__/`
- 说明：本任务以 UI 收口、测试目录规范和验证闭环为主，不新增后端接口或新的分析能力

### issue-134 admin HeroUI 后台壳与工作区重构

- 目标：用 HeroUI 收住后台登录页、受保护壳、概览、简历编辑、AI 工作台和发布导出工作区
- 说明：本任务聚焦后台信息架构、主题切换和路由组织，不新增 server 业务接口

## M13 RAG 最小知识库链路

### issue-133 RAG 最小知识库链路与简历源同步

- 目标：为 `apps/server` 建立最小 RAG 模块、简历知识源与知识库素材同步链路
- 说明：本任务只做教程友好的轻量 RAG，不引入复杂向量数据库或后台知识库管理

## M10 AI 工作台与真实分析

### issue-47 admin AI 工作台最小入口

- 目标：在 `apps/admin` 建立 AI 工作台入口，统一承接分析场景、Provider 状态与角色边界说明
- 说明：当前先做后台入口与信息架构，不展开复杂任务编排和多页面后台

### issue-48 文件上传与文本提取预览

- 目标：把 `txt / md / pdf / docx` 上传与文本提取结果接进后台工作台，形成可见的解析预览链路
- 说明：当前只解决上传、解析、预览与错误提示，不进入持久化附件管理

### issue-49 管理员真实分析闭环

- 目标：让 `admin` 能基于提取结果或手动输入触发真实分析，并展示 Provider 信息、场景结果与基础反馈
- 说明：继续复用现有 `NestJS` AI 入口，不引入队列、异步任务中心或复杂 Prompt 工作流

### issue-50 viewer 缓存体验与权限收束

- 目标：让 `viewer` 只能读取缓存 / 预设分析结果，不能上传文件或触发真实分析
- 说明：本任务聚焦角色体验边界，不扩展新的角色模型

### issue-51 教程大纲与里程碑收束

- 目标：沉淀 M10 的 AI 工作台设计取舍、上传解析链路与角色边界
- 说明：若正文时机未到，至少先输出可继续展开的教程大纲

## M17 ~ M19 ai-talk 入口域、试用码对话与 admin 治理

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

- 目标：把 `/{locale}/ai-talk` 升级为 SSR 入口页，并新增 `chat / sessions / avatar` 子路由
- 说明：当前先立路由与页面结构，不要求全部能力都接上真实后端

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

- 目标：让后台 AI 页明确承接 `AI Talk 管理 / RAG 状态 / 简历优化 / JD 匹配 / Offer 占位`
- 说明：本任务先收住分区和入口，不把所有真实能力混在一轮完成

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

- 目标：新增 `/{locale}/ai-talk/avatar` 页面，并预留角色、媒体与播放状态边界
- 说明：当前只做独立页面与契约，不接真实数字人链路

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

- 目标：建立公开 AI Talk 访客链路，支持试用码领取与 10 轮对话额度
- 说明：当前不做公开注册、多租户或复杂账户体系

### issue-176 web ai-talk 最小真实 RAG 会话

- 目标：让 `chat / sessions` 子路由承接最小真实多轮对话，协议按流式优先设计
- 说明：当前只接当前单人知识库，不做工具调用、语音输入与复杂记忆编排

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

- 目标：让后台能管理试用码、查看完整会话审计，并治理当前 RAG 状态
- 说明：当前复用已有 `status / rebuild` 能力，不扩展成知识库编辑后台

### issue-178 简历优化建议切到当前简历结构驱动（基础版）

- 目标：让 admin AI 工作台中的简历优化建议基于当前 `StandardResume` / 发布快照 / 导出内容生成
- 说明：高级版的一键应用、差异预览与字段定位先预留接口，不强求本轮做完

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

- 目标：让 JD 匹配与简历优化建议共用当前简历结构基线
- 说明：当前只做基础分析与建议，不做结构化 patch 和多版本派生简历

### issue-180 Offer 对比建议降级为后续高级版

- 目标：保留入口和说明，但不在当前里程碑展开真实实现
- 说明：避免把当前 `ai-talk` 主线扩成过大范围
