proposal.md 5.3 KB

Change: MRC-SVC-LOG-001 流转日志与时间轴 L1+L2 后续 first-change (V2 模式)

Why

[基于项目总控入口.md §2026-10-10 后端正式开发准入令 v1 + 已签发授权 + first-change MRC-SVC-CFG-002 / next-first-change MRC-SVC-CFG-001 / 后续 first-change MRC-CORE-BASE-001 V2 模式验证]

L1 联调 first-change(MRC-SVC-CFG-002 业务字典与文案中心)+ next-first-change(MRC-SVC-CFG-001 系统参数中心)+ 后续 first-change(MRC-CORE-BASE-001 领域地基与编号规则)已验证 V2 模式业务代码生成模式可复用。本变更选定 MRC-SVC-LOG-001 流转日志与时间轴 作为后续 first-change,理由:

  1. L1 只读 + 部分 L2 写入(只追加 / 禁更新 / 禁物理删除) — 边界清晰,只追加语义保证审计可追溯
  2. 已在 first-change / next-first-change / 后续 first-change V2 模式中验证业务代码生成模式可复用 — jsonObj 接口 + Global 索引 + operatetable 公共类模式可直接迁移
  3. 下游消费方:FSM-001 transition() 同事务内部调用 + REJECT-001 / PAY-001 / MSG-001 异步消费方 + PC 端工作台右栏 + 小程序详情/进度页
  4. 接口对齐:接口映射.md §流转日志 + MRC-SVC-LOG-001 04-接口与数据清单.md §1(writeStatusLog 10070003 / getStatusLog 10070010+11 / findLogRowByNaturalKey 10070012 / getActorName 10070013;healthCheck 10070999)
  5. 模板 BSOrderStatusLog / BSLogActorCache 不存在 — 按典型业务模型 + V2 Global 索引模式补全(VisibleToPatient / ActorDr / ActorName / ActionCode 18+5 枚举 / 自然键复合唯一索引)
  6. 授权范围:项目负责人书面授权_正式接口接入_v1.md §3 19 个模块清单第 15 项("MRC-SVC-LOG-001 流转日志与时间轴")+ §4 签字(高井刚 / 2026-10-9)+ OPENSPEC_STRICT_整改清单.md strict 模板已结(2026-10-09)

V2 模式改造说明(2026-10-10):

  • 原 V1 模式: MRC.Service.* + User.BS* IRIS 持久化 + SqlProc + 多参数签名 + %Status 返回
  • 新 V2 模式: src.<SubModule>.* 命名空间 + (%RegisteredObject, %XML.Adaptor) [ Not ProcedureBlock ] + jsonObj 接口(params.%Get(0) / session.%Get(0)) + %Library.DynamicObject 返回(包含 errorCode / errorMessage / result)+ Global 索引(^BSOrderStatusLogI / ^BSLogActorCacheI)+ 公共类 ##class(src.util.operatetable).Insert/.Update/.Delete
  • 错误码通过 ##class(src.Interface.Message).GetErrorMessage(<code>) 获取
  • 追加语义约束:写日志接口 writeStatusLog 仅追加,禁更新 / 禁物理删除(由 Service 层 Guard 兜底)

What Changes

  • 新增 V2 模式业务类:src.SvcLog.BSOrderStatusLog(3 个方法:WriteStatusLog — 仅追加 / GetStatusLog — PC 全量+小程序过滤 / FindLogRowByNaturalKey — 自然键回查)
  • 新增 V2 模式业务类:src.SvcLog.BSLogActorCache(1 个方法:GetActorName — Actor 名称缓存,避免重复查询 User.HBUser)
  • 新增 V2 模式服务类:src.SvcLog.MRCSvcLogService(4 个委托方法:WriteStatusLog / GetStatusLog / FindLogRowByNaturalKey / GetActorName)
  • 新增 V2 模式 REST 类:src.SvcLog.MRCSvcLogREST(4 个 WebMethod + XData UrlMap:POST /api/v2/mrc/svc-log/status-log/write + POST /api/v2/mrc/svc-log/status-log/list + GET /api/v2/mrc/svc-log/status-log/find-by-natural-key + GET /api/v2/mrc/svc-log/actor/:dr/name)
  • 新增 单元测试:Tests.MRCSvcLogServiceTest(4 个方法:TestWriteStatusLog / TestGetStatusLog / TestFindLogRowByNaturalKey / TestGetActorName)
  • 不实现 healthCheck 探针 + onStatusLogWritten 缓存失效内部钩子 — 后续 OpenSpec change 处理
  • 不修改 V1 已生成的 47 个 .cls 文件 / Demo 源码 / 模版 / LICENSE / README / project.config

Impact

  • Affected specs: 业务规则裁定/P-01-1 ~ P-01-6(已结 6/6)+ 接口映射.md §流转日志 + MRC-SVC-LOG-001 04-接口与数据清单.md §1/§2/§3/§5/§6
  • Affected code: openspec/changes/MRC-SVC-LOG-001-statuslog-readonly-release-v1/specs/spec.md
  • Affected modules: MRC-SVC-LOG-001(本模块);下游消费方:FSM-001(transition 同事务)+ REJECT-001(异步回查)+ PAY-001(异步回查)+ MSG-001(异步回查)+ PC 工作台右栏 + 小程序详情页 + PC-ORDER-001/002/003 详情抽屉
  • Dependencies and risks:
    • 依赖 MRC-PC-AUTH-001 登录会话(已 Demo 验收,L1 只读无需强制鉴权)
    • 依赖 User.HBUser(§14-C2 复用,查询 actorDr → actorName);通过 BSLogActorCache 缓存
    • 18+5 类 ActionCode 枚举待 v2 评审时由 FSM 模块 owner 同步锁定(预填版本接受 24 类)
    • GOV-006 凭据审查待运维期处置(不影响 L1 只读 / L2 写入)
    • 写日志接口仅追加语义需 Service 层 Guard 兜底(%OnValidateObject() 校验 + 复合唯一索引 NaturalKeyUnique)
  • Authorization:
    • 项目总控入口.md §2026-10-09 后端正式开发准入令 v1
    • 项目总控入口.md §2026-10-10 V2 模式改造
    • 项目负责人书面授权_正式接口接入_v1.md §3(19 个模块清单第 15 项)+ §4 签字(高井刚 / 2026-10-9)(待 V2 模式重新签字)
    • 关联 OpenSpec change:MRC-SVC-CFG-002-listbizdict-readonly-release-v1(first-change V2 模式参照)
    • 关联 OpenSpec change:MRC-SVC-CFG-001-listconfiggroups-readonly-release-v1(next-first-change V2 模式参照)
    • 关联 OpenSpec change:MRC-CORE-BASE-001-corelock-idempotency-readonly-release-v1(后续 first-change V2 模式参照)