Files
Hua.Todo/docs/project/研发工单-v1.3.0/00-工单总览.md
T
ShaoHua 3213d4c718 feat: 完成v1.3.0架构对齐与Web端根路径托管全量开发
- 重构架构:抽离AddCloudSyncServer到扩展类,补全中间层文档对齐
- 修复根路径404与鉴权跳转:新增中间件处理浏览器请求302跳转
- 实现种子数据初始化:添加默认管理员账号自动创建逻辑
- 优化前端代理与构建:新增Vite代理配置与自动构建Target
- 补全测试与文档:新增集成测试,更新开发与部署文档
2026-08-08 07:33:44 +08:00

17 KiB
Raw Blame History

研发工单 v1.3.0 - 总览

术语澄清:本文件中"研发工单"指智能体/开发者执行的编码工作项,与业务侧的 Todo 待办项无关。详见 .trae/rules/全局/05-研发工单规则.md。


一、背景与目标

Hua.Todo v1.3.0 版本聚焦于三个核心能力的升级:

序号 能力 描述
1 MCP 服务映射 将现有 HTTP 服务转换为 MCP(Model Context Protocol)服务,提升服务调用效率与可扩展性
2 语音控制与 AI 辅助 通过语音指令操作 Todo 待办项(CRUD + 子任务),通过 LLM 提供 AI 辅助任务拆分建议
3 会议任务拆分 以"会议"为入口记录会议内容(录音/文字),通过 AI 分析自动生成待办项拆分建议,用户确认后批量创建

二、工单拆分

2.1 并行工单(可同步执行)

工单编号 标题 负责人 状态
01 HTTP 服务转换为 MCP 服务 - 已完成
02 语音控制与 AI 辅助 - 已完成
03 会议任务拆分 - 待开始
04 富文本描述、附件与外部链接 - 已完成

2.2 03 子工单拆分

子工单 标题 依赖 状态
03-01 会议数据模型与 API 无 待开始
03-02 音频录制与转写 03-01 待开始
03-03 AI 任务拆分服务 03-01、工单 02 LlmClientService 待开始
03-04 任务建议与确认 UI 03-01、03-03 已完成

2.3 串行工单(依赖前置工单完成)

当前版本暂无串行工单依赖。

2.4 补充工单(架构对齐,2026-08-08 新增)

按 04-研发工单全流程规范.md §2.3「新增工单约束」:已有条目不可改写,本章节为本次新增。触发原因:本次 307 修复后重写 01-项目架构.md §3/§5,对照代码发现 2 处架构缺口(文档遗漏 HttpApi.AspNetCore 层、Web 端根路径无前端托管)。

工单编号 标题 负责人 状态 并行性
05 架构文档与代码实际路径对齐 - 待开始 与 03/06 并行
06 Web 端根路径托管前端 - 待开始 与 03/05 并行(建议 05 缺口 D 先落,再推 06 Program.cs 集成)
07 - 数据库初始化默认管理员 待实现 待验证 Host 服务端 DB Migrate 后自动创建默认管理员账号;仅 Host 模式;配置驱动 + 幂等 + 强制首登改密;作为 06.1 Bootstrap 的自动前置项。详见 10-数据库初始化默认管理员.md

三、各子工单摘要

3.1 工单 01 - HTTP 服务转换为 MCP 服务

目标:基于 C# 现有映射框架,将 Hua.Todo 的 HTTP API 转换为 MCP 服务

核心需求:

  • 将现有的 HTTP API 端点映射为 MCP 工具描述符
  • 生成符合 MCP 规范的契约文档
  • 验证 MCP 服务的可用性与正确性

验收标准:

  • MCP 服务可正常对外提供接口
  • 所有原有 HTTP API 功能在 MCP 服务中可正常使用

3.2 工单 02 - 语音控制与 AI 辅助

目标:实现语音控制 Todo 待办项能力与 AI 辅助任务拆分功能

核心需求:

  • 语音输入(STT):平台原生语音识别 → 文字
  • 语音播报(TTS):执行结果语音反馈
  • 语音指令解析与执行(CRUD + 子任务 + 歧义处理)
  • AI 辅助任务拆分(LLM 生成子任务建议,用户确认后批量创建)

不包含:

  • 语音通话功能(场景不明确,本期不做)

验收标准:

  • 各平台 STT/TTS 可正常工作
  • 语音指令可准确执行 Todo 业务操作
  • 歧义场景返回候选列表而非直接执行
  • AI 拆分建议需用户确认后才创建子任务

3.3 工单 03 - 会议任务拆分

目标:以"会议"为入口,通过录音/文字记录会议内容,AI 自动提取行动项生成待办项建议

核心需求:

  • 新增"会议"类型标记(TaskType.Meeting)
  • 录音:前端 MediaRecorder → 后端 STT 转写
  • 文字:直接输入/粘贴会议纪要
  • AI 会议拆分(LLM 分析会议内容 → 待办项建议列表)
  • 建议审阅与确认 UI(勾选、编辑、批量创建子任务)

不包含:

  • 实时语音转写(本期不做)
  • 音频持久存储(转写完成后删除音频)

验收标准:

  • 可通过"会议"类型创建待办项,显示会议图标
  • 录音可正常录制并提交转写
  • 文字纪要可保存/编辑
  • AI 拆分返回 3-10 条结构化建议,含优先级和原因
  • 用户可审阅、勾选、编辑建议后批量创建为子任务
  • 离线模式拒绝 AI 拆分(提示降级)

3.4 工单 04 - 富文本描述、附件与外部链接

目标:为 Todo 待办项新增多行描述、文件附件管理与外部程序/链接启动能力(仅桌面端)

核心需求:

  • TaskEntity 新增 Description 多行描述字段
  • 新增 AttachmentEntity 数据模型,支持本地文件上传、下载、删除
  • 支持外部链接(URL)作为附件,点击在默认浏览器打开
  • 桌面端通过系统关联程序打开本地附件(Process.Start / xdg-open)
  • 前端编辑对话框扩展描述 textarea + 附件管理区域

不包含:

  • 移动端附件管理(本期仅 Windows/Linux 桌面端)
  • 附件云同步(后续版本规划)
  • 附件预览(如图片缩略图,本期不做)
  • 富文本编辑器(本期仅纯文本)

验收标准:

  • 描述字段可正常编辑和保存
  • 附件可上传、下载、删除,文件完整性校验
  • 外部链接可添加并在浏览器中打开
  • 本地附件可通过系统关联程序打开
  • 附件数量(20个)和大小(50MB)限制生效

3.5 工单 05 - 架构文档与代码实际路径对齐

目标:修正 01-项目架构.md §1/§2/§5 共 5 处与实际代码结构不一致的描述,使规则文档成为代码的单一事实来源。

核心需求:

  • 文档侧:§1 项目清单补 Hua.Todo.HttpApi.AspNetCore 条目;§2 ASCII 依赖图加该中间层;§5 路径修正 Mcp 描述
  • 代码侧:CloudSyncServerService.cs 抽离 AddCloudSyncServer() 到新文件 CloudSyncServiceCollectionExtensions.cs;新建 CloudSyncEndpointExtensions.cs 还原 MapCloudSyncProxySettings()
  • 回归:Host 编译 + 161 个既有测试全部通过

不包含:业务逻辑变更、公共 API 签名修改、v1.2.0 工单 10(DataSeeder)

验收标准:详细 5 条 Given-When-Then 见 05-架构文档与代码实际路径对齐.md §五。

3.6 工单 06 - Web 端根路径托管前端

目标:补齐模式 B(Hua.Todo.Host Web 端)的前端静态页托管链路,使 dotnet publish Hua.Todo.Host 产出一个「页面 + API + Admin 占位」完整可部署的服务。

核心需求:

  • Host Program.cs:UseDefaultFiles + UseStaticFiles + MapFallbackToFile("index.html")(支持 SPA 路由)
  • Host csproj:新增 BuildHuaTodoWebWebRoot Target(npm install/npm run build/copy dist → wwwroot,Inputs/Outputs 支持增量构建)
  • 文档:docs/manual/08-构建与开发指南.md 追加模式 B 开发双开步骤 + 生产发布步骤
  • 测试:WebRootStaticFileTests.cs 验证根路径 / 与 SPA fallback 不覆盖 /api/*

不包含:Admin 管理后台前端实现(v1.2.0 工单 06.1)、嵌入式模式前端托管(EmbeddedWebServerService 各自管理)

验收标准:详细 6 条 Given-When-Then 见 06-Web端根路径托管前端.md §四。


四、待验证表

子工单 验证项 状态 备注
01 MCP 服务契约文档生成 已验证 动态工具自动生成,工具名/描述/参数 schema 均已覆盖
01 MCP 服务可用性测试 已验证 17 个单元测试全部通过(含工具调用端到端验证)
01 原有 API 功能兼容性 已验证 所有 ITaskService 方法均生成 MCP 工具,覆盖 CRUD 全部 9 个 API
01 CloudSync MCP 工具 已知缺口 CloudSync 服务未实现 IDynamicApiService,需手动映射或重构
02 STT/TTS 平台适配 待验证 Windows 优先,其他平台后续
02 语音指令识别准确率 待验证 -
02 歧义处理正确性 待验证 -
02 AI 拆分建议质量 待验证 -
02 Todo 业务操作覆盖度 待验证 CRUD + 子任务 + 取消完成
03 会议数据模型迁移 待验证 TaskType 字段 + DB 迁移
03 录音与转写链路 待验证 录制 → 上传 → 转写 → 保存
03 AI 会议拆分质量 待验证 建议含标题+优先级+原因
03 建议审阅与批量创建 待验证 MeetingBreakdownDialog 已实现:勾选/编辑/确认后创建子任务
04 描述字段编辑与保存 待验证 -
04 附件上传/下载/删除 待验证 -
04 外部链接添加与打开 待验证 -
04 本地文件通过系统程序打开 待验证 Process.Start / xdg-open
04 附件数量/大小限制 待验证 20 个 / 50MB
04 待办项删除时附件级联清理 待验证 -
04 跨平台编辑安全(移动端不覆盖描述/附件) 待验证 桌面设值 → 移动端改标题 → 桌面验证不丢失
05 规则文档 §1/§2 补 HttpApi.AspNetCore 条目与依赖图 待验证 Glob 到项目 + 规则描述一致
05 §5 扩展点 AddCloudSyncServer / MapCloudSyncProxySettings / Mcp 3 个路径修复 待验证 规则路径 = Grep 实际路径;Host 编译 0 错误
05 既有 AddCloudSyncServer 回归测试 待验证 CloudSyncEndpointRegistrationTests 5 个用例全部通过
06 Host / 返回 Hua.Todo.Web index.html(200 + div#app) 待验证 WebRootStaticFileTests.Root_Get_ReturnsIndexHtml 通过
06 SPA 路由 /settings fallback 到 index.html 待验证 不 404;不覆盖 /api/* 动态 API
06 dotnet publish Hua.Todo.Host 产出包含前端静态资源 待验证 publish/wwwroot/index.html 存在 + 资源齐全
06 增量构建前端未变时跳过 npm build 待验证 MSBuild Inputs/Outputs 检测 Skipping target 提示
06 模式 B 开发双开文档可执行性 待验证 从零 clone → 文档 step by step 跑通页面 + API

五、关键决策

决策点 结论
MCP 框架选择 使用 TRAE 平台内置的 MCP 服务框架
STT/TTS 分层 接口在 Core,实现在各平台目录(同全局快捷键模式)
语音指令解析 A+C 混合方案:在线走 LLM 意图解析(LlmIntentParser),离线降级到规则匹配(RuleIntentParser),双策略通过 HybridVoiceIntentParser 自动切换
歧义处理策略 目标不唯一时返回候选列表;LLM confidence < 0.8 时触发确认;confidence < 0.5 按 UNKNOWN 处理
AI 拆分安全性 LLM 调用在 Host 端,建议需用户确认后才创建
LLM 复用 意图解析与 AI 拆分共用同一 LLM 基础设施(LlmClientService)
语音通话 本期不做,场景不明确
会议类型 新增 TaskType 枚举区分普通待办项与会议,会议有专属录音/纪要/拆分 UI
录音存储 转写完成后删除原始音频文件,节省空间
音频转写 优先服务端 Whisper API;后续补各平台原生 STT
LLM 拆分 prompt 会议专用 prompt,侧重"提取行动项",输出优先级+原因
工单 02 复用 LlmClientService 直接复用;会议拆分 prompt 独立于语音意图解析
多入口覆盖规则 后续每项新增功能必须在需求阶段确认 UI 入口 + 语音控制入口覆盖情况,详见 05-多入口功能同步规范.md
附件存储策略 附件存储在应用数据目录 Attachments/ 子目录;外部链接不复制文件仅存 URL;单文件 50MB / 每待办项 20 个上限
外部程序启动 通过 IPlatformAttachmentOpener 接口实现平台差异:Windows 用 Process.Start,Linux 用 xdg-open
工单 04 与 03 共享文件 TaskEntity.cs、TodoDbContext.cs、task.ts、TaskEditDialog.vue 为共享文件,工单 03 先写入,04 后续追加
架构文档 ↔ 代码一致性强制策略 后续凡改 01-项目架构.md 任何一节,改后必须立即对 §1/§2/§5 所有提到的文件路径做一次 Glob/Grep 校验;不一致 → 先开对齐工单,不直接碰业务代码(本次 05 工单即为策略首次落地案例)
Host 中间件顺序固定模板 Swagger → UseDefaultFiles/UseStaticFiles → CORS → Authentication → Authorization → UseDynamicApi → MapMcpServer → MapFallbackToFile → Run(顺序错误直接判作编译/验收失败)
MSBuild 前端构建 Target 命名与增量 Host 前端构建 Target 固定名 BuildHuaTodoWebWebRoot;必须显式写 Inputs="$(HuaTodoWebSrc);$(HuaTodoWebPkgJson)" Outputs="$(WebRoot)/index.html" 支持增量;Node/npm 不存在时只 Warning 不阻塞 API 层 build

六、依赖与前置条件

依赖项 状态 来源
TRAE MCP SDK 已就绪 平台内置
各平台原生 STT/TTS API 已就绪 平台内置
Hua.Todo v1.2.0 已完成 上一版本
LLM API(AI 拆分) 待确认 Host 端调用
浏览器 MediaRecorder API 已就绪 前端录音
工单 02 LlmClientService 待实现 会议拆分复用
工单 05 前置(缺口 D) 待完成 建议先还原 CloudSyncEndpointExtensions.cs(MapCloudSyncProxySettings),再推 06 Program.cs 集成
Node.js + npm(构建机器) 外部依赖 构建 Hua.Todo.Web 必备;缺失时 Host csproj Target 仅 Warning
01-项目架构.md §3 模式 B 端点划分表 已固化 本批次工单 05/06 的对齐基准

七、风险与回滚

风险 影响 应对策略
MCP 服务注册失败 无法对外提供服务 保留 HTTP API 作为降级方案
平台 STT 识别准确率不足 用户体验下降 提供文字输入作为备选方案
Linux STT 可用性差 Linux 语音控制不可用 Web Speech API 降级;或 vosk 离线模型
LLM API 不稳定 AI 拆分功能不可用 功能降级,语音指令其他部分不受影响
会议录音文件过大 上传超时/存储压力 前端限制最长 2 小时;压缩音频格式
浏览器 MediaRecorder 兼容性 部分平台录音不可用 降级提示使用文字输入
STT 转写准确率不足 会议纪要质量差 转写后支持用户编辑修正
工单 05 风险:架构文档与代码路径反复漂移 后续智能体又按旧路径改错文件 05 验收完成后,01-项目架构.md §2 ASCII 图顶部加"最后一次代码对齐时间戳";后续改架构章节必须更新时间戳 + 走 Glob 校验
工单 05 风险:抽离 AddCloudSyncServer 时丢 using/命名空间 Host 编译失败 改动范围严格控制在 CloudSync 两个文件;Program.cs 仅补 using;单步 build 验证后再提交
工单 06 风险:MapFallbackToFile 覆盖 /api 或 /swagger API/Swagger 全 404 中间件顺序严格按 §5 固定模板;集成测试同时验证 /、/settings(fallback)、/api/cloud-sync/probe(DynamicApi)、/swagger(Swagger UI)四个端点
工单 06 风险:CI 环境 npm 网络差/无 Node publish 超时或失败 MSBuild Target 加 Node 缺失检测 → Warning + 跳过;生产部署可在外层 CI 先 build 前端再 publish Host
工单 06 风险:增量构建 Inputs/Outputs 粗粒度 前端代码改了不重 build 或每次都重 build Inputs 精确到 **/*.{ts,vue,css,html} + package.json;Outputs 精确到 wwwroot/index.html,首次过 CI 后人工改一行 .vue 验证是否触发 rebuild

补充工单(追加于 2026-08-08)

工单 10 - 数据库初始化默认管理员

  • 目标:Host 服务端 DB Migrate 完成后自动创建默认管理员账号,免去手动调用 Bootstrap API
  • 范围:仅 Hua.Todo.Host;嵌入式模式(MAUI/Avalonia)不涉及
  • 关联:作为 06.1 服务端安全设计 Bootstrap 的自动前置项;与现有 BootstrapAdmin API 共存
  • 详见:10-数据库初始化默认管理员.md

创建日期:2026-06-15 修订日期:2026-08-08 版本:v1.3.0 修订说明(2026-08-08):新增架构对齐补充工单 05/06(01-项目架构.md §3 模式 B 端点划分表与代码实际不一致触发);所有新增条目均以"追加末尾"形式写入,未改动 2026-06-16 版本已有表格行和章节结构(符合 04-研发工单全流程规范 §2.1 已有文件不可触碰)。