tasks.md 19 KB

任务清单 — 统一能力开放平台产品化改造

Task 1: 增量规格与测试基线 ✅

  • 固化通用能力、安全边界、流程启动、文档与调用指南设计。
  • 复用一期 Spec、测试标准和现有执行日志。

Task 2: 通用执行适配层 ✅

  • 新增通用已发布能力描述符、解析器和执行器接口。
  • 迁移 BUSINESS_ACTION/FLOW_ACTION 解析,保持网关协议兼容。
  • 覆盖未知/重复来源失败关闭测试。

Task 3: REST OAuth Audience 分离 ✅

  • 新增 openapiResource 配置。
  • Token 签发/校验支持目标 resource;MCP 与 REST 各自严格校验。
  • 更新示例配置、错误信息及测试。

Task 4: Markdown 文档与调用指南 ✅

  • 重构文档服务,从发布版本生成 Markdown 与 OpenAPI。
  • 增加客户端就绪诊断和 OAuth/HMAC 示例。
  • 修复前端 Blob 下载,完成调用指南界面。

Task 5: 系统服务注册与流程启动 ✅

  • 新增代码注册的 SYSTEM_SERVICE SPI 和控制面发布入口。
  • 注册 flow.process.start,固定流程模型与变量契约。
  • 使用 USER 委托身份调用 FlowClient,执行前重校验快照。

Task 6: 前端注册与用户闭环 ✅

  • 注册弹窗增加系统服务/流程模型选择。
  • 能力目录主入口改为调用指南。
  • 提供 Markdown/OpenAPI 两种下载。

Task 7: 增量验证与执行记录 ✅

  • 执行目标模块测试、Admin 聚合编译。
  • 执行前端定向 ESLint 与生产构建。
  • 将结果、警告与环境跳过项写入 execution-log.md

Task 8: 授权参数与字典展示修复 ✅(待用户验证)

  • 显式敏感请求提交前重新同步服务端加密配置,配置无法确认时失败关闭。
  • 为能力授权必填字段补充字段级中文校验消息。
  • 修复字典请求失败后缓存空数组的问题,改为逐项加载、保留成功结果并自动重试一次。
  • 新增能力来源类型和行为类型字典,能力目录、注册摘要和授权操作统一使用字典展示。
  • 按用户要求不执行测试、构建和服务联调,验证项交由用户环境完成。

Task 9: OAuth 路由、能力恢复与在线联调闭环 ✅(待用户验证)

  • 抽取 Identity 统一生效条件;Identity 开启或 Open Gateway 开启时,Token/OAuth/审计运行组件同步注册,修复 /oauth2/token 404。
  • 增加能力重新启用接口和目录操作,启用前校验当前发布版本有效。
  • 调用指南增加真实 OAuth/HMAC 在线测试,USER 委托支持临时输入受信 OIDC subject_token
  • 对有副作用的能力增加二次确认和一次性 Idempotency-Key;测试请求与响应完整展示并以脱敏 JSON 下载。
  • 增加 OAuth/HMAC Java 17 标准库示例和客户端级 Markdown 接入示例下载,密钥统一从环境变量注入。
  • 按用户要求不执行 Maven、前端构建、Flyway、接口调用或浏览器测试,验证项交由用户环境完成。

Task 10: 无 OIDC 客户端签名用户断言 ✅(待用户验证)

  • 为 USER_DELEGATION/HYBRID 客户端提供独立 RSA-2048 用户断言密钥,私钥仅一次返回,公钥落库并支持轮换/停用。
  • 增加外围用户标识与 Forge 普通用户的管理员预绑定,原始标识只保存哈希和脱敏提示。
  • 增加专用 Token Exchange token type、RS256 验签、固定 issuer/audience/clientId、两分钟 TTL 和 Redis jti 防重放。
  • 管理端增加用户断言配置、密钥下载和身份映射;调用指南、在线测试与 Java 17 接入示例同步支持。
  • 按用户要求不执行测试与构建,验证清单留给用户环境执行。

Task 11: Capability Token 日志隔离与执行适配器诊断 ✅(待用户验证)

  • OAuth/OpenAPI 协议端点不再进入 Sa-Token 租户解析和通用操作日志,避免把有效 fdu_ Token 误报为无效登录 Token。
  • Open Gateway 显式依赖业务动作和系统服务执行适配器,并声明 Flow Action 自动配置顺序。
  • 调用指南新增“执行能力”阻断检查;未知来源/行为或关闭的流程适配器在在线测试前直接给出中文原因。
  • 用户断言页面说明“每个外围用户只需预绑定一次”,保持默认失败关闭,不允许客户端凭 sub 任意冒充 Forge 用户。
  • 按用户要求不执行 Maven、前端构建、服务启动或接口测试,仅做静态检查并交由用户验证。

Task 12: Capability 可信租户上下文闭环 ✅(待用户验证)

  • 修复 /oauth2/token 外围身份映射查询缺少租户上下文导致的 MyBatisSystemException
  • 新增 Capability 专用租户上下文边界:设置可信租户、强制启用租户隔离、跳过不适用于认证基础设施的用户数据权限,并在调用结束后恢复原线程状态。
  • 覆盖 Token 签发、Bearer 校验、Token 撤销、客户端签名断言映射和 HMAC 服务身份加载,避免修复首个查询后在下一张租户表再次失败。
  • 全局客户端/Token 凭据查询继续仅使用显式安全键和 Mapper 租户拦截豁免,不接受请求自报租户。
  • 按用户要求不执行 Maven、服务启动或接口测试,仅做静态检查并交由用户验证。

Task 13: 能力审计可信租户边界与 SQL 兼容修复 ✅(待用户验证)

  • 修复审计身份条件使用 MySQL <=> 导致租户拦截器 JSqlParser 解析失败、网关返回“能力审计服务暂时不可用”的问题。
  • 保留 service_user_id 的 NULL 安全比较语义,使 USER 委托与 SERVICE 调用共用同一审计更新逻辑。
  • 审计服务使用已校验的显式 tenantId 自行建立租户上下文,覆盖预留、最终更新、失败补记、冲突查询和后台审计列表,并在调用后恢复原线程状态。
  • 审计存储受控跳过用户 DataScope,始终强制租户隔离开启,不把审计表加入全局忽略名单。
  • 审计失败日志补充底层异常堆栈,但不记录 Token、密钥和业务请求/响应报文。
  • 按用户要求不执行 Maven、服务启动或接口测试,仅做静态检查并交由用户验证。

Task 14: 已发布能力版本升级与授权版本调整 ✅(待用户验证)

  • 能力目录增加“发布新版本”,读取当前不可变版本草稿并自动建议下一补丁版本。
  • 升级弹窗锁定能力编码、来源类型和业务对象/动作,仅允许通过受控发布器读取最新对象版本、流程绑定或系统服务快照。
  • 服务端拒绝版本倒退以及借升级切换能力来源;同版本幂等发布仍需通过不可变快照校验。
  • 授权管理增加有效授权修改入口,允许显式更新 PINNED 基准版本或切换 FOLLOW_MAJOR,保存时重新校验目标版本策略。
  • 按用户要求不执行 Maven、前端构建、服务启动或接口测试,运行结果交由用户环境验证。

Task 15: 调用指南授权版本与流程绑定一致性 ✅(待用户验证)

  • 调用指南同时返回当前能力版本、授权策略、授权基准版本和实际解析版本,避免把 PINNED 1.0.0 误解为新发布的 1.0.1 没有生效。
  • 请求 Body、OAuth/HMAC 和 Java 示例统一按客户端实际授权版本生成,不再混用能力当前版本 Schema。
  • FLOW_ACTION 比较授权版本与当前版本的 bindingIdflowModelKeypublishedObjectVersion 快照;已漂移时在真实测试前明确阻断并说明会触发 FLOW_BINDING_MISMATCH
  • 调用指南增加“切换到当前版本”入口;后端保留授权策略、字段/操作策略和有效期,重新校验后仅更新授权基准版本,成功后自动刷新指南。
  • 按用户要求不执行 Maven、前端构建、服务启动、接口调用或浏览器测试,运行结果由用户环境验证。

Task 16: 流程 START 真实记录提示与错误语义 ✅(待用户验证)

  • 保持低代码流程安全边界:START 只为已保存业务记录启动流程,不允许开放网关用任意 recordId 创建孤立流程或绕过表单校验。
  • 流程能力发布 Schema 为 recordId 增加正整数格式、真实记录说明和替换型示例,供后续发布版本生成准确文档。
  • 调用指南按实际授权版本动态补充流程操作说明;在线测试在请求 Body 前明确提示先保存记录、复制真实主键,并使用实际委托用户的数据权限。
  • 业务记录不存在或不可见时统一返回 HTTP 404 + RESOURCE_NOT_FOUND,在线测试摘要直接显示错误码和业务原因,不再误报 SCHEMA_INVALID 或只显示 HTTP 状态。
  • 按用户要求不执行 Maven、前端构建、服务启动、接口调用或浏览器测试,运行结果由用户环境验证。

Task 17: 一次提交业务申请与安全调用日志 ✅(待用户验证)

  • 新增 FLOW_ACTION/SUBMIT,从已发布低代码模型提取允许字段、必填字段、类型、长度、格式、默认值、字典类型和业务说明。
  • SUBMIT 请求只接收 data 业务字段,用户、租户、组织、审计字段、单据状态和流程字段由可信委托身份及平台配置生成。
  • 记录创建与执行日志 recordId 检查点使用同一独立事务;后续流程启动失败重试复用原记录,避免重复申请。
  • 成功响应返回 recordId/businessKey/processInstanceId/flowModelKey/flowStatus,OpenAPI、Markdown、调用指南和在线测试同步展示详细字段说明。
  • 注册弹窗默认推荐“提交业务申请”,保留“发起已有记录流程”作为高级集成动作,并允许按字段白名单发布。
  • 开放网关入口和编排器增加安全结构化控制台日志,覆盖入口、认证、授权、幂等、成功、失败与耗时,不记录 Token、密钥或业务 Body。
  • 外部运行数据源无法与本地幂等检查点形成数据库原子事务,注册页提前禁用 SUBMIT 并说明原因,服务端发布和执行继续失败关闭。
  • 按用户要求不执行 Maven、pnpm、服务、Flyway、接口或浏览器测试,仅进行源码与差异静态检查。

Task 18: 业务动作发布候选诊断 ✅(待用户验证)

  • 新增业务动作注册来源接口,动作和可写字段统一来自不可变业务对象发布快照,不再混用设计草稿。
  • 复用 SecureActionStepValidator 输出 publishable/unavailableReason/stepTypes,禁止前端复制安全步骤白名单规则。
  • 注册弹窗保留不可发布动作但将其禁用,标明“未配置执行步骤 / 步骤暂不支持 / 已停用”,并提供业务对象设计器入口。
  • 直接调用发布接口仍失败关闭,错误信息包含动作名称、具体原因、修正位置和当前受支持步骤。
  • 按用户要求不执行 Maven、pnpm、服务、Flyway、接口或浏览器测试,仅进行源码与差异静态检查。

Task 19: 页面“新增”与服务端创建能力语义拆分 ✅(待用户验证)

  • 读取离职申请真实对象及最新发布快照,确认 v39 中“新增”为 OPEN_PAGE 页面按钮且 actionConfig={},草稿与发布快照一致,不是未发布导致。
  • 自动化动作设计器按真实语义拆分页面操作、流程入口和服务端自动化;新增/编辑/删除页面按钮不再进入自动化列表,原页面按钮配置和运行行为保持不变。
  • 业务动作发布校验对 OPEN_PAGESTART_FLOW 空步骤返回面向使用者的具体原因,不再笼统提示“缺少执行步骤”。
  • 能力注册页识别“新增”页面按钮后说明它不会在服务端创建记录,并提供“改为提交业务申请”入口,保留业务动作直接发布的失败关闭边界。
  • 按用户要求不执行 Maven、pnpm、服务、Flyway、接口或浏览器测试,仅执行只读数据核查和源码静态检查。

Task 20: 流程动作 Schema 关键字兼容修复 ✅(待用户验证)

  • 修复 START/APPROVE/REJECT 的 recordId.pattern 被能力内核拒绝,导致 /ai/capability/flow-action/publish 返回 SCHEMA_UNSUPPORTED
  • 一并清理 SUBMIT 可能生成的 format/multipleOf/default/example 未支持关键字,避免日期、小数和默认值字段继续触发同类发布失败。
  • recordId 继续使用字符串承载长整型 ID;1 至 19 位十进制正整数约束写入字段说明,并由流程执行适配器在调用时严格解析和校验。
  • 日期格式、小数精度和默认值进入字段说明,真实写入仍由低代码运行时执行类型、长度、精度、默认值和数据库约束校验。
  • 数组字段生成带明确元素类型的 items,默认按字符串元素失败关闭,支持通过受控字段扩展 advancedProps.itemType 声明基础元素类型。
  • 增加发布器回归测试代码,直接使用 CapabilitySchemaValidator 校验 START 与包含日期、小数、默认值、数组字段的 SUBMIT Schema;按用户要求不执行测试或构建。

Task 21: SUBMIT 流程动作字典强制刷新 ✅(待用户验证)

  • 只读核查确认 Flyway v1.0.81 已成功执行,默认租户字典包含启用的 SUBMIT/START/APPROVE/REJECT,SUBMIT 排序第一且为默认值。
  • 确认字典 /system/dict/data/list 直接查询数据库,本次页面缺项来自前端 useDict 全局 Map 在 SPA 生命周期内长期复用旧结果。
  • 能力注册弹窗每次打开前强制重载 ai_capability_flow_operation,再根据最新字典选择默认动作。
  • 从业务动作诊断切换到“提交业务申请”前同样强制刷新,避免旧缓存把 SUBMIT 再回退为 START。
  • 字典请求失败或刷新后仍不存在 SUBMIT 时显示具体原因及“重新加载流程动作”入口,不在 Vue 页面硬编码字典选项。
  • 按用户要求不执行 pnpm、服务、接口或浏览器测试,仅进行数据库只读核查和源码静态检查。

Task 22: 幂等层异常边界与 Schema 诊断修复 ✅(待用户验证)

  • 修复通用幂等模板把 action 内的 Schema/业务异常捕获成“开放API幂等服务暂不可用”的错误边界问题。
  • Redis 锁、幂等快照加载、并发回查和快照写入分别记录安全 phase 与完整异常链;不记录 Idempotency-Key、Token 或业务 Body。
  • Schema 校验失败保持 HTTP 400 + SCHEMA_INVALID,响应 message 返回中文具体原因,data 返回 failureStage/schemaPath
  • 按用户要求不执行 Maven、pnpm、服务、接口或浏览器测试,仅进行源码和差异静态检查。

Task 23: 低代码字段保存与能力类型映射一致性 ✅(待用户验证)

  • 修复桌面版字段设计器顶部保存错误依赖移动端抽屉 propertyVisible 的问题,右侧字段属性修改现在会调用真实字段更新接口。
  • 字段类型契约发生变化时明确提示后续执行数据表同步、业务对象重新发布和能力新版本发布,避免把页面草稿误认为已发布外部契约。
  • 新增统一低代码能力类型解析器,流程 SUBMIT 与普通 BUSINESS_ACTION 共用同一映射规则。
  • SQL 类型先归一化再映射,兼容 int(11)bigint unsigneddecimal(18,2)tinyint(1);同时以 NUMBER/MONEY/SWITCH 等业务类型和数字组件作为受控语义补充。
  • 保持已发布业务对象快照和能力版本不可变,不按字段名称猜类型、不直接修改用户数据库数据。
  • 按用户要求不执行 Maven、pnpm、服务、Flyway、接口或浏览器测试,仅进行源码和差异静态检查。

Task 24: 低代码业务字段与物理列双向映射 ✅(待用户验证)

  • 只读核查确认离职申请发布版本 40 和运行配置版本 40 均包含业务字段 dpe,其物理列为 field_input4,真实数据表也已存在该列。
  • 修复动态 CRUD 仅从数据库元数据推导 camelCase/snake_case、忽略发布模型 columnName 的问题;业务字段 dpe 现在会稳定写入 field_input4
  • 统一覆盖列表查询、定时候选、树查询、自定义查询、普通新增/修改、内部新增/修改、主表关联、单号生成、脱敏字段和导出查询的主模型字段映射。
  • 读取结果补充稳定业务字段别名,保留原列键兼容存量页面;能力 CREATE_RECORD 后续步骤也能按业务字段编码读取创建结果。
  • 真实物理列缺失时返回包含业务字段、目标列、运行配置和数据表的明确诊断,不再只提示“字段不存在”。
  • 按用户要求不执行 Maven、pnpm、服务、Flyway、接口或浏览器测试,仅执行数据库只读核查和源码静态检查。

Task 25: SUBMIT 建单后事务可见性与委托数据权限 ✅(待用户验证)

  • 按 requestId 只读核查确认 SUBMIT 已创建并检查点记录 recordId=19,记录归属 tenant_id=1/create_by=45/create_dept=21,不是记录缺失或委托身份填充错误。
  • 确认数据库使用 REPEATABLE-READ;外层流程动作事务先读取能力元数据,内层 REQUIRES_NEW 建单后,外层旧快照无法读取新记录并误报 RESOURCE_NOT_FOUND
  • SUBMIT 动作事务显式使用 READ_COMMITTED,保证读取到检查点事务已经提交的记录,同时保留独立建单检查点和同幂等键恢复语义。
  • 数据权限服务优先使用可信 ExecutionIdentity 的真实委托用户;只有没有外围执行身份时才回退 Sa-Token 登录态,支持 FOLLOW_SYSTEM 数据权限。
  • 流程启动记录查询为空时增加仅含租户、对象、配置、记录 ID、委托用户、当前组织及安全开关的诊断日志,不打印 Token 或业务报文。
  • 按用户要求不执行 Maven、pnpm、服务、Flyway、接口或浏览器测试,仅执行数据库只读核查和源码静态检查。

Task 26: 客户端接入工作台与契约易用性优化 ✅(待用户验证)

  • 能力目录增加受控编辑和逻辑删除;已发布版本契约继续不可变,删除前要求停用并撤销有效授权。
  • 调用与测试重排为四步,页面与下载示例收敛为 Curl/Java,补充递归请求/返回字段、中文含义、示例、说明和业务校验。
  • 新建客户端表单补充主体模式、服务账号、组织、认证和有效期说明;一次性凭据只存当前 SPA 内存并自动带入在线测试。
  • 客户端工作台聚合凭据、授权、外围用户映射和调用日志;旧授权/日志路由保留但从主菜单隐藏。
  • 外围用户映射改为服务端分页搜索,支持管理员显式启用已验签手机号唯一匹配;默认继续使用预绑定并保持失败关闭。
  • 调用日志增加实际调用用户、失败阶段和脱敏错误摘要详情,不记录 Token、密钥、手机号或业务 Body。
  • 新增 Flyway v1.0.82 维护字段、映射模式字典及菜单聚合;按用户要求不执行 Maven、pnpm、服务、Flyway、接口或浏览器测试,只做静态检查。

Task 27: 调用日志检索与调用测试页签化 ✅(待用户验证)

  • 调用日志分页查询关联能力目录和系统用户,支持请求 ID、能力名称/编码、调用用户 ID/用户名/姓名筛选。
  • 客户端工作台日志列表增加紧凑筛选栏,固定请求 ID、调用时间和操作列,并直接展示能力名称/编码及真实调用用户。
  • 独立兼容日志页同步筛选参数和用户友好列,详情继续保留结果码、错误码、Schema 路径、Trace ID 等诊断信息。
  • “调用与测试”改为接入概览、接口契约、示例代码、在线测试四个独立页签;客户端选择与版本告警保持全局可见。
  • 按用户要求不运行 Maven、pnpm、服务、Flyway、接口或浏览器测试,只执行差异空白和冲突标记静态检查。