feat: add daily manual price review workflow

This commit is contained in:
Wyndham ARR
2026-08-06 22:40:18 +08:00
parent aae3d8e1db
commit ca3e8e18fa
77 changed files with 7750 additions and 602 deletions

View File

@@ -1,7 +1,7 @@
# ARR 测试数据库已执行记录
更新时间2026-08-04
状态008015 已提交014/015 已通过迁移回滚探针、正式应用、结构/数据复核真实 PostgreSQL 草稿激活外层回滚验收。016提交代码、待在测试机 booking_test 应用并完成 OSS 月报验收。首次真实业务工作簿激活仍待操作员授权。
更新时间2026-08-06
状态008018 已提交016 的实时函数体和注释已于 2026-08-06 与代码语义核对一致,但早期应用时间未留在本台账,本次没有重跑 016。017 已完成隐私最小化备份、修正后的 up/down 外层事务回滚探针、正式应用、结构/数据复核真实 `0805.XML` 初始待复核验收。018通过独立备份、精确 up/down 回滚探针和最终化外层事务竖切后正式应用。最新冻结 case 的员工重试与最终 Finance/月报验收仍待显式操作;首次真实 Booking 业务工作簿激活仍待操作员授权。
## 目标与隔离
@@ -29,7 +29,51 @@
| `013_daily_upload_filename.sql` | `f7ea18d6b844d9bd90fa757a4cf8428d1dd5833c088ae23444ac81fbe204fb0a` | 已提交并验收 |
| `014_booking_current_source_batch.sql` | `23bf0fcc880225ca276d4d7d871057be4f7950e761ddbeed1df2a3c6e25463b5` | 2026-07-31 已通过同事务回滚探针后由受控连接正式应用;数据复核通过 |
| `015_booking_excel_review_drafts.sql` | `a80689c4ecc3b6b3502e8f094a8c175af38df8c09f9d2c64412a9aec55bae12a` | 2026-07-31 已由受控连接正式应用;真实 PostgreSQL 草稿编辑/激活外层回滚通过 |
| `016_monthly_report_oss_artifacts.sql` | `70ca052f71da9f88e83fe8bccf0a6682cdd3138c3525981c80eebc868e401626` | 代码已提交;尚未在远程 `booking_test` 应用 |
| `016_monthly_report_oss_artifacts.sql` | `70ca052f71da9f88e83fe8bccf0a6682cdd3138c3525981c80eebc868e401626` | 实时函数体/注释于 2026-08-06 核对为已生效;历史应用时间未记录,本次未重跑 |
| `017_daily_price_review.sql` | `22a0578e8748573d29ff2c15dbc687aaea14d7dc0c34cf8fe1faa2ef56067b5b` | 2026-08-06 通过修正后的 up/down 回滚探针后由受控连接正式应用;初始真实复核验收通过 |
| `018_daily_review_manual_override_artifact.sql` | `5600d82597304d66ffb4933df4b375406080484dfbc7717c360b48a9e28ccd00` | 2026-08-06 通过精确 up/down 与最终化外层回滚探针后由受控连接正式应用;既有业务事实不变 |
## 017 日报价格人工复核(已部署,最终人工定价待验收)
017 为 `artifact_callback/fixed_processor` 的 v4 `PRICE_UNMATCHED` 专项能力增加:
- `awaiting_review` run、`review_required` attempt/delivery 与 `recorded_review` receipt初始复核不创建
`finance.daily_versions`、日报下载、`arr.processing_failed` 或月报 outbox
- `ingestion.daily_review_cases`、items、append-only events含服务端 actor、revision、前后价格和冻结清单
provenance但不保存姓名、备注或 raw trace
- 最终成功才在现有原子事务内写入 Finance review lineage、`manual_review` retained facts 和一次
`arr.daily_version_committed`;可重试基础设施错误保留同一清单,确定性最终错误关闭 case/run
- 最小权限授予无 DELETEdown 文件一旦存在任意 review/manual 事实即拒绝破坏性回滚。
`017_daily_price_review.down.sql` SHA-256`9e85af0cedb03acafed84623c12c2719ee36ddcbb5012c27c1f2379e0ee29101`
正式应用使用 checkpoint `runtime/backups/booking_test_pre_017_20260806T192026+0800/manifest.json`SHA-256
`d66cc4341db42420b9382fa78c90214f5ecb3c200062c0ac4bb8d275a7123b17`)。探针仅在内存中移除 up/down 最外层
`BEGIN`/`COMMIT`,将两份正文放进同一外层事务,验证 up 中间态、down 精确恢复和第二连接零残留后回滚;正式
应用才执行原始 up 文件的自带事务。首个探针发现并回滚了对 010 `direct_mcp` 终态约束的漂移,修正后才正式
应用。现已存在真实 review casedown 会按设计拒绝破坏性回滚,后续只能使用前向修复迁移。
运行态验收runs 6163 已通过正常 repository 入口关闭为 `REVIEW_SCHEMA_MIGRATION_MISSING`run 64 安全记录
了随后发现并修复的 delivery 占位符错误run 65 为 `awaiting_review`,含两个未填写价格项和一个
`PRICE_REVIEW_REQUIRED` 事件。它没有日报、Finance 版本、run outbox 或新增月报事件,历史版本 28 保持 rejected。
## 018 人工清单工件约束修复(已部署,员工重试待验收)
017 增加了人工清单引用列,但遗漏了 `manual_override_json` 工件类型。018 只重建
`ingestion.artifacts_artifact_kind_check`,在原十类工件基础上增加这一类;它不新增表、列、业务行或权限。
up 文件拒绝非 `booking_test`、缺失 017、未知既有类型和重复应用。down 文件 SHA-256 为
`514ba908059bd8eadedd9a38da6efae85efb378ccfca0395028eae1fed22b92f`,一旦存在不可变人工清单即拒绝回滚。
正式应用使用 checkpoint
`runtime/backups/booking_test_pre_018_20260806T210250+0800/manifest.json`SHA-256
`fcc24362d43c5982590a6566276e6ac7d1d172da2f2f040e8e54a063ca7e2b16`。up/down 外层事务探针恢复精确前态
且零残留;正式应用证据 SHA-256 为 `651dc998d471734ebfc1ebd5ba81f5a5da57942879676aa1747fe5bcb2d24d84`
应用后,一个真实 PostgreSQL 外层事务竖切完成复核登记、整数 `0` 输入、`0.00` 清单冻结、Finance 激活和单一
commit event然后整体回滚为零残留证据 SHA-256 为
`857cee393fa232ea4cbd85913f5069948246acdace6add39c019bd91787711dd`
当前 live 状态未自动重试run 66 冻结 GRP1/LBLT `2300/0`,最新 run 67 冻结 `200/0`,两者均为
`generation_failed` 且没有 Finance 版本或 run outboxrun 65 仍未填写。员工必须刷新登录后核对并只重试
预期的最新 case历史版本 28 保持 rejected。
## 014/015 最新核查状态
@@ -53,7 +97,7 @@
- 整个重建在一个事务内完成;
- 不触碰 `public` 或其他数据库。
当前对象23 张基础表(`ingestion=8``booking=8``finance=4``reporting=3`)和 8 个视图012 增加月报发布/子表不可变保护触发器。
当前对象26 张基础表(`ingestion=11``booking=8``finance=4``reporting=3`)和 8 个视图012 增加月报发布/子表不可变保护触发器017 增加三张价格复核表及其不可变保护触发器
## 009/010 增量迁移