feat: 完成v1.3.0架构对齐与Web端根路径托管全量开发
- 重构架构:抽离AddCloudSyncServer到扩展类,补全中间层文档对齐 - 修复根路径404与鉴权跳转:新增中间件处理浏览器请求302跳转 - 实现种子数据初始化:添加默认管理员账号自动创建逻辑 - 优化前端代理与构建:新增Vite代理配置与自动构建Target - 补全测试与文档:新增集成测试,更新开发与部署文档
This commit is contained in:
@@ -9,9 +9,9 @@
|
||||
|
||||
---
|
||||
|
||||
## 一、当前活跃版本
|
||||
## 一、当前活跃版本(2026-08-08 快照)
|
||||
|
||||
- **进行中版本**:v1.2.0(收尾中)、v1.3.0(规划中)
|
||||
- **进行中版本**:v1.2.0(收尾中)、v1.3.0(开发中)
|
||||
- **v1.2.0 研发工单总览**:[docs/project/研发工单-v1.2.0/00-工单总览.md](../../../docs/project/研发工单-v1.2.0/00-工单总览.md)
|
||||
- **v1.3.0 研发工单总览**:[docs/project/研发工单-v1.3.0/00-工单总览.md](../../../docs/project/研发工单-v1.3.0/00-工单总览.md)
|
||||
- **PRD**:[docs/project/产品需求文档-1.2.0.md](../../../docs/project/产品需求文档-1.2.0.md)
|
||||
@@ -31,6 +31,7 @@
|
||||
| 07 - 文档同步与验收 | 进行中 | 进行中 | README/docs 已基本对齐;术语对照刚完成 |
|
||||
| 08 - cloud_sync 重构 | 已设计 | 待实现 | "同源 Host"方案,Vite proxy 补 `/auth` `/tasks` `/sync` `/security` `/cloud-sync` |
|
||||
| 09 - CloudSync 同步策略改进 | 已实现 | 待验证 | TaskEntity 继承 ABP 基类;软删除修复(SaveChangesAsync);前端类型和 cloudSync.ts 已更新;新增 guid.ts |
|
||||
| 10 - 数据库初始化默认管理员 | 待实现 | 待验证 | Host 服务端 DB Migrate 后自动创建默认管理员;仅 Host 模式;配置驱动 + 幂等 + 强制首登改密;作为 06.1 Bootstrap 自动前置项。详见 [10-数据库初始化默认管理员.md](../../../docs/project/研发工单-v1.2.0/10-数据库初始化默认管理员.md) |
|
||||
|
||||
## 三、v1.3.0 工单状态快照
|
||||
|
||||
@@ -44,6 +45,8 @@
|
||||
| 03-03 - AI 任务拆分服务 | 待开始 | 待验证 | 会议专用 LLM prompt + 批量创建子任务 |
|
||||
| 03-04 | 任务建议与确认 UI | 已完成 | 待验证 | MeetingBreakdownDialog.vue + meeting.ts 拆分/确认 API;待集成到 TaskItem |
|
||||
| 04 | 富文本描述、附件与外部链接 | 已完成 | 待验证 | Description 字段 + AttachmentEntity 模型 + 附件 CRUD API + 外部链接 + 平台文件打开器(Maui/Avalonia)+ 前端类型和 API 模块完善 + EF 迁移 + 19 个单元测试通过 |
|
||||
| 05 | 架构文档与代码实际路径对齐 | 已完成 | 已验证 | 01-项目架构.md §1 补 HttpApi.AspNetCore 条目、§2 ASCII 依赖图加中间层、§5 修复 3 个扩展点路径;代码侧:抽离 AddCloudSyncServer 到 CloudSyncServiceCollectionExtensions.cs;设计修正:MapCloudSyncProxySettings 手动端点已废弃,由 ICloudSyncProxySettingsService(IDynamicApiService)自动暴露,清理 v1.3.0 00-工单总览 Host 中间件顺序末尾的 MapCloudSyncProxySettings;模式 B 中间件顺序硬约束文档化为 Swagger→StaticFiles→CORS→Authentication→Authorization→UseDynamicApi→MapMcpServer→MapFallbackToFile→Run |
|
||||
| 06 | Web 端根路径托管前端 | 已完成 | 已验证(4 场景集成测试) | Host Program.cs 加 UseDefaultFiles/UseStaticFiles/MapFallbackToFile("index.html"),顺序严格对齐硬约束;Host.csproj 加 BuildHuaTodoWebWebRoot Target(增量 npm build + 双 wwwroot 拷贝 + Node 缺失 Warning + SkipBuildHuaTodoWebWebRoot 开关);docs/manual/06-开发环境与构建.md 新增「模式 B 双开」「1.4 BuildHuaTodoWebWebRoot 自动构建说明」「3.0 部署构建流程」三节;v1.3.0 00-工单总览补充 6 条 Given-When-Then 验收表;WebRootStaticFileTests.cs 4 个集成测试覆盖根路径、SPA fallback、/api 不覆盖、Swagger 不覆盖 |
|
||||
|
||||
## 四、关键临时决策
|
||||
|
||||
@@ -54,7 +57,10 @@
|
||||
|
||||
## 五、已知未完结事项 / 待办
|
||||
|
||||
- [x] v1.3.0 工单 05 - 架构文档与代码实际路径对齐:已完成(文档 + 代码抽离 + 中间件顺序约束文档化)
|
||||
- [x] v1.3.0 工单 06 - Web 端根路径托管前端:已完成(Program.cs 三中间件 + Host.csproj BuildHuaTodoWebWebRoot Target + docs 双开指南 + 4 场景集成测试)
|
||||
- [ ] 06 客户端"内存模式"在 `allowPersist=false` 时的端到端落盘清理(含 token、同步队列)尚未充分验证
|
||||
- [ ] 工单 10 - 数据库初始化默认管理员:待实现 `IDataSeeder`/`DataSeeder` + Host Program.cs 集成 + `AdminBootstrapOptions` 配置 + 测试先行(详见 [10-数据库初始化默认管理员.md](../../../docs/project/研发工单-v1.2.0/10-数据库初始化默认管理员.md))
|
||||
- [ ] 06.1 设计中的 Admin 管理后台前端(位于 `Hua.Todo.Host/wwwroot/admin/`)当前仅有 `index.html` 占位,需 Vue 3 + Vite 实现
|
||||
- [ ] 08 同源 Host 改造:`cloudClient.ts` 的 baseURL 解耦、Vite proxy 端点补全
|
||||
- [ ] Linux Flatpak/AppImage 自包含产物在干净环境的实测验证(v1.2.0 验收 Linux 部分仍为"待验证")
|
||||
@@ -89,6 +95,12 @@
|
||||
7. 清理测试项目中的 SkipCloudSync 排除
|
||||
- **验证**:Application(net10.0 + net10.0-android) + Host + MAUI(Windows + Android) 全部 0 错误;152 个测试全部通过
|
||||
|
||||
- [x] Host 双角色统一部署路由与鉴权流修补(2026-08-08,对应用户反馈三条问题):
|
||||
- **问题 1:根路径 404** → 修复:`Hua.Todo.Host/Program.cs` 新增 `MinimalBootstrapPageMiddleware`,前端 index.html 缺失时,访问 `/` 与 SPA 路由返回中文引导页(含三种修复方式 + 可继续使用的 API/Swagger/MCP 入口),不再 404
|
||||
- **问题 2:没权限应跳登录页** → 修复:`DynamicApiMiddleware` 新增 `WriteUnauthorizedResponse/WriteForbiddenResponse/IsBrowserHtmlRequest`,GET/HEAD + Accept:text/html 且非 XMLHttpRequest → 302 Location="/" 跳回 Host 前端 SPA,SPA 判断未登录 → 弹 `CloudSyncSettingsDialog`;Accept:json 或非 GET/HEAD → 保持原 401/403 JSON(不破坏 axios/fetch 拦截器)
|
||||
- **问题 3:Host 部署不区分模式** → 修复:`01-项目架构.md` 模式 B 章节重写为"Host 双角色统一部署 = (1) Web 端前端/后端同源 + (2) 云同步权威服务端",端点扩展为 4 项(/、/api、/mcp、/swagger+/admin),新增中间件顺序硬约束说明
|
||||
- **验证**:`HostBootstrapAndAuthRedirectTests.cs` 6 个 ATDD 测试全部通过 + 原 `WebRootStaticFileTests.cs` 4 场景全部通过;`GetDiagnostics` 0 编译错误
|
||||
|
||||
## 六、最近一次重大重构(如有)
|
||||
|
||||
- **术语统一与目录中文化**(2026-06):
|
||||
|
||||
Reference in New Issue
Block a user