diff --git a/AGENTS.md b/AGENTS.md index c3cb4d7..97d4bf8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -29,7 +29,7 @@ # GitNexus — Code Intelligence -This project is indexed by GitNexus as **a-share-analysis** (4210 symbols, 6274 relationships, 147 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. +This project is indexed by GitNexus as **a-share-analysis** (4266 symbols, 6330 relationships, 147 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/development-summary.md b/docs/features/FEAT-MO-005-market-structure-turnover/development-summary.md new file mode 100644 index 0000000..d3ab4ce --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/development-summary.md @@ -0,0 +1,52 @@ +# FEAT-MO-005 开发总结 + +- 功能编号:FEAT-MO-005 +- 日期:2026-08-25 +- 发布状态:未发布,当前分支已推送 Gitea + +## 原始开发需求 + +综合概览需要覆盖全部板块、题材和行业的涨跌幅排行、资金流入/流出排行,以及全天成交额趋势图;用户可点击进入详细分析,分时 K 线不作为本轮首页重点。 + +## 需求与范围变化 + +- 根据数据源探针结果,行业/题材/资金流保留固定 AKTools 适配,但当前不可用时必须保守降级。 +- 独立 API 继续按模块拆分,没有把整个首屏合并成一个聚合接口。 +- 板块分类未验证独立上游端点,因此保留切换入口但返回 `unavailable`。 +- 没有引入数据库、Redis、RocketMQ、AI 或用户体系。 + +## 实际完成需求 + +| 需求 | 状态 | 结果 | +| --- | --- | --- | +| 行业/题材/板块强弱排行 | 已完成 | 新增 `SectorRankingPanel`,支持分类、涨跌/成交额排序和详情事件。 | +| 资金流向排行 | 已完成 | 新增 `CapitalFlowPanel`,只展示上游明示净额,缺失值显示未提供。 | +| 全天成交额趋势 | 已完成 | 新增 `TurnoverTrendPanel`,支持累计亿元和 SVG 趋势线。 | +| 前端分类真实刷新 | 已完成 | composable 分类切换会重新请求对应 API。 | +| 既有模块兼容 | 已完成 | 指数、宽度、板块概览、量能和短线情绪均保留。 | + +## 修复缺陷 + +E2E 首次运行发现 `MarketStructureController` 未使用显式 Nest 服务注入,三个新路由因此返回 400。已增加 `@Inject(MarketStructureService)`,服务端回归测试和 E2E 均通过。 + +## 未完成与延期项 + +AKTools 交易时段实时性、行业/题材/资金流生产稳定性和独立板块数据源仍待验证;本轮不承诺实时生产数据。详情页 K 线和 AI 分析不在本功能范围。 + +## 关键提交 + +| 提交 | 内容 | 推送 | +| --- | --- | --- | +| `50b5266`..`b6a9f40` | 数据源探针、领域映射和契约 | 已推送 | +| `8174f3f`..`ad40fff` | 三路结构与成交额 API | 已推送 | +| `b95b9e5` | Web 数据层 | 已推送 | +| `64a9f2e` | 首屏面板、响应式样式、注入修复 | 已推送 | + +## 验证证据 + +- Web:14 个 Vitest 文件、39 个测试;类型检查通过。 +- Server:21 个 Vitest 文件、110 个测试及 Node 冒烟通过。 +- 根级 lint、Prettier、typecheck、test、build 通过;lint 仅有既有 Vue 风格 warning,无 error。 +- Playwright:桌面和 390px 移动视口共 4 项通过,无横向溢出和运行时错误。 +- 1440px/390px 截图已检查;AKTools 不可用状态展示符合降级设计。 +- GitNexus 提交前检测:中风险,10 文件/47 符号/1 条刷新流程,已完成回归覆盖。 diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/after.md b/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/after.md new file mode 100644 index 0000000..4f7274c --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/after.md @@ -0,0 +1,23 @@ +# GitNexus 开发后基线 + +## GitNexus 状态 + +```text +Repository: /Users/citrons/Documents/Codex/2026-08-12/wo-x/a-share-analysis +Indexed: 8/25/2026, 2:33:55 AM +Indexed commit: 64a9f2e +Current commit: 64a9f2e +Status: ✅ up-to-date +``` + +## Git 已跟踪变更摘要 + +```text +(没有未提交差异) +``` + +## Git 工作区摘要 + +```text +?? "SRMS3.6.0\345\270\270\350\247\201\351\227\256\351\242\230\346\265\213\350\257\204\351\242\230.2csv" +``` diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/comparison.md b/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/comparison.md new file mode 100644 index 0000000..35e3b51 --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/comparison.md @@ -0,0 +1,12 @@ +# GitNexus 前后对比 + +| 项目 | 开发前 | 开发后 | 判断 | +| --- | --- | --- | --- | +| 索引节点 | 4f5a56d 基线 | 4,210 nodes | 新增结构领域和前端组件已纳入索引 | +| 关系/流程 | 5,473 relationships / 115 flows | 6,274 edges / 147 flows | 新增组件调用与 API 流程,未改变既有核心数据源流程 | +| 提交影响 | 无本功能代码 | 10 文件、47 符号、1 条刷新流程 | 中风险,测试已覆盖 | +| 生产边界 | 无数据库/消息改动 | 仍无数据库、Redis、RocketMQ、部署改动 | 保持边界 | + +## 残余风险 + +GitNexus 只描述静态关系,不能证明 AKTools 交易时段新鲜度;该项由数据源探针和后续生产观测负责。 diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/detected-changes.md b/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/detected-changes.md new file mode 100644 index 0000000..91b5cb3 --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/gitnexus/detected-changes.md @@ -0,0 +1,13 @@ +# GitNexus 提交前变更检测 + +```text +命令:npx gitnexus detect-changes --scope staged --repo a-share-analysis +结果:10 files, 47 symbols +Affected processes: 1 +Risk level: medium +流程:Refresh → LoadModule(新增 refreshSectorRankings/refreshCapitalFlow) +``` + +## 结论 + +变更集中在市场概览页面、composable、结构面板和一个控制器注入修复;没有数据库、消息、缓存、部署或生产配置变更。中风险来自刷新执行流扩展,已由 composable 单测、服务端测试和 Playwright 覆盖。 diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/implementation-plan.md b/docs/features/FEAT-MO-005-market-structure-turnover/implementation-plan.md new file mode 100644 index 0000000..188c8f1 --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/implementation-plan.md @@ -0,0 +1,22 @@ +# FEAT-MO-005 实施计划 + +## 目标 + +在综合概览保留现有指数、市场宽度、板块概览、量能和短线情绪的基础上,增加行业/题材/板块排行、资金流向和全天成交额趋势,并让每个模块独立处理 `fresh`、`delayed`、`partial`、`unavailable`。 + +## 已执行步骤 + +1. 完成 TDX/AKTools 能力探针和脱敏记录。 +2. 建立市场结构领域类型、映射和 AKTools 固定端点客户端。 +3. 增加三个独立 Nest API 路由并生成 OpenAPI 契约。 +4. 接入 Web Axios API 分域和 composable 独立状态。 +5. 实现三个 Vue 面板、分类切换、轻量 SVG 趋势图和响应式样式。 +6. 完成服务端注入回归、组件测试、全量构建、E2E 和视觉检查。 + +## 约束与回退 + +不新增数据库、Redis、RocketMQ 或异步任务;不保存原始行情载荷;AKTools 未启用时页面展示不可用状态。若上游字段口径不明确,保持 `null`/`unavailable`,禁止从涨跌或成交额推导资金流。 + +## 安全策略与性能目标 + +复用既有服务端来源白名单、Axios 边界和脱敏错误。前端仅消费 Nest API,不接触 TDX/AKTools 地址或凭据。列表请求限制为 Top 100,排序和 SVG 点计算为线性复杂度,组件不引入新运行时依赖。剩余风险是免费上游在交易时段的稳定性和延迟尚未完成生产级验证。 diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/qa/test-results.md b/docs/features/FEAT-MO-005-market-structure-turnover/qa/test-results.md new file mode 100644 index 0000000..33d2b7f --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/qa/test-results.md @@ -0,0 +1,18 @@ +# FEAT-MO-005 测试结果 + +## 自动化结果 + +- `pnpm lint`:通过,0 error;仓库既有 Vue 风格 warning 未扩大为错误。 +- `pnpm format:check`:通过。 +- `pnpm typecheck`:Web/Server 均通过。 +- `pnpm test`:治理、契约、边界、部署、Web、Server 全部通过;Web 39 tests,Server 110 tests。 +- `pnpm build`:Web Vite 和 Server API/Scheduler/Worker 构建通过。 +- `pnpm verify:e2e`:4/4 通过,桌面 1440px 和移动 390px 均无横向溢出。 + +## 安全与性能证据 + +未新增凭据、原始载荷、生产地址或持久化写入。排行限制 1-100,前端仅通过 Axios 封装访问 API;SVG 趋势点计算和本地排序均为 O(n),n 为已限制返回项/点数。 + +## 失败处置 + +首次 E2E 发现三个结构路由返回 400,定位为控制器缺少显式服务注入;修复后服务端 21 文件/110 测试与 E2E 4 项全部通过。AKTools 在测试配置中禁用,结构和趋势模块按约定显示 unavailable,未伪造样本数据。 diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/qa/visual-qa.md b/docs/features/FEAT-MO-005-market-structure-turnover/qa/visual-qa.md new file mode 100644 index 0000000..cc929b1 --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/qa/visual-qa.md @@ -0,0 +1,18 @@ +# FEAT-MO-005 视觉 QA + +## 视口 + +- 桌面:1440 × 900,完整页面截图检查通过。 +- 移动:390 × 900,完整页面截图检查通过。 + +## 检查项 + +- 新增排行、资金流、成交额趋势和短线情绪模块按独立网格排列,无卡片嵌套。 +- 移动端网格变为单列,排行行的辅助字段隐藏,文字不溢出。 +- 不可用/延迟/部分数据状态使用既有警告样式,未出现空白或 `0.00` 伪造资金值。 +- 页面 `scrollWidth === clientWidth`,桌面和移动均无横向滚动。 +- 成交额趋势在真实 unavailable 状态显示原因;有点位时 SVG polyline 具备非空点集并保持固定高度。 + +## 残余风险 + +当前 AKTools 未启用,无法进行真实排行数据的视觉密度检查;后续上游可用时需复核长行业名称和 100 条列表边界。 diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/release-notes.md b/docs/features/FEAT-MO-005-market-structure-turnover/release-notes.md new file mode 100644 index 0000000..6caaf7c --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/release-notes.md @@ -0,0 +1,16 @@ +# FEAT-MO-005 发布说明 + +## 本次内容 + +- 综合概览新增行业、题材、板块强弱排行。 +- 新增行业/题材/板块资金流向面板,保留上游字段口径和缺失状态。 +- 新增全市场全天成交额趋势面板,单位为亿元,支持轻量 SVG 趋势线。 +- 分类切换触发独立 API 刷新,既有概览模块保持不变。 + +## 数据与限制 + +当前 AKTools 未启用或不可用时,相关模块显示 `unavailable`;未验证的板块端点不会伪造数据。该功能未引入数据库、Redis、RocketMQ、AI、用户体系或生产部署变更。 + +## 发布状态 + +代码已提交并推送分支 `codex/feat-mo-005-market-structure-turnover`,待合并和后续真实交易时段数据源验证后再发布。 diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/review/code-review.md b/docs/features/FEAT-MO-005-market-structure-turnover/review/code-review.md new file mode 100644 index 0000000..12be6fe --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/review/code-review.md @@ -0,0 +1,26 @@ +# FEAT-MO-005 代码 Review + +## 安全与残余风险 + +PASS。前端没有新增直连上游、凭据或原始响应暴露;组件只消费生成 DTO,资金缺失保持 `null` 语义。控制器显式注入服务,避免运行时未定义调用。残余风险为 AKTools 免费服务的授权、稳定性和交易时段延迟未经生产验证。 + +## 性能与资源影响 + +PASS。排行请求仍受服务端 Top 100 白名单限制,前端排序是有限数组上的 O(n),SVG 趋势点是 O(n),没有新增运行时依赖或持久化资源。全量构建和 E2E 已验证页面负载边界。 + +## GitNexus 与同步修改 + +PASS。GitNexus 检测为中风险,1 条刷新流程受影响;已同步更新 composable、页面、组件、样式和测试。HTTP/OpenAPI、数据库、Redis、RocketMQ、Scheduler、Worker、部署边界均按影响计划复核,只有已有结构 API 和 Web 消费者需要变更。 + +## 发现与处置 + +| 严重程度 | 发现 | 处置 | +| --- | --- | --- | +| Important | 新控制器未显式注入服务导致 E2E 400 | 增加 `@Inject(MarketStructureService)`,回归通过 | +| Minor | 上游资金流字段可能缺失 | 显示 `未提供`,禁止推导零值 | + +## 结论 + +代码符合当前设计和安全边界,未发现阻断发布的问题。 + +最终结论:passed diff --git a/docs/features/FEAT-MO-005-market-structure-turnover/review/standards-review.md b/docs/features/FEAT-MO-005-market-structure-turnover/review/standards-review.md new file mode 100644 index 0000000..b653106 --- /dev/null +++ b/docs/features/FEAT-MO-005-market-structure-turnover/review/standards-review.md @@ -0,0 +1,22 @@ +# FEAT-MO-005 开发规范 Review + +## 安全、性能与架构检查 + +PASS。实现沿用 Nest 业务模块、Axios request 封装和独立 API 文件夹;没有绕过前端请求边界,没有引入 Docker、数据库或消息依赖。中文注释覆盖数据口径和异常降级;响应列表、SVG 和分类请求均有明确边界。 + +## GitNexus 与开发总结检查 + +PASS。开发前影响计划、提交前检测、开发后索引和前后对比已归档;`development-summary.md` 明确记录原始需求、范围变化、完成项、缺陷、延期项、提交和验证证据。用户原有未跟踪 CSV 未被修改或纳入提交。 + +## Review 证据 + +- 中文 Conventional Commit:`feat(FEAT-MO-005): 展示市场结构与成交额趋势`。 +- 当前分支已推送项目 Gitea,未修改全局 Git 配置。 +- Schema 基线和开发库约束未被本功能绕过;本轮无数据库对象。 +- 根级验证、服务端/前端测试、构建和桌面/移动视觉检查均有记录。 + +## 结论 + +未发现违反项目代码开发规范、流程规范或文档追溯要求的问题。 + +最终结论:passed