rebuild(stage-5): establish market data gateway and charts

This commit is contained in:
leefer
2026-07-30 02:35:42 +08:00
parent 40ad5d6836
commit cf0ab7026f
45 changed files with 2701 additions and 46 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 131 KiB

+49
View File
@@ -0,0 +1,49 @@
# 阶段5验收记录
## 范围
本阶段建立唯一数据网关、数据源准入策略、交易日期与真实快照契约、标的目录、全局搜索、日K和分时图基础。情绪计算、五类股池和完整个股业务详情仍分别属于阶段6及后续阶段,本阶段不提前复制旧业务。
## 数据真相
- 每条可持久化图表序列保留标的、真实交易日、观测时间、来源、用途、单位、复权、覆盖率和实时/最终/归档状态。
- Tushare负责交易日历、股票目录和日线;iFinD优先用于展示图表;东方财富只允许进入展示分时兜底,策略和情绪计算会被策略层拒绝。
- 今天没有有效开高低收、成交量和成交额时,日K删除空的今日柱,继续显示最后真实交易日。
- 历史快照只按实际交易日返回;沿用旧快照时,接口同时返回请求日期、实际数据日期和沿用说明。
- 计算数据覆盖率不达标时失败关闭;从未同步时显示等待首次同步,不产生模拟数据。
## 搜索与图表
- `Ctrl+K`搜索经唯一浏览器API出口请求,160毫秒防抖,按股票、板块、题材、指数固定分组。
- 支持键盘上下循环、Enter打开、Escape关闭,并区分无输入、加载、空结果和失败。
- 桌面搜索结果提供最新日K预览,可切换分时;点击进入共用行情详情基础页。移动端点击进入详情,不依赖Hover。
- 日K上涨柱为空心且影线不穿实体,下跌柱为实心;分时提供昨收零轴和均价线,横轴契约固定09:30至15:00。
- 普通用户响应不包含供应商名称;行情管理保留管理员可见的凭据与基础资料同步入口。
## 减法证据
- 未复制旧`TushareClient``IfindHttpClient``MarketChartClient`;只迁移通用协议、授权刷新和必要归一化规则。
- 所有外部源通过一个`DataGateway`和一份`DataSourcePolicy`进入系统;页面没有直接访问供应商。
- 搜索预览与详情复用同一个图表组件和同一接口,不创建股票、板块、题材、指数四套图表实现。
- 新增后端最长文件为379行,未超过章程400行目标;CSS色值只存在于`tokens.css`
- 未将测试行情写入产品数据库,浏览器视觉样本由Playwright路由固定,仅用于前端验收。
## 自动验证
- Ruff:通过。
- pytest:46项通过,覆盖数据源准入、快照沿用、盘前空K线、iFinD顶层表格与过期授权刷新、搜索权限与固定分组、图表响应不泄露来源。
- Vue类型检查:通过。
- Vitest2个文件、5项通过。
- Vite生产构建:通过。
- Playwright3项通过,覆盖既有Shell回归,以及摘要、搜索、日K预览、详情、分时零轴、日夜主题、1920×1080和390×844视口。
- 密钥扫描:已提供账号密码与令牌均未进入`next/`;组件CSS未发现令牌外色值。
## 截图
- [日间搜索与日K预览 1920×1080](search-preview-light-1920x1080.jpg)
- [夜间分时详情 1920×1080](entity-detail-dark-1920x1080.jpg)
- [夜间移动分时详情 390×844](entity-detail-dark-390x844.jpg)
## 后续入口
阶段6将使用本阶段的交易日期、摘要存储和数据质量门实现情绪周期与五类股池。只有阶段6的确定性行情任务可以写入正式市场摘要,展示兜底源不能借图表接口进入计算。
Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB