Files
flow-center-front/src/router/routes.ts
T
chenxing 98ea069691
build / build (push) Successful in 1m58s
feat(onboarding): 接入向导五步页 + 配置生成器(议题二 P1)
把子应用接入从「人背文档 + 逐字对齐字符串」变成「向导引导 + 机器生成正确配置 + 每步可自检」。

- Onboarding.vue:五步(应用档案 / 工程接入 / 回调注册 / 流程编排 / 联调验收),步骤条可任意跳转不强制线性
- STEP② 配置生成器为核心:按「端点形态(平台验签式/X-Flw 式)× 接入场景(新接入/存量升级)× ① 的 context-path/bizType」实时生成 yh.flow-callback 块、Maven 依赖、FlowCallbackHandler 骨架。X-Flw 式追加「端点第二段非 oapi、必须显式 callback-url 直连」警示;无 ctx 时 base-path 整行注释。对齐规范 §7.2 推导式
- 前置条件清单把散落文档里的前置变成可勾选待办;Redis 公共组件与 trust-registry 两条高危静默断点红底强调
- STEP③ 登记检查:私网/开发机地址、base_path 漏填、与声明的 target 不一致逐条判定给修复建议;「发一条 flow.ping」复用 callbackProbe
- STEP④ 变量契约显性化:解析 contentJson 取 CONDITION 节点出边表达式,与已知变量(近 50 条办件 formData 聚合 + 内置 8 个,口径同编辑器)核对,引用从未出现的键即警示「运行时会挂起」
- STEP⑤ 六项自检 + 一键生成 markdown 自检报告(纯前端拼装不落库)

数据源全部复用已有接口(appList/regList/callbackProbe/defList/defGet/callbackLogs/adminInstances),零新增表、零新增写接口。路由 /admin/onboarding(modId 108,需 UserBase 配 app_module)。vite build 通过,产物已构建进 front/dist/。
2026-10-15 15:50:08 +08:00

107 lines
5.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { RouteRecordRaw } from "vue-router";
/**
* 流程中心路由。菜单自 2026-09-15 起改由 UserBase app_module 下发(与 Notice/svc-hall/事项库一致,
* 层级经 BoaModule.children 承载),本表仍是路由的唯一来源,两处需保持对齐:
* ① path 必须与 app_module.path 逐字一致(layout 优先按 path 匹配菜单高亮,modId 仅兜底);
* ② meta.modId = 对应 app_module.custom_id(后端 FlowBaseController 取 custom_id 作 modId)。
* 数据/授权维护见 UserBase 侧「模块管理」与 flow-center接入UserBase菜单.sql。
* 办理页 /task/:taskId 为 UserMsg jumpPath 落地页(不挂菜单)。
* <p>
* 详情/深链页(不挂菜单)通过 meta.parentId 关联父级菜单(UserBase 同款范式):左侧菜单保持
* 父级高亮、面包屑补全"父页>本页"。同一详情页可能被多个列表进入(如办件详情既可从"我提交的"
* 也可从"办件记录"),此时列表页跳转带 ?pid=<父菜单modId> 动态覆盖 meta.parentId 静态默认。
*/
const routes: RouteRecordRaw[] = [
{
path: "/workbench",
name: "flow_workbench",
component: () => import("@/views/flow/Workbench.vue"),
meta: { title: "工作台", modId: 100 },
},
{
path: "/task/:taskId",
name: "flow_task_handle",
component: () => import("@/views/flow/TaskHandle.vue"),
// 父级默认指向我的待办所在的"工作台"(外部消息落地页无 pid,走静态默认)
meta: { title: "任务办理", parentId: 100 },
},
{
path: "/instance/:instanceId",
name: "flow_instance_detail",
component: () => import("@/views/flow/InstanceDetail.vue"),
meta: { title: "办件详情", parentId: 102 },
},
{
// 流程示意图深链页(不挂菜单,同 /task/:taskId 模式);跨应用入口 window.open 整页跳转
path: "/diagram",
name: "flow_diagram",
component: () => import("@/views/flow/FlowDiagram.vue"),
meta: { title: "流程示意图", parentId: 103 },
},
{
path: "/admin/instances",
name: "flow_admin_instances",
component: () => import("@/views/flow/admin/Instances.vue"),
meta: { title: "办件记录", modId: 102 },
},
{
path: "/admin/defs",
name: "flow_admin_defs",
component: () => import("@/views/flow/admin/Defs.vue"),
meta: { title: "流程定义", modId: 103 },
},
{
// 流程编辑器(钉钉式卡片流;深链页不挂菜单,同 /diagram 模式)。
// query:空=新建;id=编辑草稿;id+baseGuid=升版本(载入该版内容为底稿)
path: "/admin/defs/editor",
name: "flow_def_editor",
component: () => import("@/views/flow/admin/def-editor/index.vue"),
meta: { title: "流程编辑器", parentId: 103 },
},
{
// 回调管理(原 104 办理人映射已于 2026-10-10 下线,由 应用设置-科室管理 承载)
path: "/admin/callbacks",
name: "flow_admin_callbacks",
component: () => import("@/views/flow/admin/Callbacks.vue"),
meta: { title: "回调管理", modId: 105 },
},
{
// 条件路由维护(flw_router 注册表,2026-09-24):菜单需在 UserBase 侧配置同 path 的 app_module
path: "/admin/routers",
name: "flow_admin_routers",
component: () => import("@/views/flow/admin/Routers.vue"),
meta: { title: "条件路由", modId: 106 },
},
{
// 应用设置(2026-10-10 四议题):tab1 应用管理(flw_app 白名单,学校池同步);
// tab2 科室管理(Part E 填充)。菜单需在 UserBase 侧配置同 path 的 app_module(custom_id=107)
path: "/admin/app-setting",
name: "flow_admin_app_setting",
component: () => import("@/views/flow/admin/AppSetting.vue"),
meta: { title: "应用设置", modId: 107 },
},
{
// 接入向导(2026-10-15 议题二 P1):五步引导 + 配置生成器(源头消灭配置形态静默断点)。
// 与「应用设置-对接健康度」互补:向导管接入时一次引导,健康度管对接后持续体检。
// 菜单需在 UserBase 侧配置同 path 的 app_module(custom_id=108)
path: "/admin/onboarding",
name: "flow_admin_onboarding",
component: () => import("@/views/flow/admin/Onboarding.vue"),
meta: { title: "接入向导", modId: 108 },
},
{
// 办件进度嵌入页(iframe 免签嵌入,App.vue 对 /embed/* 前缀旁路 CAS 与 layout):
// 不挂菜单、无 parentId(子应用 Drawer 内打开,非管理面导航);query.token 必填
path: "/embed/instance",
name: "flow_embed_instance",
component: () => import("@/views/flow/EmbedInstance.vue"),
meta: { title: "办件进度" },
},
{ path: "/", redirect: "/workbench" },
// 兜底:UserMsg jumpPath / bizUrl 等外部深链若落到未登记路由,避免 no-match 静默空白页
{ path: "/:pathMatch(.*)*", redirect: "/workbench" },
];
export default routes;