diff --git a/BIONIC_PMS_INTERFACE.md b/BIONIC_PMS_INTERFACE.md index a0e5fe3..286ab59 100644 --- a/BIONIC_PMS_INTERFACE.md +++ b/BIONIC_PMS_INTERFACE.md @@ -300,8 +300,28 @@ docker compose run --rm --no-deps pms-web python scripts/probe_bionic.py --base | V1.0 | 2026-08-03 | 首版定稿并双侧落码。择时部分是一套盘中判定规则(资金阈值、动量追买等) | | V1.1 | 2026-08-03 | 按用户审核意见重做择时:删掉 V1.0 的盘中判定规则(违反「提前计算为主、盘中监控为辅、不另做盘中判断、可以接受买不上」),改为由昨夜支撑压力推出执行区间、盘中只做区间比对与当日监控核对;研判留痕不再写 `decision_ledger`(每晚判分全表扫描,已核实);文档与代码注释清理生造词 | | V1.2 | 2026-09-08 | 量价研判链(《量价研判链吸收方案_2026-09-08》):请求侧硬数字白名单多送 `events_text`、`pricing_text` 两句整句(催化事件与定价状态,事件与量价不是产业逻辑);应答侧新建仓研判可并列多带 `pv_heads`(`h5`、`h20` 各含 `score` −1 到 1、`direction` 看多/中性/看空、`justification`),PMS 归一后进提议硬数字 `judge_pv_heads`,只显示不触发;三值 verdict 口径不变,缺 `pv_heads` 就是 None,向下兼容 | +| V1.3 | 2026-09-09 | 公司深度整句(详见下节):研判请求硬数字新增 `company_review_text`,开关 `PMS_JUDGE_COMPANY_TEXT` | +| V1.4 | 2026-09-11 | 技术面只读接口(详见下节):PMS 新接一个取全市场技术面读数的只读接口;研判请求体一字不变,技术面整句不送研判 | ### 7.x 2026-09-09 公司深度整句(V1.3) - 研判请求的硬数字新增 `company_review_text`(选股系统写好的整句:质地档与三类、十视角计数、买方论点一句、置信度、失效条件、报告链接)。 与 `verdict/reasons` 同一性质:上游结论送去让研判对照,研判不重判质地。PMS 侧开关 `PMS_JUDGE_COMPANY_TEXT`(默认开)关掉即不送。 - bionic 侧不需要改:硬数字逐键渲染进提示词。应答形状不变。 + +### 7.x 2026-09-11 技术面只读接口(V1.4) + +决策系统每晚扫全市场,给每只票算布林线、多空布林线、SAR 三个指标。持仓管理系统盘前很早(06:30)拉一次落表,供三源合议里技术面这一票用。这是只读取数,不产生指令,技术面整句也不送研判(决策系统夜里自己算过一份,两份读数可能不一致)。 + +**接口。** `GET {根地址}/api/v1/market/technical?limit=&offset=`。根地址取持仓管理系统侧参数 `PMS_TECH_API_BASE`,留空时沿用研判接口根地址 `PMS_JUDGE_API_BASE`(同一台决策系统)。分页用 `limit` 与 `offset`,逐页拉到取满外层的 `matched`。 + +**应答外层。** `status`(只有 OK 才落表)、`data_date`(读数日 YYYYMMDD,北京日期)、`computed_at`(算完时刻,北京时间)、`algo_version`、`scanned_total`、`scanned_available`、`matched`、`count`、`limit`、`offset`、`warnings`、`items`。 + +**每只票(items 内一项)。** +- `stock_code`:交易所前缀式,如 `SH600000`。持仓管理系统落库前归一成点式 `600000.SH`。 +- `stock_name`。 +- `boll`(布林线):`upper`、`mid`、`lower`、`bandwidth_pct`(带宽百分比)、`pos`(价格在带内位置,0 到 1)、`state`(文字态,如「带内偏上」)、`squeeze`(是否收口,布尔,接口直接给)。 +- `bbiboll`(多空布林线):`bbi`(中枢)、`upper`、`lower`、`pos`、`state`(多头区 / 中性区 / 空头区)、`dist_pct`。 +- `sar`:`value`(止损位)、`side`(多 / 空)、`flip_days`(本次翻向后经过的交易日数)、`dist_pct`。 +- `reanchored`(是否做了除权重锚)、`in_pool`(是否在夜间分析池)、`quality`(数据质量,OK 才用)、`bars_used`、`last_bar_date`、`bars_lag`。 + +**持仓管理系统侧怎么用。** 存进 pms_tech_daily 保留 40 个交易日;相位合成与五个阈值见该系统台账 006。四种无读数情形(没有当天行、读数超过两个交易日、未除权重锚、数据质量非 OK)一律弃权,绝不折成看空。本接口不改变研判请求体,研判闸的请求一字不变。 diff --git a/DEVLOG.md b/DEVLOG.md index 9d28865..89c6c05 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -1316,6 +1316,35 @@ PMS_JUDGE_ONLINE_EFFORT=low / PMS_JUDGE_ONLINE_MAX_TOKENS=16384 / PMS_JUDGE_REPA 4. trading_position 表写入方与 QMT 不同步照旧待与 QMT 侧核对; 155 上四周前的残留 一次性容器 tradingsystem-pms-web-run-a4f4a87e7662 (unhealthy) 建议顺手删掉。 +--- + +## 2026-09-11 · 技术面接入工作包一:技术面这一路打通(后端,未真机判收) + +**做了什么** +落地《技术面接入与三源合议方案_2026-09-11》第五节工作包一的后端部分,让每只票多出一份结构化的技术面立场。数据来自决策系统新开的全市场技术面接口。 +- 先只读探活了 188 的接口 `GET /api/v1/market/technical`,坐实字段形状:外层是 status、data_date、algo_version、matched、items;每只票带 boll(含 squeeze 收口布尔、bandwidth_pct、pos、state)、bbiboll(含 state 多头区/中性区/空头区)、sar(含 side 多空、flip_days 翻向天数、value 止损位)、reanchored、quality。代码是 SH600000 式,落库前归一成点式 600000.SH。 +- 新表 pms_tech_daily 存全市场每日读数,唯一键是读数日加代码,保留 40 个交易日。存全市场而非只存持仓与候选,是因为新进榜的票要 20 个交易日历史才判得了震荡。 +- 相位合成 `app/core/tech_rules.py` 是纯逻辑:先判有没有读数(无读数一律弃权,绝不折成看空),再判震荡市(最近 20 个交易日 SAR 翻向四次),再按固定次序判九个相位(收口等待、开口向上向下、转空转多、趋势多空、分歧、震荡)。五个阈值一次定死,记在台账 006。 +- `app/services/tech_service.py` 分页拉接口、宽松解析、落表(接口状态非 OK 整轮不落表),每早对在持、计划主榜观察、待拍板的票合成立场写进映射 `PMS_TECH_STATE_MAP`,手法照 logic_state_service:读不到留空带原因,超期按无读数。 +- 调度新增 06:30 的 `pms.tech_pull`;`plan_pull` 在 08:40 拉完计划后补拉一次并重建映射,让覆盖带上当天的榜。 +- 三个接口:`GET /api/tech/status`、`POST /api/ops/tech-pull`(管理员)、`GET /api/research/{ts_code}`(单票研究面,工作包一先给技术面一块,其余块工作包二补)。 +- 十一个 PMS_TECH_* 参数登记进 param_store 的 RUNTIME_EXTRA 与 _RANGES。 + +**动了哪些文件** +新增 `app/core/tech_rules.py`、`app/repo/tech_repo.py`、`app/services/tech_service.py`、`scripts/test_batch27_units.py`。 +改 `ddl_pms_v1.sql`(第 20 张表)、`app/core/tradedays.py`(加 prev_trade_day)、`app/services/param_store.py`、`app/scheduler.py`、`app/web/main.py`、`scripts/test_batch6_units.py`(DDL 表数 19 改 20)、`scripts/test_wiring.py`(调度位加 tech_pull、路由加三接口)、`scripts/run_tests.py`(登记 batch27,顺手补登记既有遗漏的 batch26)。 + +**部署方式** +改了 Python,要 `make deploy` 重建镜像加 force-recreate,再 `init_db` 建出 pms_tech_daily。只在模拟仓 155 收盘后执行,先经用户审批。接口地址留空即沿用研判接口根地址 `PMS_JUDGE_API_BASE`。 + +**真机判收** +未判收。开发机临时 venv 跑全量单测见 ALL SUITES PASS(含新增 batch27 二十七例)。接口字段已只读探活 188 坐实。待 155 部署后按方案第七节判收:make test、pull_and_map 行数五千上下、映射只数等于持仓加候选、status、第一个交易日 08:4x 映射写入时刻与读数日。 + +**还欠着什么** +1. 页面七处建议并入工作包二,与三源合议的提议卡芯片、基本面质地芯片一次铺齐,避免先做技术面芯片再返工重排提议卡。 +2. 工作包二(三源合议与仓位矩阵)、工作包三(离场纪律)、工作包四(选股打分,另一仓库单独审批)、工作包五(README 调度总表补 13 位等文档)未做。 +3. BIONIC_PMS_INTERFACE.md 需补技术面只读接口一节(本次接口探活的字段事实源)。 + ---