Files
caoxiaozhu 787bc3a481 feat(platform): close AI expense value loop
Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
2026-07-17 14:14:08 +08:00

14 KiB
Raw Permalink Blame History

AI 分阶段发布真实遥测 开发 TODO

更新时间2026-07-17

使用规则

  • 每项必须回链 CONCEPT.md 对应章节;没有代码、迁移、接口或容器证据不得勾选。
  • observation、label、聚合和 Release Guard 输入必须按证据层分开,不能用 HMAC 请求或客户端汇总值替代数据库事实。
  • collecting 不得包装成通过recall/false-negative 没有达到独立盲审证据阈值时必须保持 unavailable。
  • 所有后端、迁移和并发验证只在 local-x-financial-linux 容器内执行,单条命令最长 60 秒。

1. 调研与边界

  • [CONCEPT: 背景与问题] 审计 Loader、平台风险评测、shadow_evaluations、风险处置和 AI workflow feedback/outcome 链路,确认线上发布评测缺少持久真实样本。 证据:expense_claim_risk_rule_loader.pyexpense_claim_platform_risk.pyrisk_dispositions.pyexpense_workflow_learning.pyai_learning.py 只读审计。
  • [CONCEPT: 背景与问题] 确认 RiskDispositionEvent confirm/false_positive 是当前可绑定风险命中的可信人工结论,通用 feedback/outcome 缺少完整 release 身份。 证据:risk_disposition.pyrisk_dispositions.pyagent_asset_release_telemetry.py 的可信事件查询和关联校验。
  • [CONCEPT: HMAC 与数据真实性边界] 冻结 HMAC 只负责传输认证、防篡改和防重放,不证明汇总指标的数据真实性。 证据:CONCEPT.md“HMAC 与数据真实性边界”;现有 agent_asset_release_monitor_auth.pyReleaseEvaluationInput 契约对照审计。
  • [CONCEPT: 目标与非目标] 明确未标注 collecting、敏感数据不落遥测表、线上 recall/FN 证据不足不可用。 证据:CONCEPT.md“目标与非目标”“Recall 与 false negative”。

2. 契约与设计

  • [CONCEPT: 数据] 定义 observation 与 label 的 tenant/asset/release/stage/version 复合身份、稳定幂等键和只追加边界。 证据:server/src/app/models/agent_asset_release_telemetry.py
  • [CONCEPT: 证据链与自动判定] 定义 observation → trusted label → aggregate → ReleaseEvaluationInput → Release Guard 的证据链。 证据:CONCEPT.md“证据链与自动判定”、ReleaseTelemetryAggregate.to_release_evaluation_input()
  • [CONCEPT: 算法/规则] 分开定义运行失败、业务误报、candidate precision、baseline precision 和缺失负样本真值。 证据:agent_asset_release_telemetry.pyaggregate()test_agent_asset_release_telemetry.py 的 collecting、baseline 和 FN 不可用断言。
  • [CONCEPT: 权限] 冻结专用发布复核接口的角色矩阵、双人复核阈值和跨租户 HTTP 错误契约。 证据:require_rule_reviewer_user 只允许 manager/admin跨租户 404、非角色 403、 发布人自审 400reviewer_quorum 限制 1..2 且按不同 actor 指纹计票。

3. 独立模型与服务

  • [CONCEPT: 数据] 新增 append-only observation/label ORM 模型、复合租户/release 外键和更新/删除拒绝。 证据:server/src/app/models/agent_asset_release_telemetry.py
  • [CONCEPT: 后端] 实现真实 shadow 结果、Canary/active 命中和 manifest 执行循环样本生产器。 证据:AgentAssetReleaseTelemetryService.record_expense_risk_result()record_manifest_evaluation()
  • [CONCEPT: 后端] 实现专用发布复核标签和可信 RiskDispositionEvent 标签转换,不接收自由评论。 证据:record_review_label()record_risk_disposition_label()
  • [CONCEPT: 后端] 实现租户隔离、陈旧 release/stage/version 拒绝、来源关联校验和稳定幂等冲突。 证据:_require_current_release()_observation_replay()_label_replay() 及对应测试。
  • [CONCEPT: 算法与公式] 实现保守聚合;未标注候选命中保持 collecting基线标签不完整时 baseline precision 不可用。 证据:ReleaseTelemetryAggregateaggregate()to_release_evaluation_input()
  • [CONCEPT: 数据] 实现 claim、事件、actor 来源指纹化,不保存业务正文、评论和账号原值。 证据:模型无自由文本业务字段;_fingerprint();脱敏测试断言。

4. 共享注册、迁移与运行接入

  • [CONCEPT: 数据] 在 db/base.pymodels/__init__.py 注册 AgentAssetReleaseObservationAgentAssetReleaseLabel,保证主应用 metadata 与迁移所有权检查可见。 证据:db/base.pymodels/__init__.pyschema_ownership.pymigration_preflight.py 已登记两张迁移自有表;前置检查 77 项通过。
  • [CONCEPT: 数据] 新增后继 20260716_0018 Alembic 迁移,创建两张表、复合租户/release 约束、检查约束、索引和数据库级 append-only UPDATE/DELETE 触发器。 证据:20260716_0018_agent_asset_release_telemetry.py;一次性 PostgreSQL 17 完整升级/降级循环 1 项通过,静态迁移/schema owner 回归 112 项通过。
  • [CONCEPT: 算法/规则] 在真实候选 manifest 执行循环接入 record_manifest_evaluation(),完整记录 shadow/Canary hit、miss 和结构化执行失败。 证据:expense_claim_platform_risk.pyexpense_claim_release_telemetry.pytest_agent_asset_release_runtime.py 覆盖 shadow、Canary、active 和损坏快照,test_agent_asset_release_telemetry.py 覆盖结构化运行失败。
  • [CONCEPT: 后端] 在类型化风险处置事务接入 release label按同租户、同 claim/rule、当前 release 精确关联 observation关联失败保守拒绝。 证据:agent_asset_release_disposition_labels.pyrisk_disposition_release_sync.py;风险确认/误报会追加标签,误报越界自动回滚 stable。
  • [CONCEPT: 后端] 将现有 Release Monitor 从“提交外部汇总数字”改为“触发服务端聚合”,只在 aggregate ready 时构造 ReleaseEvaluationInput。 证据:AgentAssetReleaseMonitor.evaluate_current() 只接受 release 身份HTTP body 为禁止额外字段的空触发契约,真实聚合未 ready 时不调用 Guard。
  • [CONCEPT: HMAC 与数据真实性边界] 保留 HMAC 作为 Monitor 传输认证,但禁止签名请求覆盖数据库聚合结果,并补充签名通过但汇总伪造的反向测试。 证据:agent_asset_releases.pyAgentAssetReleaseMonitorTriggerWrite;带有效签名的伪造 precision/total 请求仍返回 422。
  • [CONCEPT: 降级策略] 遥测持久化或聚合失败时保持 stable 规则、停止晋级并记录结构化告警,不让观测故障阻断正常报销。 证据:ExpenseClaimReleaseTelemetryRecorderrisk_disposition_release_sync.py 将遥测/标签/监控故障隔离并记录日志;未获得 ready 真实聚合不会写 passed也不会改变 stable 路由。
  • [CONCEPT: 后端] 按职责拆分 Agent 资产接口、版本只读投影和 Release Guard 纯策略计算,保持公开 API 与状态机行为稳定。 证据:agent_assets.py endpoint 714 行、agent_asset_risk_rules.py 534 行、agent_assets.py service 675 行、agent_asset_serialization.py 217 行、agent_asset_release_guard.py 636 行、agent_asset_release_policy.py 201 行,相关核心文件均低于 800 行;纯策略模块保存范围为 1..2 的 reviewer_quorum,第 5 节已完成复核执行与运营闭环。

5. 自动聚合、告警与运营闭环

  • [CONCEPT: 证据链与自动判定] 实现按 tenant/asset/release/stage/version 的周期聚合作业与幂等快照。 证据:agent_asset_release_scheduler.py 按租户有界扫描;AgentAssetReleaseMonitor._existing_evaluation() 复用相同 release 聚合快照,不重复生成测试运行。
  • [CONCEPT: 证据链与自动判定] aggregate ready 后自动调用 Release Guardcollecting 只更新采集状态,不写虚假 passed test run。 证据:人工标签提交后即时触发 monitor后台 scheduler 提供失败补偿;test_agent_asset_release_monitor.py 覆盖 collecting 不调用 Guard、低 precision/运行失败自动回滚与相同快照幂等。
  • [CONCEPT: 降级策略] 增加待标注数量/时长、运行失败率、precision 下降、baseline 不可用、聚合失败和自动回滚告警。 证据:agent_asset_release_alerts.pyAgentAssetReleaseMonitor._metrics()24 小时 待审逾期和单资产聚合失败均返回结构化告警,定向 Monitor/Telemetry/Runtime 29 项通过。
  • [CONCEPT: 前端] 在发布控制台展示 observed/hit/labeled/pending、候选/基线 precision、运行失败和召回证据。 证据:AuditReleaseMonitorPanel.vue 展示负样本池、抽样进度、积压、实际/估计 FN、FN 上界、recall 点估计/下界/置信方法;空值不渲染为零。
  • [CONCEPT: 权限] 实现认证发布复核队列、操作审计和需要时的双人复核,不允许规则发布人独自伪造所有标签。 证据:agent_asset_release_review.pyagent_asset_release_label_votes.py、专用 GET/POST APIX-Request-Id、append-only label、actor HMAC 指纹、发布人隔离和独立双人同意均有测试。
  • [CONCEPT: Recall 与 false negative] 实现独立分层负样本抽样、预测盲化、双人标注、冲突保持 collecting 和保守召回估计。 证据:agent_asset_release_sampling.pyagent_asset_release_review.pyagent_asset_release_aggregation.pyagent_asset_release_recall.py;前端只发送 risk_present / risk_absent,负样本要求两个不同 actor门禁只读取 recall 下界。
  • [CONCEPT: 数据] 完成 0023 audit sample 迁移注册、数据库标签组合约束、append-only 触发器和无损降级验证。 证据:20260716_0023_agent_asset_release_blind_audit.pyrelease_telemetry_migration_assertions.pyfresh PostgreSQL 完整迁移链、约束、触发器及降级/再升级均通过。

6. 测试与验证

  • [CONCEPT: 测试方案] 独立模型/服务测试覆盖 shadow、Canary、baseline、真实 typed disposition、脱敏、幂等、租户、陈旧 release、append-only、collecting 和 FN 不可用。 证据:容器内 test_agent_asset_release_telemetry.py 7 项通过。
  • [CONCEPT: 测试方案] 与现有 Release Guard 和 Runtime 组合回归通过。 证据:容器内 test_agent_asset_release_guard.pytest_agent_asset_release_runtime.pytest_agent_asset_release_telemetry.py 共 19 项通过Ruff 通过,git diff --check 通过。
  • [CONCEPT: 测试方案] 新增 0018 upgrade/downgrade、schema owner、复合外键和数据库 append-only PostgreSQL 验证。 证据:一次性 pgvector/pgvector:pg17 数据库中完整迁移循环 1 项通过;迁移运行探针验证复合租户外键、幂等唯一约束和两张表的数据库级 UPDATE/DELETE 拒绝。
  • [CONCEPT: 测试方案] 新增 PostgreSQL 并发同 observation、同 label、标签与阶段晋级竞争和幂等冲突测试。 证据:一次性 PostgreSQL 17 中 test_agent_asset_release_telemetry_concurrency_postgres.py 4 项通过;相同重放只保留一条,不同载荷单赢家,阶段转换持锁后旧标签保守拒绝。
  • [CONCEPT: 测试方案] 验证 audit sample 并发单赢家、同 actor 重复不增加负样本法定票、第二独立 actor 完成双人复核,以及预测字段不进入前端队列状态。 证据:test_agent_asset_release_telemetry_concurrency_postgres.py 覆盖单赢家和独立双人票;test_agent_asset_release_telemetry.pyagent-release-monitor-panel.test.mjs 验证队列不暴露 candidate/baseline 命中预测。
  • [CONCEPT: 测试方案] 跑通真实风险循环 → observation → disposition label → aggregate → Release Guard 回滚端到端。 证据:test_agent_asset_release_runtime.pytest_risk_dispositions.py 覆盖真实执行样本、类型化处置标签、服务端聚合、低 precision 自动恢复 stable发布组合回归 44 项通过。
  • [CONCEPT: 测试方案] 验证职责拆分后的资产服务、风险规则子路由、Release Guard/Runtime、Monitor/Scheduler/Telemetry 和 API schema 兼容性。 证据:容器内资产服务 27 项、Guard/Runtime 13 项、Monitor/Scheduler/Telemetry 22 项、风险规则生成/解释 30 项、修订/反馈 14 项通过;迁移后的既有 publish HTTP 防绕过用例通过Ruff 与 git diff --check 通过。
  • [CONCEPT: 指标与验收] 验证 HMAC 失败、遥测库失败、标签积压和聚合失败均停止晋级但不破坏 stable 业务保护。 证据:test_agent_asset_release_runtime.py 覆盖签名失败;test_agent_asset_release_monitor.py 覆盖 collecting、积压和聚合失败ExpenseClaimReleaseTelemetryRecorder 隔离遥测持久化异常stable 报销路径继续服务。
  • [CONCEPT: 指标与验收] 完成相关后端全量回归、Ruff、迁移完整循环和 git diff --check,逐项回填 A1-A8 证据。 证据:遥测组合 45 项通过fresh PostgreSQL 总探针 87 passed / 0 skipped / 0 failed,其中发布遥测并发 7 项Web 全量 815 项及 Vite build 通过;新增 Python 文件 Ruff 与 git diff --check 通过。全仓既有 Ruff 基线债不伪装为本轮新增错误。

7. 文档收尾

  • [CONCEPT: 本轮实现记录] 新建独立 CONCEPT/TODO记录证据边界、已实现切片和共享集成缺口。 证据:document/development/2026-07-16/feature/ai-release-real-telemetry/CONCEPT.mdTODO.md
  • [CONCEPT: 风险与开放问题] 共享集成完成后回填 0018、运行 hook、自动作业、PostgreSQL 和端到端证据。 证据:本 TODO 第 4-6 节与 CONCEPT.md“本轮实现记录”已回填发布面板已展示积压、失败、precision 和 recall生产运营效果由下一条真实流量验收单独保留。
  • [CONCEPT: 指标与验收] 与上位 AI 闭环 TODO 对齐代码与容器验证状态。 证据:document/development/2026-07-13/feature/ai-expense-closed-loop-and-value-proof/TODO.md 已回填 Golden、Canary、盲审和回滚的工程证据。
  • [CONCEPT: 指标与验收] 使用生产真实流量、独立复核样本和试点阈值验证 Golden/Canary/自动回滚运营效果。 证据要求:目标企业生产 observation/label、盲审样本、阈值签字和真实回滚演练本地测试不得替代。