chore(task): 归档 08-10 与 08-11 任务

This commit is contained in:
yuxuanhui
2026-08-11 13:32:21 +08:00
parent 8f5f504368
commit dd04933d63
33 changed files with 788 additions and 5 deletions
@@ -0,0 +1,5 @@
{"file":".trellis/spec/frontend/hook-guidelines.md","reason":"检查请求适配、query key、取消和 polling 终止逻辑。"}
{"file":".trellis/spec/frontend/state-management.md","reason":"检查没有复制服务器状态或引入不必要全局状态。"}
{"file":".trellis/spec/frontend/quality-guidelines.md","reason":"检查格式、lint、typecheck、Vitest 和 build 证据。"}
{"file":".trellis/tasks/08-11-market-integrity-check-web/prd.md","reason":"逐条核对导航、触发、轮询、恢复、报告和错误态。"}
{"file":".trellis/tasks/08-11-market-data-sync-performance-audit/design.md","reason":"检查前端与已冻结 HTTP 契约及只报告边界一致。"}
@@ -0,0 +1,26 @@
# 同步任务检查页面设计
## Feature 接口
新增 `features/sync/api` 三件套:types、request adapters、React Query hooks。页面只调用 hooks;
query keys 统一以 `marketIntegrity` 开头。
- latest query:进入页面获取最近检查;
- check query:running 时按 id 周期轮询,终态停止;
- trigger mutation:POST 成功后写入/失效相关 query cache 并切换到该 id。
## 页面状态
- `no_data`:解释检查范围并提供“开始完整性检查”。
- `running`:进度条、checked/target、问题数、开始时间,按钮禁用。
- `passed`:完成摘要和“未发现 PostgreSQL/CSV 不一致”。
- `issues_found`:完成摘要、只报告提示和分页问题表。
- `failed`:安全错误、重新发起入口;不会声称市场数据损坏。
409 时刷新 latest 并接管已有 running;其他错误保留 ApiError 状态和用户可见重试。页面刷新通过 latest
恢复 active id,不需要 localStorage/Zustand。
## 路由与可访问性
`/sync` 加入 route tree、navigation 和 routePresentation;AppLayout active route 识别该路径。按钮、
进度、状态和问题列表使用可访问标签,焦点不因 polling 被重置。
@@ -0,0 +1,5 @@
{"file":".trellis/spec/frontend/directory-structure.md","reason":"按 sync feature 垂直切片组织 API、hooks、页面和测试。"}
{"file":".trellis/spec/frontend/hook-guidelines.md","reason":"实现 query key、AbortSignal、mutation 和条件 polling。"}
{"file":".trellis/spec/frontend/state-management.md","reason":"服务器检查状态只进入 React Query,不复制到 Zustand。"}
{"file":".trellis/spec/frontend/component-guidelines.md","reason":"实现可访问状态、进度、按钮和分页问题展示。"}
{"file":".trellis/tasks/08-11-market-integrity-check-web/design.md","reason":"定义页面状态机、409 接管、刷新恢复和路由行为。"}
@@ -0,0 +1,10 @@
# 实施计划
1. 根据已冻结 OpenAPI/后端测试响应定义 sync types 和 API adapters,先写 request contract tests。
2. 实现 latest/check queries、trigger mutation 和终态停止 polling。
3. 新增 Sync page 的 no_data/running/passed/issues_found/failed 展示和问题分页。
4. 启用 navigation、route tree、route presentation 与 AppLayout active path。
5. 补页面刷新恢复、409 接管、503/网络错误、只报告提示和可访问性测试。
6. 运行 `pnpm format:check`、`pnpm lint`、`pnpm typecheck`、`pnpm test`、`pnpm build`。
回滚点:`/sync` route 与导航启用可独立回滚,不影响首页和 selection。
@@ -0,0 +1,35 @@
# 实现同步任务检查页面
## Goal
启用现有“同步任务”导航,让用户主动触发只读市场数据完整性检查,并持续查看进度、终态和分页问题报告。
## Dependencies
- 依赖 `08-11-market-integrity-check-api` 冻结路径、字段、状态和错误码后开始实现。
## Requirements
- 新增 `/sync` 路由和 `features/sync` 垂直切片,启用桌面/移动导航入口。
- 页面明确说明检查只比较 PostgreSQL/CSV,不访问 Tushare、不自动修复。
- 无历史检查时可触发;running 时显示进度并禁用重复触发;终态停止轮询。
- 展示 passed、issues_found、failed 状态、窗口、checked/target、问题数和时间。
- 问题报告分页展示对象类型、对象 key、问题类型和安全说明。
- 409、503、网络错误和刷新页面后的 running 恢复均有可见行为。
- 服务器状态只放 React Query,不复制到 Zustand。
## Acceptance Criteria
- [ ] 导航“同步任务”可用并正确激活 `/sync` route presentation。
- [ ] 点击检查调用一次 POST,显示 accepted/running,并轮询返回的 check id。
- [ ] running 时按钮禁用;终态停止 polling 并展示正确状态与进度。
- [ ] 页面刷新后能从 latest running 恢复轮询。
- [ ] issues_found 展示分页问题;passed 显示无问题;failed 显示安全错误和重试入口。
- [ ] 页面存在明确的“只报告、不自动修复”提示。
- [ ] API adapter、query/mutation 和页面测试通过;格式、ESLint、TypeScript、Vitest、build 全部通过。
## Out of Scope
- 不提供自动修复按钮或直接启动 Tushare 同步。
- 不在本任务中重做首页市场概览。
- 不新增全局任务中心或 Zustand 服务器状态。
@@ -0,0 +1,26 @@
{
"id": "market-integrity-check-web",
"name": "market-integrity-check-web",
"title": "实现同步任务检查页面",
"description": "启用同步任务导航,提供触发、轮询、进度和异常报告页面。",
"status": "completed",
"dev_type": null,
"scope": null,
"package": null,
"priority": "P2",
"creator": "yuxuanhui",
"assignee": "yuxuanhui",
"createdAt": "2026-08-11",
"completedAt": "2026-08-11",
"branch": null,
"base_branch": "main",
"worktree_path": null,
"commit": null,
"pr_url": null,
"subtasks": [],
"children": [],
"parent": "08-11-market-data-sync-performance-audit",
"relatedFiles": [],
"notes": "",
"meta": {}
}