Files
gaokao-volunteer-system/docs/ACTIVE_EXECUTION_BOARD_2026-06-17.md
Hermes 7d31d75145
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
feat(cli): add order delegation + doctor self-check (phase 3)
docs-only + cli: extend scripts/gaokao-cli with two thin wrappers
without changing data/rules, data/majors_catalog, or rules/_truth.

- gaokao-cli order <subcommand> delegates argv to data.orders.cli.main
  with the 'order' prefix stripped, so callers can use the unified
  command face without changing the existing orders parser.
- gaokao-cli doctor <json?> returns a single self-check payload that
  reuses RuleLoader + MajorsCatalogLoader (no new dependencies, no
  gaokato/ scaffolding). Truth-root or catalog-root failures degrade
  gracefully with structured {error, ok=false} sections instead of
  raising.
- tests/test_cli_doctor_phase3.py covers: help text, order delegation
  to list subcommand, doctor ok-path, doctor failure-path.

Also re-aligns docs/ACTIVE_EXECUTION_BOARD_2026-06-17.md (new) +
docs/CURRENT_STATE.md (single execution口径) + rules/majors source-
of-truth index files so design-phase numbering no longer drifts from
execution-phase numbering. Pre-existing 2026-06-16 optimization board
and 2026-06-17 phase2 plan are demoted to historical snapshots.
P0_P1_P2 remediation plan §4 historical cards get a red warning
banner so they are not re-read as current pending.

Verification:
- focused: 4 passed
- dev-verify: 770 passed, 1 failed
  (alipay_sim E2E failure pre-existed this commit; caused by an
  uncommitted upstream edit in admin/routes/web_public.py that
  rewires payment_return -> /portal/{token}/payment-success while
  the E2E still asserts /portal/{token}/status; out of scope for
  this commit and intentionally not touched.)
2026-06-17 18:05:16 +08:00

98 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ACTIVE_EXECUTION_BOARD_2026-06-17
> 真相源: `docs/CURRENT_STATE.md` §0
> 设计快照: `docs/DESIGN_RULES_TRUSTED_CLI_2026-06-16.md`
> 优化计划: `docs/plans/2026-06-16-optimization-program.md`
> 状态: 已收口 / 未启动 两段式
---
## 1. 已收口(执行 Phase 1 / 1.5 / 2
### 1.1 执行 Phase 1 + 1.5 — 规则真相源化
- 已落地:
- `rules/_truth/national.yaml`(国家级规则)
- `rules/_truth/province/*.yaml`27 省2026 版)
- `data/rules/loader.py` `RuleLoader.from_truth_root`
- `data/rules/audit_engine.py` `AuditEngine.audit_plan`
- `data/rules/cli.py` `rules {status,verify}`
- `scripts/migrate_province_rules_to_truth.py`(从 `PROVINCE_RULES` 一次性迁移)
- `tests/test_rules_truth_phase1.py` + `tests/test_audit_cli_major_validation_phase2.py`
- 提交链:
- `ae4835e` rules truth source loader + rules CLI
- `8a61b8f` phase1.5 verify 收口 + 旧 checker 迁移
- 三仓: gitea / origin / tksea 同步至 `edc5b11`
### 1.2 执行 Phase 2 Batch 1 — 国家级专业目录 MVP
- 已落地:
- `data/majors_catalog/models.py` `NationalMajor`
- `data/majors_catalog/loader.py` `MajorsCatalogLoader`
- `data/majors_catalog/national/2024.json` + `national/latest.json`13 个 curated subset
- `data/majors_catalog/cli.py` `majors {status,lookup,verify,changes}`
- `tests/test_majors_catalog_phase2.py` + `tests/test_majors_cli_phase2.py`
- 提交: `36ad58a feat(majors): add phase2 national catalog mvp`
### 1.3 执行 Phase 2 Batch 2 — 校级招生目录骨架
- 已落地:
- `data/majors_catalog/schools/2026/10001.json`1 所校级骨架样本)
- `data/majors_catalog/cli.py` `majors school-status / school-verify --year`
- `tests/test_majors_school_catalog_phase2.py` + `tests/test_majors_school_cli_phase2.py`
- 提交: `6b1157f feat(majors): add school catalog skeleton and verification`
### 1.4 执行 Phase 2 Batch 3 — audit_engine 接入 major_validation
- 已落地:
- `data/rules/audit_engine.py` `_validate_majors` 接入 `audit_plan`
- `data/rules/cli.py` `audit run --province --plan --truth-root --catalog-root --json`
- 输出口径: `MAJORS.not_found` / `MAJORS.non_active`
- `tests/test_audit_engine_major_validation_phase2.py` + `tests/test_audit_cli_major_validation_phase2.py`
- 提交: `edc5b11 feat(audit): validate majors in structured audit flow`
---
## 2. 未启动(执行 Phase 3 = 统一 CLI 命令面)
> 这是当前唯一未启动且**不依赖外部前置**的 P1 主目标。
> Lane D设计的 Phase 4 = Lane E执行的 Phase 3请勿混淆。
### 2.1 范围
按 6/16 优化计划 Phase 4 / 设计层 Phase 4 收敛:
- `gaokao-cli {order,share,delivery,retention,payment,backup,channel,doctor}` 收纳
- `gaokao-cli doctor` 最小自检(已有 loader / engine / CLI 调用面,不依赖 `gaokato/`
-`scripts/gaokao-*` wrapper 的 deprecation warning
- `docs/CLI_API_MAPPING.md` 同步"已落地命令清单"节
### 2.2 暂不进入本轮
- `gaokato/services/*``gaokato/transport/*`(设计层 Phase 5 = 执行层 Phase 4
- `gaokato/capabilities/registry.py`(等 doctor 落地后再用其 JSON 输出作为初版源)
- 退出码统一改写(沿用各子 CLI 现状,不与 Lane D 退出码收口任务冲突)
### 2.3 不可触发的真源改动
- 不改 `data/rules/loader.py` 字段
- 不改 `data/majors_catalog/*` 数据契约
- 不改 `rules/_truth/*` yaml
- 不重写 `data/orders/cli.py` 状态机
---
## 3. 收口规则(防止 4 条线再漂)
1. 状态查询一律走本文件 + `docs/CURRENT_STATE.md` §0
2. 设计层 Phase 编号不等于执行层 Phase 编号;引用必须带"执行/设计"前缀
3. 新写"待做"必须指明属于哪个执行 Phase
4. 历史评审/历史快照/历史整改计划三类文件不再进入本板追踪
5. docs-only commit 必须在 commit message 标注"docs-only",避免与代码 commit 混轨
---
## 4. 与本板同步的当前任务文档
- `/home/long/.hermes/docs/tasks/current/TASK-20260617-gaokao-optimization-batch2.md`