feat(kpi): 归集侧接作废/撤单标记过滤(voucher_void_marks)
- kpi_value_collector: 所有消费 voucher_details 的归集路径统一排除已作废凭证 (NOT EXISTS voucher_void_marks, entity_id+voucher_no+voucher_date+revoked_at IS NULL), 与 DB 视图 v_voucher_details_active 定义一致;标记表不存在时自动跳过(兼容旧库) - 禁硬编码:凭证号不出现在代码/配置,撤单只需写标记表 - verify_cashflow_direct_caliber: 2026-08 从已知差异放行改为硬断言(8 期逐期一致) - tests/test_void_marker_filter_20260914.py: 标记表在/不在 两分支 3 例
This commit is contained in:
@@ -5,7 +5,8 @@
|
||||
|
||||
判据(全部只读,write_kpi=False):
|
||||
1. 生产同一代码路径试算 2026-01..08,与现网 zxt-sync 权威值对账(容差 0.001)
|
||||
—— 2026-08 因上游已撤单凭证仍在库内(智享通快照不含)按已知差异放行(WARN,不算 FAIL)
|
||||
—— 2026-08 差异已随「作废/撤单标记过滤」接入归集器(2026-09-14)消除:
|
||||
归集侧统一按 cma.voucher_void_marks 排除已作废凭证,8 期逐期一致(无放行期)
|
||||
2. 恒等式: 经营净额 + 筹资净额 + 投资净额 = 现金总净额(每期 |Δ| ≤ 0.001)
|
||||
3. 负例对照: 若按「凭证级整单分类」(错误做法),2026-06 应为 453,697.63 元
|
||||
(行级 = 434,997.63 元,差 +18,700 = 凭证 31226 同单内的银行手续费)→ 证明必须行级拆分
|
||||
@@ -25,7 +26,7 @@ from scripts.kpi_value_collector import collect_for_mapping
|
||||
ENTITY = 1
|
||||
PERIODS = ["2026-0%d" % i for i in range(1, 9)]
|
||||
TOL = 0.001
|
||||
KNOWN_DIFF_PERIODS = {"2026-08"} # 上游已撤单凭证未标记 → 已知差异(挂账,非回归)
|
||||
KNOWN_DIFF_PERIODS = set() # 2026-09-14 起为空集:作废标记过滤已接入归集器,8 期逐期硬断言
|
||||
RULE = {
|
||||
"calc": "cashflow_direct", "measure": "net", "version": 1, "bucket": "operating",
|
||||
"cash_subjects": ["1001%", "1002%", "1012%"],
|
||||
|
||||
Reference in New Issue
Block a user