3.7 KiB
3.7 KiB
板块资金雷达实现依据
已选择的产品边界
用户选择 Tushare 独立生产 MVP,并确认具备 Tushare 权限。生产运行时不依赖 OneChartLab;公开 payload 只用于验证公开契约、构造固定样本和对账。未公开公式必须使用知行系统自己的策略名称与版本。
仓库复用点
- 后端采用
modules/<bounded_context>/{domain,application,infrastructure,presentation},依据docs/adr/0001-bounded-context-first-modular-monolith.md和.trellis/spec/backend/directory-structure.md。雷达应创建独立 bounded context。 market_data.infrastructure.tushare.RequestCoordinator已实现供应商请求冷却、退避和有限重试;TushareAdapter已使用注入的pro_api(token)client。相关实现位于zhixing-server/src/zhixing_server/modules/market_data/infrastructure/tushare.py:40-126,235-377。SyncMarketData已实现 advisory lock、批次审计、部分成功和定向重试,位于zhixing-server/src/zhixing_server/modules/market_data/application/sync.py:150-165,255-261,408-532。- PostgreSQL 适配器已有连接池、事务、staging + COPY 和幂等 upsert 模式,位于
zhixing-server/src/zhixing_server/modules/market_data/infrastructure/postgres.py:26-57,296-401,769-925。 - FastAPI 业务路由由
zhixing-server/src/zhixing_server/interfaces/http/router.py:10-18统一挂载;浏览器固定使用同源/api/v1。 - 前端垂直切片、路由和页面状态模式分别见
zhixing-web/src/routes/route-tree.tsx:17-70、zhixing-web/src/features/home/api/、zhixing-web/src/features/home/pages/home-page.tsx。当前没有图表依赖,因此首个 MVP 不加入轨迹图。 .codegraph/不存在,跨文件影响分析只能使用源码、测试和rg。
当前 Tushare 客户端核验
项目声明 tushare>=1.4.24,见 zhixing-server/pyproject.toml:7-16。2026-08-28 通过 Context7 解析 /waditu/tushare 与 /websites/tushare_pro,确认:
ts.pro_api(token)创建DataApi;客户端query(api_name, fields, **kwargs)把接口名、token、参数和字段列表发送到服务端。- 客户端本身不执行积分、权限、频率或行数限制;这些限制由 Tushare 服务端返回。因此采集 Job 必须记录安全错误类别、响应行数和覆盖率,并在返回数接近单次上限时分片重拉。
- 不采用
set_token()的用户目录持久化方式;项目继续通过Settings注入 token,避免凭据落盘或进入任务文档。
Context7 对具体板块接口的字段覆盖有限,接口字段、单位、历史边界和 2026-08-28 权限快照继续以 docs/research/onechartlab-tushare-data-requirements.md 所列 Tushare 第一方页面为实现依据。上线前由目标账号执行能力探测,不能把文档积分视为账号实测结果。
独立指标契约
zhixing_amount_net_bn_v1:对当日有效成员的moneyflow_dc.net_amount求和,由万元除以 10,000 转为亿元;它是待公开样本对账的独立聚合,不宣称原站等价。zhixing_ratio_turnover_v1:先统一为元,再计算板块sum(net_amount) / sum(daily.amount);分母为零或输入缺失时返回 NULL。zhixing_swing_equal_3_10_v1:对窗口 3—10 个交易日分别计算sum(net_amount) / sum(turnover),再对八个完整窗口等权平均。任何窗口不完整时该指标不可用。该公式是透明、可替换的知行独立实现,不是 OneChartLab 的 3—10 日权重或Swing_Score。- 横截面排名按指标值降序、板块代码升序稳定打破并列;概念与行业独立成池。
RankPct、TOP/BOTTOM 阈值和PastRank - CurrentRank复用公开确认算法。