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

49 KiB
Raw Blame History

AI 费用闭环与价值证明 开发 TODO

更新时间2026-07-17

文档路径document/development/2026-07-13/feature/ai-expense-closed-loop-and-value-proof/TODO.md

使用规则

  • 每个 TODO 必须对应 CONCEPT.md 中的目标、能力、方案或验收点。
  • 只有完成实现并验证后,才能把 [ ] 改成 [x]
  • 已完成项必须补充文件、接口、命令、容器测试或真实页面证据。
  • 如果需求发生变化,先更新 CONCEPT.md,再调整本 TODO。
  • 实施顺序遵循P0 费用闭环与数据基础 → P1 安全自动化与学习 → P2 费用经营与价值证明 → P3 商业化复制。
  • 所有后端、集成、迁移和依赖外部服务的验证只允许在项目容器内运行,单条测试命令最大超时 60s。

1. 调研与边界

  • [CONCEPT: 背景与问题] 盘点申请、票据、报销、预算、风险、审批、付款、分析、Agent trace、反馈和 AI 数据飞轮现状。 证据:server/src/app/api/v1/endpointsserver/src/app/servicesweb/srcmobile/app/src、容器运行时 OpenAPI 共 156 个业务操作。
  • [CONCEPT: 背景与问题] 确认当前主要断点是消费/取票、真实支付入账、结果回流、节省归因和商业计量,而不是页面数量不足。 证据:CONCEPT.md“背景与问题”;expense_claim_approval_flow.py 付款为状态更新;本地容器关键反馈/样本表聚合结果为 0。
  • [CONCEPT: 目标与非目标] 确认本功能采用一个总功能点分阶段实施,不一次性替换所有现有接口,不自建支付和商旅供应链网络。 证据:CONCEPT.md“目标与非目标”。
  • [CONCEPT: 风险与开放问题] 记录认证、租户、旧模型迁移、反馈污染、虚假节省、自动化失控、连接器和数据稀疏风险。 证据:CONCEPT.md“风险与开放问题”。

2. 开发前置门禁:试点与基线

  • [CONCEPT: 待确认] 确认首个目标客户规模、部署形态、购买决策人和最小租户边界。
  • [CONCEPT: 待确认] 确认首个 90 天试点费用场景,只允许一个场景进入 P0 开发。
  • [CONCEPT: 待确认] 确认是否进入企业支付、商旅预订或公司卡领域,并冻结首期连接器范围。
  • [CONCEPT: 待确认] 确认客户 ROI 中现金节省与工时价值的口径、基线窗口和签字人。
  • [CONCEPT: 指标与验收] 在 P0 开发前采集人工分钟、退回率、完成周期、人工触点、风险反馈、费用金额和付款结果基线。
  • [CONCEPT: 指标与验收] 为 P0/P1/P2 分别冻结一条可纵向跑通的闭环验收,不以“模块代码已完成”代替业务结果。

3. 契约与设计

  • [CONCEPT: 费用领域与编排] 定义 Expense Case、申请、票据、报销、审批、付款、凭证和归档的领域边界与迁移关系。 证据:expense_cases.py、Expense Case/Link/Event 模型、连接器付款/ERP/归档与 Savings 冲回 E2E。
  • [CONCEPT: 数据与契约] 定义 expense_casesexpense_case_links 和最小状态机,明确非法状态跃迁。 证据:20260713_0001_expense_case_business_events.pyExpenseCaseService 与状态/事件回归。
  • [CONCEPT: 数据与契约] 定义 business_events 事件信封、事件词典、correlation ID、幂等键和版本策略。 证据:BusinessEvent schema/service、业务事件词典及申请/报销/审批/支付/ERP/Savings 回归。
  • [CONCEPT: 业务事件与 AI 决策] 定义 ai_decisionsai_decision_feedbackworkflow_outcomes 契约。 证据:ai_learning.pyexpense_application_learning.py20260714_0003_ai_learning_loop.py;三类事实分别表达 AI 建议、用户采纳/显式字段纠正和业务结果,技术执行成功、用户反馈与工作流结果不复用同一状态。
  • [CONCEPT: 业务事件与 AI 决策] 定义落单前服务端预览决策的签发、授权、过期、一次消费、重放和续签契约。 证据:ai_application_preview.pyexpense_application_preview_decisions.pyexpense_application_snapshot.py;预览不创建空 Case绑定租户、actor、登录会话与 conversation30 分钟过期,保存/提交成功后一次消费;保存草稿在业务提交后尽力返回基于服务端事实的新 decision_id,续签失败不反转已成功动作。
  • [CONCEPT: 记忆与学习] 定义并实现 memory_entriesmemory_evidence_links、优先级、有效期、敏感白名单、撤销和遗忘契约;首个切片仅覆盖 travel_application.transport_mode。 证据:ai_memory.pyexpense_application_memory.pyexpense_application_memory_evidence.py20260714_0005_ai_memory.py;记忆使用租户、主体、场景、字段和值指纹精确隔离,值只允许“飞机/火车/轮船”,服务异常降级为不应用记忆。
  • [CONCEPT: 自动化决策] 定义动作风险、金额阈值、置信度、证据完整度、可逆性、抽检率和企业授权策略。 证据:automation_eligibility.pytest_automation_eligibility.py;资金、制度和高风险动作始终人控。
  • [CONCEPT: 节省与价值] 定义 Savings Ledger 的机会、执行、实现、确认、去重和归因状态。 证据Savings 模型、0015 迁移、状态服务与并发/E2E 测试。
  • [CONCEPT: 连接器] 定义票据邮箱、税务、企业卡、商旅、支付、银行、ERP、消息和 SSO 连接器协议。
  • [CONCEPT: 权限与安全] 定义服务端会话、租户数据范围、角色和动作级授权契约。 证据:不透明 Bearer Session、CurrentUserContext、租户访问策略和 endpoint role dependencies0025-0028 多租户安全迁移。
  • [CONCEPT: 指标与验收] 完成首个试点指标字典、基线采集方案、分子分母、数据源和负责人。
  • [CONCEPT: 方案设计] 完成分阶段架构评审,确认新增 service 不继续堆入 ExpenseClaimServiceUserAgentService 或大型前端 composable。 证据访问策略、员工解析、附件、预审、Savings、商业、连接器、发布遥测及前端 composable 均按职责拆分;受门禁核心类/组件 800 行检查通过。

4. P0 后端实现:费用闭环与数据基础

  • [CONCEPT: 权限与安全] 实现服务端可验证会话/JWT移除客户端身份头作为授权事实来源。 证据:auth_sessions.pyauth_session.pydeps.pyauth.pyauthSessionStorage.js;登录签发不透明 Bearer token数据库仅保存 SHA-256 摘要,生产代码不再信任 X-Auth-*,过期/撤销/伪造会话回归测试通过。
  • [CONCEPT: 权限与安全] 为管理面、Bootstrap、Settings、模型连通性、缓存、审计和系统日志补齐平台管理员保护。 证据:bootstrap.pysettings.pyaudit_logs.pyagent_traces.pysystem_logs.pyvite.config.js;已初始化 Bootstrap 脱敏且拒绝匿名重配,平台管理员/业务经理权限边界和 Vite Setup 锁测试通过。
  • [CONCEPT: 权限与安全] 继续盘点并收口风险规则发布、制度发布及其他尚未纳入本轮的敏感动作,按动作定义平台管理员或双人复核权限。 证据Agent Asset/Rule Editor/Reviewer、发布盲审双人票、风险豁免独立决定、平台资产只读和 ONLYOFFICE 写入权限均有服务端守卫与安全测试。
  • [CONCEPT: 权限与安全] 为本轮新增表及 Claim、Employee、Agent Asset、Knowledge、Ontology、Hermes 和 Report 等纳入范围的共享核心数据补齐 tenant_id、约束、查询守卫和默认租户迁移。 证据0025-0028 迁移、复合租户外键、首层 SQL 过滤和 tenant security 测试fresh PostgreSQL 迁移总探针通过。
  • [CONCEPT: 权限与安全] 将 agent_conversations 等仍依赖 JSON tenant 的 legacy 状态迁移到结构化租户列和数据库约束。 证据要求:后继迁移、历史回填、复合约束和跨租户回归;当前只能由服务层校验 state_json.tenant_id,不得表述为数据库边界已完成。
  • [CONCEPT: 权限与安全] 为 Expense Case 查询提供面向用户的精简事件 DTO移除幂等键、correlation、causation 和 Outbox 投递字段,并明确审批意见、退回原因和操作人可见范围。 证据:expense_case.pytest_expense_case_endpoints.py;用户态响应只保留安全流程摘要,关联资源 ID 和未知嵌套 payload 被递归过滤,本人、当前审批人、财务、管理员、无权限及跨租户边界测试通过。
  • [CONCEPT: 权限与安全] 为 Qdrant collection/namespace、对象存储前缀和缓存键补齐租户隔离回归测试。 证据Knowledge tenant scope、RAG workspace、Qdrant namespace、票据/附件路径、运行缓存和财务快照 tenant fingerprint 回归。
  • [CONCEPT: 数据与契约] 建立 Alembic baseline 和正式迁移链,停止请求路径运行 DDL。 证据migration ownership/preflight 与 0001-0028 正式链fresh PostgreSQL 完整 upgrade/downgrade/re-upgrade 通过,请求路径不再创建 migration-owned 表。
  • [CONCEPT: 兼容策略] 集中 migration-owned 表所有权并在标准启动迁移前执行只读漂移预检,禁止 legacy bootstrap 越权建表。 证据:schema_ownership.pymigration_preflight.pyserver_start.shtest_migration_preflight.pytest_schema_ownership.py;无版本自有表、缺表、多表、未知/多 revision 均 fail-fast不自动 stamp 或修改数据库。
  • [CONCEPT: 费用领域与编排] 新增 ExpenseCaseService 和费用事件查询接口,保持编排与具体职责分离。 证据:server/src/app/services/expense_cases.pyserver/src/app/api/v1/endpoints/expense_cases.pyGET /api/v1/expense-cases/by-claim/{claim_id};容器 OpenAPI 校验通过。
  • [CONCEPT: 数据与契约] 新增 expense_casesexpense_case_linksbusiness_events 表及迁移。 证据:20260713_0001_expense_case_business_events.py;一次性 PostgreSQL 17 已验证表、唯一约束、复合索引、外键级联、降级和再次升级。
  • [CONCEPT: 业务事件与 AI 决策] 新增 ai_decisionsai_decision_feedbackworkflow_outcomes 表及迁移。 证据:20260714_0003_ai_learning_loop.pyschema_ownership.pymigration_preflight.py三表具备租户幂等约束Case/Event/Decision 使用包含费用 Case 的复合租户外键。一次性 PostgreSQL 17 完整升级、重复升级、跨租户及同租户跨 Case 外键拒绝、降级和再次升级 4 项通过,持久开发库未迁移。
  • [CONCEPT: 业务事件与 AI 决策] 新增服务端预览决策表、认证签发接口和正式 Decision 关联迁移。 证据:20260714_0004_ai_application_preview_decisions.pyexpense_application_previews.pyreimbursements.py;动作消费与 Claim、Case、Business Event 和学习三表同事务,跨登录会话重放被拒绝;独立版本密钥生成的 HMAC 指纹不保存低熵字段明文,并编码字段存在性。只有从未成功签发的旧调用可无 ID 降级,当前会话已有有效决策时省略 ID 会返回 409。
  • [CONCEPT: 数据与契约] 为申请、票据、草稿、提交、退回、审批、付款和归档接入统一 correlation ID。 当前进度:报销显式预审与提交已共享 correlation/causationAI 草稿和票据归集已透传租户与稳定幂等键;申请、审批、付款和外部连接器仍需继续统一。
  • [CONCEPT: 业务事件与 AI 决策] 建立事务 Outbox申请、提交、退回、审批、支付和入账状态与事件同事务提交消费端按事件 ID 幂等处理。
  • [CONCEPT: 业务事件与 AI 决策] 完成首批草稿、提交、退回、审批、申请转报销、付款和申请归档事件旁写,具备 correlation、causation、幂等键及事务回滚。 证据:expense_claim_draft_flow.pyexpense_claims.pyexpense_claim_approval_flow.pytest_expense_case_service.py;容器测试覆盖同 Case 关联、重复事件去重及 Outbox 失败整体回滚。
  • [CONCEPT: 风险与预审] 建立申请与报销提交前服务端预审握手,使用稳定 review ID、输入/规则/动态结果指纹、三态决策和结构化整改动作阻止旧预审复用。 证据:expense_claim_pre_review_decision.pyexpense_claim_pre_review.pyexpense_claims.pyreimbursement_pre_review.py;提交前始终重算完整风险上下文,needs_fix 在预算占用前保持草稿并返回结构化 409握手期间风险变化返回 PRE_REVIEW_CHANGED,相同输入、规则和 findings 重试只保留一条预审事件。申请与报销使用同一契约:提交人可整改风险必须先处理,人工判断或预算治理风险才进入领导与 P8。
  • [CONCEPT: 统一费用事件] 补齐票据归集 → 预审 → 提交切片的阶段与事件衔接,并修复非默认租户在 AI 草稿、预览和 Steward 链路回落到 default 的问题。 证据:expense_receipt_association.pyexpense_claim_approval_flow.pyexpense_claim_draft_flow.pyexpense_claim_review_preview.pysteward_action_executor.py;申请批准生成空报销草稿后 Case 保持 approved_to_spend,票据关联后进入 claiming,跨租户 Case/Event 不能串线。
  • [CONCEPT: 权限与安全] 将 Claim 核心查询和关联报销后台任务纳入服务端租户范围,拒绝同用户名跨租户读取、修改、审批或查询任务。 证据:expense_claim_tenant_scope.pyexpense_claim_access_policy.pylinked_reimbursement_draft_jobs.py;默认租户仅为无 CaseLink 的历史单保留兼容,后台任务强制覆盖客户端 tenant关联申请按 CaseLink 与租户共同校验。
  • [CONCEPT: 业务事件与 AI 决策] 收口 AI 新建申请直接提交入口,统一复用申请提交事务,并消除预算 metadata 检查对外层事务的隐式提交。 证据:user_agent_application.pybudget.pytest_reimbursement_endpoints.pytest_user_agent_service.py;容器测试覆盖有效预算预占、application_submitted 事件、提交风险标记、事件失败整体回滚及保存草稿无提交副作用。
  • [CONCEPT: 业务事件与 AI 决策] 为 AI 工作台和小财管家申请草稿补齐新建/更新事件、租户透传、事务回滚和动作幂等。 证据:expense_application_draft_events.pyuser_agent_application.pyreimbursements.pysteward_action_executor.pytest_user_agent_application_draft_events.pytest_reimbursement_endpoints.pytest_steward_action_executor.py;完全相同 HTTP 保存重放复用同一草稿和事件,同一 run 内不同快照分别留痕,事件失败后草稿与 Case 数据整体回滚。
  • [CONCEPT: 权限与安全] 将 AI 申请预览快速入口的用户、租户、角色与管理员身份强制绑定到服务端会话,拒绝请求体伪造身份编辑他人申请。 证据:reimbursements.pytest_reimbursement_endpoints.py;对抗用例修复前返回 200修复后返回 400且目标申请和费用事件保持不变。
  • [CONCEPT: 权限与安全] 收口通用 Orchestrator 用户消息和会话管理的认证边界,拒绝客户端身份与 decision 注入。 证据:orchestrator.pyagent_conversations.pyorchestrator_expense_application_workflow.pysteward_graph_action_runtime.pytest_orchestrator_auth_endpoints.pytest_steward_action_executor.pytest_orchestrator_review_flow.py;用户消息、定时任务和系统事件无认证均返回 401普通用户触发 schedule / system_event 返回 403登录态覆盖请求身份和调度操作人别名Orchestrator 会话创建/恢复/删除及 Steward 幂等检查点同时校验租户与用户名,申请动作只消费服务端会话 decision。
  • [CONCEPT: 兼容策略] 建立迁移桥接:服务启动先执行 Alembic旧 metadata bootstrap 排除 migration-owned 表。 证据:server_start.shschema_ownership.pymigration_preflight.py20260713_0001_expense_case_business_events.py20260713_0002_auth_sessions.py;容器 Shell/静态检查及一次性 PostgreSQL 完整 upgrade/downgrade/re-upgrade 通过。
  • [CONCEPT: 兼容策略] 为迁移前已有 ExpenseClaim 提供显式、幂等且不伪造办理历史的费用事件快照回填。 证据:expense_case_legacy_backfill.pymaintenance_database_target.pybackfill_legacy_expense_claim_cases.py;默认 dry-runapply 强制租户/截止时间、精确目标、迁移 head、advisory lock 和批次事务,事件使用真实回填时间、history_reconstructed=falsedelivery_status=suppressed。一次性克隆库首次创建 4 组 Case/Link/Event重复 apply 创建 0 条。
  • [CONCEPT: 兼容策略] 正式切换前以 shadow 事件校验现有 ExpenseClaim 映射;切换后禁止关键事件可丢弃写入。
  • [CONCEPT: 兼容策略] 制定旧 ReimbursementRequest 只读兼容、迁移和停止新增编排的计划。
  • [CONCEPT: 兼容策略] 把新增审批、付款、归档和关系事件移出 risk_flags_json,保留旧数据读取兼容。
  • [CONCEPT: 数据与契约] 补齐撤回、取消、驳回、作废、补件、支付失败、对账异常和归档状态。
  • [CONCEPT: 连接器] 实现财务连接器统一事件信封、认证、幂等、重试、错误状态和回执事件。 证据:financial_connector_auth.pyfinancial_connector_ingestion.pypayment_reconciliation.py、配置生命周期及 operational events服务/API/并发测试通过。
  • [CONCEPT: 连接器] 实现支付批次、回执、重复付款防护、ERP 凭证和对账的内部契约,首期允许 mock connector 但不得再只写单一“已付款”状态。
  • [CONCEPT: 降级策略] 将附件关联和关联报销草稿后台任务迁为可持久化、可恢复、可幂等的任务状态。 证据:新增 migration-owned attachment_association_jobs20260716_0006任务使用租户、owner、票据集合和 generation 去重,运行态带租约与 attempt_count + running 栅栏GET 可恢复 queued/租约过期任务。同票据和同 Claim 均由进程锁与 PostgreSQL advisory lock 串行化Claim 锁内重新匹配;待确认或失败历史保留原代并以新 generation 重新评估,自动关联成功代继续幂等复用。进程状态清空、租约过期、旧 worker 回写、不同票据并发同 Claim 和代际重评估回归通过。
  • [CONCEPT: 零录入附件关联任务契约] 扩展附件关联任务的向后兼容结果契约,区分自动完成与需要确认,并返回 Case、申请、置信度、原因、异常、缺失项、风险项和候选。 证据:attachment_association_job.pyattachmentAssociationJobModel.js 保留旧字段并追加结构化结果;status=succeeded + resolution=requires_confirmation 明确表示匹配完成但零业务写入。
  • [CONCEPT: 零录入报销首个切片] 新增独立票据匹配器按当前租户、员工、Expense Case、已审批申请、日期、城市和场景计算候选唯一高置信才允许自动归集。 证据:expense_receipt_matcher.py 只读评分;覆盖唯一高置信、相近候选、无草稿、仅有已审批申请和已关联重放,申请缺少系统草稿时只返回 approved_application 候选。
  • [CONCEPT: 零录入报销首个切片] 新增独立归集编排器,把票据 Link、receipt_received、附件写入和 attachment_associated 纳入同一事务,并保证同票据重试不重复建明细或事件。 证据:expense_receipt_association.py 统一编排数据库写入,文件系统使用元数据快照和附件目录补偿;稳定幂等键保证相同票据重试只增加跳过数。事件写入失败回归证明 Claim、Case、Link、Event、票据元数据和附件最终状态均回退。
  • [CONCEPT: 权限与安全] 将票据夹存储命名空间和附件关联后台任务授权同时绑定租户与用户,补充同用户名跨租户隔离回归。 证据:receipt_folder.py 使用租户与用户联合命名空间,任务状态绑定 owner_tenant_id + owner_username;普通用户及平台管理员跨租户查询均返回 404同用户名跨租户不能读取票据。

5. P0 前端实现:一键报销与真实移动端

  • [CONCEPT: 统一费用事件] 在申请/报销详情接入已有真实 Expense Case 事件时间线,展示申请提交、报销提交、退回、审批、自动生成报销草稿、付款和归档事件。 证据:TravelRequestExpenseCaseTimeline.vueuseExpenseCaseTimeline.jsexpenseCases.jsexpenseCaseTimeline.js保留原有横向进度404 与接口异常均安全降级,容器内 99 条定向前端回归和 Vite 生产构建通过。
  • [CONCEPT: 统一费用事件] 补齐计划、消费/票据、入账、对账和复盘事件,并在真实迁移数据库上跑通完整时间线。
  • [CONCEPT: 统一费用事件] 自动匹配申请、预算、票据、费用类型、项目、成本中心和常用字段。 首个切片先交付申请、票据、费用事件、日期、城市和费用场景匹配;预算、项目、成本中心和记忆偏好随后接入同一候选契约。
  • [CONCEPT: 统一费用事件] 增加“需要确认”区,只展示低置信、缺失或冲突字段。 首个切片在小财管家附件关联结果中复用统一异常模型;后续再收口全屏助手和票据夹入口。
  • [CONCEPT: 零录入报销首个切片] 在小财管家实现“上传并发送 → 自动归集已审批申请生成的草稿 → 查看草稿”,不再次上传票据;低置信时只展示候选和异常卡片。 证据:附件任务 composable 将待确认视为安全终态,不发送伪成功通知;自动完成提供“查看草稿”,申请候选提供“查看候选申请”,不伪造报销草稿。
  • [CONCEPT: 零录入附件关联任务契约] 会话刷新后恢复新任务结果、候选和异常状态,旧任务结果仍可正常展示。 证据:workbenchAiMessageModel.js 持久化新协议,规范化层兼容旧字段;容器内前端票据关联、协议、卡片、幂等重放、风险复核和会话恢复组合回归 29 项通过。
  • [CONCEPT: 风险与预审] 报销详情提交前先执行真实预审,needs_fix 直接展示结构化风险并停止提交,其他结果携带 review ID 与输入指纹完成握手。 证据:reimbursements.jsapi.jsuseTravelRequestDetailRiskSubmit.js;错误响应保留 status/code/detail/review风险可即时回填并触发详情刷新前端预审、409、请求头、时间线组合测试 24 项和 Vite 生产构建通过。
  • [CONCEPT: 风险与预审] 风险卡提供一键补件、修正、解释和重新预审入口。
  • [CONCEPT: 统一费用事件] 退回后直接定位问题字段,支持断点续办,不要求重新发起对话。
  • [CONCEPT: 移动端] 接通真实登录恢复、路由守卫、报销列表、详情、草稿、上传和审批 API。
  • [CONCEPT: 移动端] 完成拍照/相册 → OCR → 票据夹 → 费用事件 → 报销草稿真实闭环。
  • [CONCEPT: 移动端] 删除或禁用没有真实行为的报销、审批、发送和语音主按钮。
  • [CONCEPT: 前端] 修复表格整行点击键盘不可达、弹窗焦点管理、焦点环和移动触控目标。
  • [CONCEPT: 前端] 移除页面级全局 transform: scale(),使用真实响应式布局承载费用闭环页面。

6. P1 算法与规则实现:安全自动化与持续学习

  • [CONCEPT: 自动化决策] 实现 L0-L5 动作级自动化等级和资格计算器。 证据:AutomationEligibilityCalculator 将 L0-L4 资格与 L5 人控分开计算,不直接执行动作;单元测试覆盖保守降级。
  • [CONCEPT: 自动化决策] 为每个可自动动作实现硬白名单、金额上限、证据要求、抽检率和企业上限。 证据:系统硬白名单与企业白名单取交集;资金、制度和高风险动作永远人控,金额、置信度、证据、历史精度、样本和抽检任一不足即降级。
  • [CONCEPT: 风险与预审] 统一风险输出为事实、规则、证据、判断、建议动作和降级原因。 证据:结构化 pre-review findings、平台风险投影、整改动作、historical evidence 和 fail-closed 原因已用于申请/报销提交与审批风险卡。
  • [CONCEPT: 记忆激活] 为首个个人出行方式切片实现 candidate/active/suppressed/expired/revoked 记忆状态机。 证据Candidate/Active 默认有效期分别为 90/180 天;反向或非白名单纠正抑制已激活记忆,过期后新证据创建新 generation忘记后清值并阻止旧请求复活。
  • [CONCEPT: 记忆激活] 实现用户、部门、企业记忆优先级、冲突解释、时间衰减和最小样本要求。 证据:首个切片限定 travel_application.transport_mode,按当前输入/规则 > 企业 > 部门 > 个人解析;组织记忆由管理员显式激活并受 30-365 天有效期约束,个人记忆继续执行 3 Case、2 次审批通过、跨 7 天门槛和时间衰减。同优先级不同值 fail-closed低优先级覆盖关系返回脱敏解释过期、撤销和并发换代均不会继续应用。
  • [CONCEPT: 记忆与学习] 新增租户化个人记忆与证据链接迁移,唯一键保证同一 Expense Case 对同一候选最多计一票。 证据记忆、证据、Decision、Feedback、Outcome、Expense Case 和 Claim 采用租户复合外键;证据同时校验 actor、员工和 Case/单据 owner跨租户或跨主体关系不能计票。
  • [CONCEPT: 记忆激活] 为常用出行方式实现隐式激活门槛3 个不同 Case 的一致服务端纠正、至少 2 次审批通过、证据跨 7 天草稿、client_observed、accepted 和重试不激活。 证据:只有当前有效的 server_verified 编辑、application_submitted 结果和最新审批状态参与计算;提交事件还必须绑定对应 expense_claim 与 Claim IDinvalidated/reversed 事实、同 Case 重放和旧请求均被排除。
  • [CONCEPT: 记忆与学习] 在服务端申请预览签发前只为空白出行方式应用 active 个人记忆,并返回 memory id、证据数与来源当前输入、主数据和企业规则优先。 证据:expense_application_preview_workflow.py 应用记忆后重新执行规则测算和签名;仅缺出行方式时前端仍请求服务端,命中记忆后可直接生成完整核对表。
  • [CONCEPT: AI 记忆与自动化设置] 提供当前用户记忆查询与“忘记此偏好”接口;撤销后清除可恢复值并在后续预览中不再应用。 证据:GET /api/v1/expense-application-memories/meDELETE /api/v1/expense-application-memories/{id} 均绑定当前租户和主体,越权以 404 隐藏资源存在性。
  • [CONCEPT: 记忆与学习] 当规则中心新增按职级、路线或金额禁用交通方式的制度维度时,在个人记忆应用前接入显式允许性判定、冲突抑制原因和回归测试。
  • [CONCEPT: 记忆与学习] 为 AI 申请预填记录用户原样采纳、显式字段修改和草稿/提交结果证据。 证据:expenseApplicationDecisionFeedback.jsuseApplicationPreviewEditor.jsexpense_application_learning.pyexpense_application_preview_decisions.py;改回原建议会清除字段差异,日期联动同步记录天数,最终值由服务端 facts 重建。旧预览保持 client_observed;服务端签发预览由版本化 HMAC 快照与最终 facts 逐字段比对,字段新增、删除或改值都标记为 server_verified 编辑。两者均保持 training_eligible=false,尚不直接训练模型或激活记忆。
  • [CONCEPT: 记忆与学习] 将小财管家、Steward 与通用 Orchestrator 的申请预览切换到认证签发与消费链路,并把结构化预览失败策略收口为 fail-closed。 证据:expense_application_preview_workflow.pyorchestrator_expense_application_workflow.pysteward_action_executor.pyuseTravelReimbursementApplicationPreviewActions.js;签发/动作请求 ID 可稳定重试,草稿续签回写服务端会话,字段接受/纠正按 server_verified 落账,未签发结构化预览不能保存或提交。
  • [CONCEPT: 记忆与学习] 从字段接受/修改/拒绝、退回、审批覆盖、付款和审计结果生成记忆证据。
  • [CONCEPT: 记忆与学习] 将已确认 few-shot 扩展到报销预审和审批辅助,并按租户、场景、制度版本过滤。 证据:few_shot_ingestion.pyfew_shot_retrieval.pyexpense_claim_historical_evidence.pyexpense_claim_pre_review.py;样本关系库和 Qdrant 同时绑定租户、场景、制度与规则版本,检索命中后再由关系库校验,旧版本标记 stale依赖异常返回空证据。公开 historical_case_evidence 与 AI 助手只显示“历史已确认/历史误报,仅供复核”的固定脱敏摘要,不暴露 sample ID、单号、人工评论或结论原文也不改变确定性结论、阻断数量、预算复核和审批路由。
  • [CONCEPT: 风险与预审] 完成 golden case、Prompt/规则版本、Canary、回归门禁和自动回滚的工程闭环。 证据Golden evaluator、版本化资产、真实 observation/label、盲审负样本、Release Monitor/Guard、Canary 与 stable 回滚组合测试通过;生产效果仍由试点章节单独验收。
  • [CONCEPT: 自动化决策] 实现默认 shadow、按动作开放 L3、L4 单独受控的代码策略。 证据Automation Policy 的 release_stage、企业上限、硬白名单和 L4 资格检查;资金/制度/高风险动作不进入自动执行。
  • [CONCEPT: 自动化决策] 在真实企业按周运行 shadow 并依据签字阈值逐项开放 L3/L4。 证据要求:生产样本、抽检、回滚演练和企业授权;本地代码测试不得替代。
  • [CONCEPT: 降级策略] 对模型、OCR、Qdrant、连接器和记忆服务实现稳定降级和可观测状态。 证据Runtime Chat attempt、OCR worker、Knowledge RAG、连接器 operational events/health、记忆 fail-closed 与发布告警均有明确失败状态和回归。

7. P1 前端实现:审批例外与 AI 记忆

  • [CONCEPT: 审批例外工作台] 按风险、金额、预算影响、等待时长和证据完整度排序审批事项。 证据:GET /api/v1/approval-workbench/itemsApprovalWorkbenchService 统一生成可解释优先级、风险/SLA/预算/金额/证据分项和排序原因;审批中心使用该投影,不再用前端临时状态覆盖服务端乐观并发状态。
  • [CONCEPT: 审批例外工作台] 展示预算压力、风险证据、材料完整度、历史标签和简短 AI 复核建议。 证据:工作台返回证据完整度、缺失证据、预算影响、风险摘要、历史确认标签及 advisory_only AI 建议;详情页风险卡读取持久化证据、政策依据、贡献度和决策轨迹,并明确禁止从风险卡直接审批。
  • [CONCEPT: 审批例外工作台] 补齐统一必要性摘要、完整政策/相似单证据和可编辑审批意见草稿。
  • [CONCEPT: 审批例外工作台] 为批准、退回和付款建立幂等动作协议与乐观前置条件。 证据:动作请求冻结 request_idexpected_statusexpected_approval_stage;服务端以租户 + 操作人 + 请求 ID 唯一账本、请求指纹、advisory lock、Claim 行锁和同事务事件保证同请求安全重放,不同内容或过期快照返回 409。首次完整 API 响应以不可变快照落账,单据后续推进后重放仍只返回首次结果,不读取或泄露后续状态。
  • [CONCEPT: 审批例外工作台] 为风险处置动作建立不可变原响应快照和历史安全重放。 证据:20260716_0012 为 append-only 风险事件增加 response_json;新事件在 INSERT 前原子写入完整响应重放只返回目标事件版本及以前的事件。0012 前无快照事件从 after_jsonversion <= target 的审计链安全重建,不读取当前处置投影。
  • [CONCEPT: 审批例外工作台] 建立高风险门禁与类型化风险处置生命周期。 证据:严重/高危可行动风险在任何审批副作用前阻断;确认风险、误报、补件、整改、豁免申请和完成处置具有乐观版本、请求指纹、租户权限、只追加事件和 Claim 共用锁。未持久化的原始高风险仍保守阻断,重大风险持久化失败 fail-closed。
  • [CONCEPT: 审批例外工作台] 补齐批量审批、委托、转交、加签、会签和超时升级交互。 证据:approval_tasks/approval_task_events/api/v1/approval-tasksApprovalTaskWorkspace.vue20260716_0013;支持数据库分页筛选、节点进入时间 SLA、委托/撤销、永久转交、顺序加签、并行会签、手动/调度升级和逐项独立事务批量结果。服务端动作集合与版本为唯一权限事实,筛选/页码可从详情返回恢复。
  • [CONCEPT: 审批例外工作台] 完成风险豁免申请、批准、拒绝、到期和审计展示闭环。 证据:20260716_0014risk_waiver_decision_policy.py、风险读投影与 RiskWaiverActionDialog.vue/RiskWaiverRecord.vue;申请人不能决定自己的申请,仅在职 finance/executive 可决定,过期 fail-closed全部事件保留版本、人员、请求 ID、原因和关键前后快照。
  • [CONCEPT: 审批例外工作台] 接入真实企微/钉钉/邮件触达和处理结果回写。
  • [CONCEPT: AI 记忆与自动化设置] 新增“我的 AI 记忆”,支持来源解释、修改、忘记和关闭个性化。
  • [CONCEPT: AI 记忆与自动化设置] 在申请核对表展示常用出行方式的记忆来源、证据数量和“忘记此偏好”,并在保存/提交后区分候选记录与已应用回执。 证据:TravelReimbursementMemoryPanel.vue 与独立样式分片承载记忆解释、学习回执和可访问的忘记入口;会话快照可跨刷新恢复已应用记忆。
  • [CONCEPT: AI 记忆与自动化设置] 新增企业/部门出行方式记忆管理首个低敏切片。 证据:租户管理员可创建、查看、更新和撤销企业/部门记忆,配置 30-365 天有效期;创建、更新、撤销使用请求指纹和稳定幂等键,作用域锁与数据库唯一约束阻止并发静默换代。接口只接受“飞机/火车/轮船”,自由文本、金额、客户、项目、附件和支付信息保持禁用。
  • [CONCEPT: AI 记忆与自动化设置] 扩展可配置保留策略、敏感等级目录和动作级自动化上限管理;在新增字段前先完成制度允许性与数据分级评审。
  • [CONCEPT: 前端] 展示自动化动作、执行依据、撤销入口、抽检状态和版本信息。

8. P2 实现:费用经营与价值证明

  • [CONCEPT: 节省与价值] 新增 Savings baseline、opportunity、realization、evidence、event 和去重/确认表结构。 证据:models/savings.py20260716_0015_savings_value_ledger.py 与模型/迁移测试。
  • [CONCEPT: 节省与价值] 实现预计机会、接受、执行中、实际结果、财务确认、拒绝、过期和冲回的严格状态转换。 证据Savings actions/realization 服务、版本/指纹、canonical benefit 去重与 PostgreSQL 并发测试;风险暴露保持独立护栏,不混入节省金额。
  • [CONCEPT: 费用分析与节省] 持久化员工、部门、费用类型、城市、项目和流程基线,记录窗口和样本量。 证据:savings_baseline_generation.py 与 baseline/insight 测试;维度、窗口、样本、算法版本、查询指纹和质量等级均冻结。
  • [CONCEPT: 费用分析与节省] 接入租户化供应商、合同价、数量和单位价格事实后生成供应商基线。 证据要求:真实供应商主数据和合同/采购事实;当前明确返回 supplier_dimension_unavailable,不从模拟应付数据伪造。
  • [CONCEPT: 费用分析与节省] 实现预算预测、异常归因、重复小额浪费和只读政策模拟准备项。 证据Savings insight budget/analysis/attribution缺正式反事实时 estimated_savings=None 且不创建机会。
  • [CONCEPT: 费用分析与节省] 接入真实供应商价格漂移分析。 证据要求:租户化合同价、数量、单位价和供应商证据;当前保持 coverage gap。
  • [CONCEPT: CFO 价值看板] 展示现金节省、工时价值、直通率、风险护栏、节省来源和责任人。 证据CFO API/analytics/dashboard现金、工时、风险和机会分卡缺数据使用 collecting/unavailable。
  • [CONCEPT: CFO 价值看板] 实现部门、项目、费用类型、供应商、城市、时间和单据下钻。 证据CFO filters、cfoValueSourceLinks.js、URL 状态恢复与前端回归;供应商无事实时显示缺口而非零。
  • [CONCEPT: CFO 价值看板] 每项节省支持查看基线、建议、执行、实际结果、确认人和证据。 证据:CfoValueOpportunityDrawer.vue 与 Savings detail projection无证据时不开放实际结果登记。
  • [CONCEPT: 指标与验收] 生成客户月度 ROI 报告,现金节省与工时价值分开披露。
  • [CONCEPT: 风险与开放问题] 建立节省归因复核、重复收益去重和客户财务签字流程。

9. P3 实现:商业化与规模复制

  • [CONCEPT: 商业计量] 在 P0 最小租户隔离基础上新增套餐、订阅、账期、配额、用量和增值模块授权模型。 证据商业模型、0016/0019/0021/0024 迁移、管理/查询 API 与商业工作台。
  • [CONCEPT: 商业计量] 按客户和权威 meter 记录模型、OCR、附件存储、连接器、分析任务与模块用量/成本。 证据Orchestrator、Runtime Chat、OCR、附件、连接器 permit/预占/结算;已识别运行入口资源组合 63 项通过。
  • [CONCEPT: 商业计量] 建立客户 ROI、平台贡献毛利、成本明细和私有部署成本输入模型。 证据:commercial_analytics.py、商业价值/成本前端;客户价值、平台收入和内部成本分账,多币种不合并。
  • [CONCEPT: 目标与非目标] 定义年度基础订阅、用量超额、智能风控、预算经营、价值洞察、企业集成和私有部署包。
  • [CONCEPT: 目标与非目标] 定价引擎仅允许对财务确认的已实现节省计算可选价值分享上限。 证据:commercial_pricing.py 使用 confirmed value、成本下限和成功费封顶实际合同仍需客户签署。
  • [CONCEPT: 连接器] 建立 ERP、HR、SSO、支付、电子档案和消息平台标准实施模板。
  • [CONCEPT: 权限与安全] 完成删除传播、数据导出、审计增强和私有部署安全验收,不把基础租户隔离留到本阶段。

10. 测试与验证

  • [CONCEPT: 测试方案] 完成 Expense Case/Link、业务事件幂等、租户边界、同事务回滚、申请转报销同 Case 和付款归档事件首批测试。 证据:容器内 pytest -q server/tests/test_expense_case_service.py 7 项通过;联合差旅主链路定向回归共 24 项通过。
  • [CONCEPT: 测试方案] 为 AI 新建申请直接提交补充统一事务回归,覆盖提交成功、事件失败回滚和仅保存草稿三条边界。 证据:容器内直接提交定向测试 3 项、申请提交回归 5 项、预算与 Expense Case 回归 13 项通过;相关 Python 文件 ruff --select F,I 通过。
  • [CONCEPT: 测试方案] 为 Expense Case 状态机、事件账本、AI 决策、结果、记忆、自动化和节省服务补充单元测试。 证据Case/Event、AI learning/memory、test_automation_eligibility.py、Savings model/service/API/E2E 与全量后端分片均通过。
  • [CONCEPT: 测试方案] 为服务端会话、管理员保护和 Bootstrap 重配置补充首批安全回归测试。 证据:test_auth_session_endpoints.pytest_auth_service.pytest_bootstrap_security.py;容器定向测试覆盖 token 摘要、伪造身份头、过期/撤销、登出原子收尾、业务经理越权和初始化后匿名重配置拒绝。
  • [CONCEPT: 测试方案] 为租户隔离、跨租户访问、规则/制度发布和双人复核等敏感动作补充安全回归测试。 证据Tenant Identity、Agent Asset、Knowledge、Ontology/Employee、Hermes/Report、Steward、Finance Dashboard、Approval、Release Review 与 ONLYOFFICE 安全测试通过。
  • [CONCEPT: 测试方案] 为 Expense Case GET 接口补充 owner、审批人、财务、管理员、无权限用户和整 Case 关联事件可见范围的 HTTP 权限测试。 证据:test_expense_case_endpoints.py 容器内 8 项通过,覆盖跨租户、无 Case、申请与报销关联摘要以及内部字段递归过滤。
  • [CONCEPT: 测试方案] 为 Alembic baseline、升级、旧数据迁移和回滚边界补充 PostgreSQL 集成测试。 证据fresh PostgreSQL 最终总探针 87 passed / 0 skipped / 0 failed,覆盖 62 项迁移、完整降级/再升级、旧结构迁移、复合租户约束、append-only 和有事实回滚保护head 为 0028。
  • [CONCEPT: 测试方案] 为当前 migration-owned schema 切片补充一次性 PostgreSQL 集成测试和危险 URL 防误连门禁。 证据:test_alembic_migrations.py 默认无显式 URL 时跳过,主机和库名必须带 disposable 标记;当前 0012 Head 在 tmpfs PostgreSQL 17 中通过完整迁移验证,覆盖空库升级、重复升级、审批动作账本、风险处置复合租户约束、只追加事件触发器、不可变响应快照及有数据降级拒绝、组织 active 脏数据升级前拒绝、版本化 few-shot 无损降级拒绝、外键级联、base 降级、legacy 哨兵保留、漂移拒绝和再次升级;临时容器自动清理,持久化开发库未被修改。完整 legacy baseline 仍保留在上一条未完成项中。
  • [CONCEPT: 测试方案] 验证审批动作幂等、任务编排、风险门禁、豁免决定权限和共同锁顺序。 证据:容器内本阶段后端回归 122 passed, 4 skipped、前端审批/单据中心/风险专项 60 passed、Ruff 与生产构建通过;一次性 PostgreSQL 17 空库迁移循环 1 passed、审批任务和风险并发 3 passed,证明同 request ID 并发只生成一个事件、陈旧版本只有一个胜者、风险重新打开与审批竞争时按 Claim 公共锁读取最新事实。
  • [CONCEPT: 测试方案] 为连接器幂等、重试、回执、失败恢复、重复付款和对账补充测试。 证据:连接器 service/endpoint/config/operational/concurrency 测试覆盖签名、防重放、冲突、错配、失败、ERP、退款和非生产隔离。
  • [CONCEPT: 测试方案] 跑通申请 → 票据 → 报销 → 预审 → 审批 → 付款 → 入账 → 归档端到端。 证据:test_expense_financial_value_chain_e2e.py 使用测试密钥自签 production-mode 事件,覆盖 HMAC、ERP posted、独立财务确认、Savings、商业价值和退款冲回契约不声明真实 provider 或真实现金。
  • [CONCEPT: 测试方案] 跑通首个个人出行方式切片的 AI 建议 → 用户修改 → 工作流结果 → 记忆激活 → 下次建议变化闭环。 证据:容器内记忆、预览决策、迁移与所有权组合回归 56 项通过、1 项条件跳过;一次性 PostgreSQL 迁移循环 1 项通过前端申请快速预览、个人记忆、Steward 与会话恢复组合 83 项通过Vite 生产构建通过Python Ruff F/I 与 git diff --check 通过。
  • [CONCEPT: 测试方案] 跑通首个行为采集切片AI 申请预填 → 用户接受/显式修改 → 草稿或提交结果同事务落账。 证据:test_user_agent_application_draft_events.pytest_reimbursement_endpoints.pyexpense-application-decision-feedback.test.mjsexpense-application-fast-preview.test.mjs;覆盖可信入口、模板/详情排除、隐私指纹、同事务事件关联、日期联动及异步乱序响应。容器内学习账本与迁移所有权定向 29 项、一次性 PostgreSQL 迁移 4 项和前端关键场景 5 项通过。
  • [CONCEPT: 测试方案] 跑通风险反馈 → few-shot → golden case → Canary → 回滚工程闭环。 证据风险处置学习、Golden evaluator、发布 runtime/telemetry/review/recall/monitor 与 PostgreSQL 并发测试;低 precision 和失败路径恢复 stable。
  • [CONCEPT: 测试方案] 跑通节省机会 → 执行 → 实现 → 财务确认 → ROI 看板闭环。 证据:test_savings_value_e2e.pytest_expense_financial_value_chain_e2e.py 和 CFO analytics/frontend 测试。
  • [CONCEPT: 测试方案] 为已有 Expense Case 事件时间线补充视图模型、404 降级、详情页接入及相关响应式回归,并完成前端生产构建。 证据:容器内 node --test 定向执行 99 项通过;npm --prefix web run build 通过。一次性克隆迁移库上的隔离后端已完成真实登录、身份读取和旧单时间线 200 联调;持久开发库仍未迁移,因此日常本地页面仍保持兼容提示。
  • [CONCEPT: 测试方案] 为 AI 申请草稿事件补充事务失败回滚、同快照幂等、同 run 多版本留痕和 Steward 重放回归。 证据:本轮受影响后端定向回归 36 项、Expense Case 前端兼容测试 9 项和 Python ruff --select F,I 在容器内通过。
  • [CONCEPT: 测试方案] 在现有开发数据的只读一次性克隆上验证迁移、历史回填和真实认证时间线链路。 证据:源库与克隆初始签名均为 40 张表、4 张费用单、105 名员工、248 条预算、62 个 Agent 资产;克隆升级后 dry-run 为 eligible=4apply created=4重复 apply created=0四条事件均为 system/suppressed登录、/auth/me、旧单时间线和登出均返回 200持久库复查不变且仍无 migration-owned 表。
  • [CONCEPT: 测试方案] 补充其余前端组件、键盘操作、移动真实接口和完整浏览器关键流程验证。
  • [CONCEPT: 测试方案] 验证服务端预览决策签发、字段新增/改值差异判定、跨会话拒绝、无 ID 降级防绕过、安全重放、独立密钥权限、续签失败容错、旧路径兼容、会话恢复和真实 PostgreSQL 迁移。 证据:容器内新增决策安全用例 9 项、旧快速保存/提交 4 项、申请学习账本 9 项、迁移与所有权 26 项通过且条件型 PostgreSQL 用例 1 项跳过;一次性 PostgreSQL 17 迁移 4 项、前端定向 3 组及 Vite 生产构建已通过。临时 PostgreSQL 已清理,持久开发库 8 张 migration-owned 表数量仍为 0。
  • [CONCEPT: 测试方案] 验证小财管家、Steward、通用 Orchestrator 的统一预览闭环、认证绑定、fail-closed、稳定重试和跨刷新恢复。 证据:容器内后端组合回归 50 项通过覆盖服务端预览、Steward 动作/图运行、跨租户 checkpoint、Orchestrator 匿名/普通用户/管理员来源授权及决策消费Python Ruff F/I 通过;前端结构化动作、会话恢复、工作台路由、富确认和 ai-application-preview-actions 共 18 项通过Vite 生产构建通过。共享规则工作簿相关套件按容器内串行执行,避免并行读取正在变动的 XLSX 产生非业务性 ZIP 竞争。
  • [CONCEPT: 测试方案] 所有后端、集成和迁移测试在当前主应用容器内执行,单条命令最大超时 60s。 证据176 个后端测试文件按有界分片或专项执行PostgreSQL 探针由应用容器运行,未在宿主机安装替代 venv。
  • [CONCEPT: 指标与验收] 记录测试、lint、typecheck、构建、端到端和未覆盖风险证据。 证据后端分片与费用主服务通过PostgreSQL 87/0/0Web 815/0 与 Vite buildMobile lint/typecheck新增 Python Ruff、compileall、受门禁核心类/组件 800 行检查和 git diff --check。未覆盖的生产/试点项保留在第 11-12 节。

11. 分阶段试点与价值验证

  • [CONCEPT: 指标与验收] 确认开发前置门禁已完成,试点场景、客户群体、基线和纵向验收未发生未经评审的漂移。
  • [CONCEPT: 自动化决策] 前四周只运行建议和 shadow不开放高风险自动化。
  • [CONCEPT: 指标与验收] 验证报销创建时间、自动填充率、首次提交完整率、人工触点和风险护栏。
  • [CONCEPT: 节省与价值] 由客户财务确认现金节省、工时价值、归因口径和去重结果。
  • [CONCEPT: 商业计量] 计算试点客户的订阅、模型、OCR、实施、支持和集成贡献毛利。
  • [CONCEPT: 指标与验收] 输出 90 天 ROI 报告和年度合同/扩展模块建议。

12. 文档收尾

  • [CONCEPT: 指标与验收] 将试点实际基线替换方向性目标,冻结正式验收阈值。
  • [CONCEPT: 风险与开放问题] 更新目标客户、试点场景、支付边界、连接器范围和自动化授权结论。
  • [CONCEPT: 本轮实现记录] 每个工程阶段完成后补充实现文件、迁移、接口和容器测试证据。 证据:本 CONCEPT/TODO、2026-07-16/17 分功能文档与 engineering-closure-and-production-readiness 总验收文档。
  • [CONCEPT: 功能一句话] 确认最终工程实现持续服务于“不用填表、少被退回、真正省钱”的核心结果。 证据零录入票据、服务端预审、审批例外、可信学习、Savings/CFO 与商业计量形成同一费用闭环;真实成效仍由第 11 节企业试点验证。