- FlowMapAdminService:previewGroupDepts/importGroups(学校子树 type=7 容器→子组为科室, deptKey=UserBase 组 id,成员=组内用户;已存在启用中映射跳过;语义与 svc-hall buildDeptTree 对齐) - FlowAdminController:GET /map/groupPreview + POST /map/importGroups - flow-center.map.dept-group-type(默认 7) - 含 2026-09-13/14 存量:CallbackAppSigner 回调签名、流程编辑器 sql、示意图(F1-F4)
与其他子应用(Notice / svc-hall / 事项库)统一:GetUserMod 不再返回本应用硬编码 MENUS, 改经平台 SDK YschBaseOpenApi.getUserModule(userId, schId) 取当前用户在本应用 (yh.open.app-key=100019)下的已授权模块树,层级由平台契约 BoaModule.children 承载, 本侧仅做前端 layout 契约的字段改名映射(toFrontendTree),不再本地组树。 设计概览 §9.4「菜单为本地路由约定、不进 app_module」的口径自此作废。 两处刻意的差异与取舍: 1) modId 取 custom_id 而非主键 id:front router/routes.ts 的 meta.modId 约定是 100~105, 等于 app_module.custom_id,旧硬编码菜单发的也是这些值;若照抄其他子应用「modId=主键id」, 前端 modId 兜底匹配会永久失配(仅剩 path 匹配可用)。故 custom_id 可解析为数字时取之, 否则回退主键 id。 2) 不保留本地 MENUS 兜底:静默回退会把「UserBase 未配 app_module / 未授权」伪装成正常。 配置缺失应表现为空菜单并被立刻发现。发布顺序必须先是 flow-center接入UserBase菜单.sql (含 app_module 写入与角色/组授权),再发本应用。 新增 FlowBaseControllerTest 4 例:层级原样保留与字段改名、children 恒为数组(含上游未展开 的 null 归零)、custom_id 非数字回退主键、path 缺失给空串且 null/空入参不抛 NPE。 映射方法放宽为包级可见以免为测试改写 YschBaseOpenApi 全局静态客户端、污染共享 JVM 内其它用例。
Spring Boot 流程引擎服务:流程定义/实例/任务、审批人解析、 回调分发、oapi 接口及单元测试。 保留远程 .gitea/workflows/build.yml 与 docker/Dockerfile, 新增 .gitignore 排除 target/ 构建产物。