README 补 HTTP 接口表与里程碑真实状态,设计文档路径纠正;新增 CLAUDE.md 项目指引

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
zlt 2026-09-02 11:50:59 +08:00
parent 386f28e8e5
commit 28c3a319ae
2 changed files with 82 additions and 7 deletions

60
CLAUDE.md Normal file
View File

@ -0,0 +1,60 @@
# CLAUDE.md — akg-factor-bridge 项目指引
本文件写给之后在这个仓库工作的 Claude 会话。先读完再动手。
## 一句话定位
数据底座 astock-kg 与通用因子平台 quant_factor_service 之间的因子导出桥:基座只暴露只读视图,桥算全部子因子并在桥内合成复合因子 akg_score写平台因子表并注册元数据平台管存储、调度、评价。桥不 import 两边任何代码,靠 .env 三处数据库连接独立工作。
## 文档地图(先读哪份)
- 唯一事实源docs/量化因子导出与合成设计.mdv2.0。注意astock-kg 仓库 docs/ 下的同名文档是 v1、方案已被推翻别读。
- README.md架构、六因子口径、HTTP 接口表、用法、上游约束、里程碑状态。
- docs/选股说明_下游对接.md选股计划的业务逻辑与下游对接。
- docs/选股计划入池_对接说明.md与决策系统夜间推理的对接含池深与 PMS 下单候选深度的关系,第 7 节)。
## 部署与联动2026-09-01 现状)
- 桥部署在 192.168.16.155 的 8300 端口,常驻容器跑 uvicorn**无热加载**:代码更新要在桥机拉代码并重启桥容器(重启前须经用户同意,避开每早 07:10 因子构建窗口)。
- 上游astock-kg 基座PG 视图 sql/astock_kg_slot_views.sql基座机 tlai4090 即 192.168.16.178SSH 端口 2280用户 tlai
- 下游甲:决策系统 bionic_trader192.168.16.188:38000每晚认知扫描读 Mongo 股票池分组 AKG_PLANpool.py push 写入)。
- 下游乙PMStradingSystem 仓库)建仓不读 Mongo 池,直接调本桥 GET /plan 取主榜前 PMS_PLAN_TOP_N 名做下单候选。
- 基座前端今日页的交易计划、个股页的计划判决,都代理本桥接口(基座 .env 的 AKG_BRIDGE_BASE
- 时区:容器与各服务器为国际时间,调度排程按北京时间,谈时间先说清是哪一路。
## 纪律(历次用户令,逐条必守)
1. 全程 Docker不在宿主机直跑 pip、python、psql。开发机没有 Python 依赖环境是常态,需要真实依赖的测试用一次性容器跑(见下)。
2. 只读优先分析、对账、体检工具全是纯查询写路径只有因子表写入common.write_factor、计划文件生成与 Mongo 入池pool.py push。动写路径前想清楚。
3. 口径变更先看数据:改 UPSIDE_NEG_TOLERANCE、POOL_THEME_CAP 这类口径旋钮之前,先跑 score_lab.py 对比器拿读数,改口径属拍板事项。
4. 代码里"勿回退"注释都是实测教训(例:观察档下界、锚强度排序),改动碰到就先读注释里的案例。
5. 交易系统或因子平台仓库有哨兵断言测试,其登记清单已丢失:往平台侧加表、加调度前,必须先在那边仓库重建登记清单再动手。
6. 提交信息用中文短句说清楚做了什么。
## 测试(改完必跑)
纯逻辑单测三个不连库。test_plan_verdict.py 全离线,开发机系统 Python 直接跑;另两个需要 pandas 与 fastapi 实体,在有 Docker 的机器用一次性容器跑全套:
# 开发机(零依赖,秒出)
python3 test_plan_verdict.py
# 基座机 tlai4090全套三个一次性容器跑完即弃
rm -rf ~/akg_tmp_bridge_test && git clone -q git@192.168.18.24:zlt/akg-factor-bridge.git ~/akg_tmp_bridge_test && docker run --rm -v ~/akg_tmp_bridge_test:/w -w /w python:3.12-slim bash -c "pip install -q -r requirements.txt; for t in test_plan_verdict.py test_pool_logic.py test_xxl_trigger.py; do echo == \$t ==; python \$t || exit 1; done"; docker run --rm -v ~/akg_tmp_bridge_test:/w python:3.12-slim rm -rf /w/data /w/__pycache__; rm -rf ~/akg_tmp_bridge_test
预期:三个测试分别打出 ALL OK 与 ALL PASS。2026-09-01 实测全过。
## 代码地图
- run.py命令行入口views 自检、register 注册、build 构建、freeze 冻结、apply-views 建视图、probe 体检、push-pool 入池)。
- factors.py六因子构建器upside、heat、event、transmission、gate、score与事件极性表。
- plan.py当日计划装配与渲染collect、generate
- pool.py计划写 Mongo 股票池 + 触发决策系统增量补扫decide 是入池决策纯函数,有单测)。
- plan_reconcile.py逐票对账explain 命令行与结构化判决verdict供 API同一段判决代码两种出口。
- api.py常驻 HTTP/plan、/plan/verdict 等,端口 8300
- xxl.pyXXL-JOB 调度触发入口(子进程执行保证每次重读 .env
- freeze.py每日输入冻结可复现性的落地件manifest.json 是审计线)。
- tracks.py赛道三路映射解析。score_lab.py口径对比器。probe.py、chain_diag.py体检工具。
## 已知上游约束
README"已知的上游约束"一节列了三条要在 astock-kg 侧修的quiet 截断、成员抽样无排序、行情快照日错位)与传导覆盖偏低的主因(板块级异动源缺失),桥侧只告警、修不了。

View File

@ -5,7 +5,7 @@ astock-kg知识图谱基座↔ `quant_factor_service`(通用因子平台
子因子;**复合因子 `akg_score` 在桥内用自洽的景气度漏斗算出**,平台只负责注册/存储/ 子因子;**复合因子 `akg_score` 在桥内用自洽的景气度漏斗算出**,平台只负责注册/存储/
调度/评价,不参与合成。 调度/评价,不参与合成。
> 设计与决策依据见本工程根目录 `量化因子导出与合成设计.md`v2.0,唯一事实源)。 > 设计与决策依据见本工程 `docs/量化因子导出与合成设计.md`v2.0,唯一事实源)。
> ⚠️ `astock-kg/docs/` 下的同名文档还是 v1讲的是**已被推翻**的平台拟合合成方案,别读。 > ⚠️ `astock-kg/docs/` 下的同名文档还是 v1讲的是**已被推翻**的平台拟合合成方案,别读。
> 本工程**不 import** 基座或平台任何代码,只靠 `.env` 里三处数据库连接工作, > 本工程**不 import** 基座或平台任何代码,只靠 `.env` 里三处数据库连接工作,
> 可单独部署于任意能连通三库的服务器。 > 可单独部署于任意能连通三库的服务器。
@ -162,10 +162,25 @@ docker compose exec akg-factor-bridge python run.py freeze --date 2026-07-24
`source_type` 不是这个字符串,事件因子会被过滤成空(会显式告警),按实际值改 `source_type` 不是这个字符串,事件因子会被过滤成空(会显式告警),按实际值改
`EVENT_SOURCE_TYPES` `EVENT_SOURCE_TYPES`
## 未完成(设计 §8 里程碑 ## HTTP 接口(桥常驻 API端口 8300全部只读除 refresh
- **G2**`config/frontier_tracks.yml` + `tracks.py` + `data/track_members.csv` | 端点 | 作用 |
(赛道门槛 C需要基座先出第五/六个插槽视图 `v_factor_segment_members` / |---|---|
`v_factor_segment_edges`——`industry_pools` 成员级没有 segment/layer图谱在 Neo4j | `GET /health` | 存活探针 |
- **G3**:漏斗合成 `akg_score` + `akg_gate`0/1 全池出行,让平台分层能读出门槛的价值)。 | `GET /plan/dates?limit=30` | 有计划文件的日期清单 |
- **G4**回填与仪表盘upside 历史重建走「给基座 `sync_consensus``asof` 参数」)。 | `GET /plan?date=&format=json\|md&top=&obs_top=` | 当日选股计划(基座今日页 `/plan/today` 与 PMS 下单候选都读它) |
| `POST /plan/refresh?date=` | 重生成当日计划文件 |
| `GET /plan/verdict?codes=300750,SH600438&date=` | 逐票『计划判决』2026-08-18 PMS 对接加decisionmain/observe/reject/absent+ 与命令行 `plan_reconcile` 逐字同口径的 verdict_text + score/rank/tier/赛道/图谱证据。单票数据异常或代码形态认不出只报该票 error不崩整批 |
| `GET\|POST /api/v1/xxl/daily-build?key=&steps=&date=` | XXL-JOB 平台触发盘前链build→plan→push-pool白名单步骤、单实例互斥、回调结案`.env` 不配 `XXL_TRIGGER_KEY` 则整组禁用 |
逐票对账的命令行形态(同一段判决代码):
`docker compose exec -T akg-factor-bridge python plan_reconcile.py 300750 [--date 2026-08-04]`
## 里程碑状态(设计 §8
- **G2 赛道门槛 ✅**`config/frontier_tracks.yml` + `tracks.py`,三路映射
(环节锚 > 链锚 > 主题弱锚),基座插槽视图 `v_factor_segment_members` 已就位。
- **G3 漏斗合成 ✅**07-30 拍板):`akg_gate` + `akg_score``FACTORS`
`build all` 一并日更;两锚三档 + 两段式组内分。
- **G4 回填与仪表盘(未完成)**upside 历史重建走「给基座 `sync_consensus`
`asof` 参数」,动工前先与基座侧排期。