chenxing
|
97dec39d45
|
C1第一刀:flw_def.form_uuid启用+发布期form-center schema快照嵌入formContract+表达式键查①红牌(audience按数组解析)
build / build-push (push) Failing after 2m6s
|
2026-10-20 22:50:58 +08:00 |
|
chenxing
|
8ceb2a4247
|
[audit] P6.3 F5-4 reroute 增 useLatestDef 僵尸逃生门:按当前已发布最高版本重跑+快照刷新+trace 留痕(默认 false 现行为逐字不变)
build / build-push (push) Successful in 11m48s
|
2026-10-18 08:18:26 +08:00 |
|
chenxing
|
448c8d36f4
|
[audit] P6.1 F11-4 台账路由挂起可观测:pageAdmin 增 hung 过滤 + 行级 routeHung 红标(口径=max attempt 路由行 outlet 仍 NULL,防误报)
|
2026-10-18 08:05:32 +08:00 |
|
chenxing
|
775b2392fa
|
feat(callback): 对接健康度体检接口(议题二 P2)
build / build-push (push) Successful in 2m38s
用 flw_callback_reg / flw_callback_log 两张已有表拼装「这个应用接得好不好」,零新增表:
- FlwCallbackLogRepository 增 3 个只读聚合:countByStatusSinceForRegs / countByStatusForRegs / countHungForRegs(按注册集合过滤,挂起口径与管理端「挂起」列表一致:status=0 且 retryCount >= hangAlertRetries)
- 新增 AppHealthVo(model 包):appKey/appName/score/level/summary/checks(List<CheckItem>),检查项用 List 承载便于未来增删
- FlowCallbackAdminService.health(schId, appNames) 按 appKey 归组(同一应用多个 flowGuid 注册合并体检),六项检查加权算分:登记地址为私网/开发机 -40、base_path 缺失 -10、近 7 日成功率 <99% 或 =0% -15/-30、死信 -20、挂起 -12、注册停用 -8、无推送记录 -5;level 取最差项,问题应用 bad>warn>ok 置顶、同级按分升序
- FlowAdminController 增 GET /api/flow/admin/callback/health;应用名从 appAdminService.list(schId) 补齐,缺失回落 appKey
健康度面板与管理端三个列表(注册/日志/挂起死信)共用同一口径,避免两处数字打架。mvn -o package 通过。
|
2026-10-15 14:51:19 +08:00 |
|
chenxing
|
de332d1c66
|
B1 后端基础:flw_def.change_log + 在途统计接口 + 路由 trace 透出 rawResponse
- change_log(议题二③):FlwDef 附加列 + save 加 changeLog 入参,只在三个新建行分支写入
(def.getId()==null 判据),草稿直改不写也不清空;>500 service 侧截断不抛错;补生产备案 SQL
- GET /admin/def/inflight(议题二④):flowGuid→审批中(10)办件数,口径=def_id ∈ 该线全部版本;
请求的每个 guid 都建 0 键;逗号分隔去重限 100;FlowDefAdminService 注入 FlwInstanceRepository
- routeTraceRow(议题三②):kind=ROUTE 行增 rawResponse(null→"",>500 截断加 …)
验证:mvn.cmd 单模块编译通过;spring-boot:run 启动成功无循环依赖;ddl-auto 已自动建 change_log 列;
SQL 口径核对在途 37 件/8 条线,flw_route_log 24 行均有 raw_response
|
2026-10-12 15:59:47 +08:00 |
|
chenxing
|
f07ac6da93
|
feat(callback/app): 回调探测端点 /admin/callback/probe/{id}——签 flow.ping 未知事件码走真实管道同步一发(信封同构 CallbackDispatcher,结果落 flw_callback_log 一次性行+resp_body 响应摘要列);应用辅助统计 /admin/app/stats(appKey→本校回调注册数,应用设置页对接深度列)
build / build-push (push) Failing after 14s
|
2026-10-11 22:40:44 +08:00 |
|
chenxing
|
cd046782d9
|
fix(flow): 科室/成员端点补 requireId 边界防护——缺 id 回业务错而非 findById(null) 笼统 500(用户验收反馈 R2)
build / build-push (push) Successful in 2m54s
|
2026-10-10 22:43:01 +08:00 |
|
chenxing
|
a06b610d9d
|
feat(dept): 科室管理——flw_dept/flw_dept_member 组+成员模型取代单用户映射行(议题3,拍板D1选B)
build / build-push (push) Successful in 54s
- deptKey=本地自增 id;source_group_id 幂等(一键拉取=初始化/刷新语义,不重复建组);不做存量迁移
- 四处读源全部切新表:AssigneeResolver(宽容口径:deptKey 不存在/停用返回空,图示/轨迹不炸)、
enabledDeptKeys 发布校验白名单、DeptLabelSupport 唯一出口(图示科室视图+轨迹富化)、编辑器 deptList 聚合
- /admin/dept/* 全套端点(CRUD/成员/拉取预览导入);旧 /map/* 映射 CRUD 端点删除
(保留 /map/lookupUser 选人检索与 /user/teacherTree);flw_assignee_map 实体/表保留不删
- IT 种子切源(FlowTestSupport tag→deptKey 注册表,用例主体零改动);全量 191 绿;E2E 22/22
(local-debug/four-topics-e-e2e.py,含切源后果验证与生产盘点 SQL)
|
2026-10-10 19:47:58 +08:00 |
|
chenxing
|
4293c9628a
|
feat(def): updateMeta 元数据原地编辑——已发布可改 name/appKey 不升版本(议题2)
- 独立于 save 的升版本路径:不碰 code/flow_guid/version/status/contentJson 结构
- contentJson 顶层 name 同步(ObjectNode 保序;消除行 name 与 JSON name 脏窗口,拍板 D4)
- appKey 校验同 save 口径(显式传入须 flw_app 启用集合;可置空)
- 单测 5 例(三不变断言/白名单/补写/跨校)+ E2E 14/14(含升版本路径回归与 oapi 摘要)
|
2026-10-10 19:23:44 +08:00 |
|
chenxing
|
d6b7a68ec3
|
feat(app): 应用设置·应用管理——flw_app 白名单 + 学校池同步 + defSave 归属应用校验
- flw_app(sch,app_key uk):学校池(UserBase list-by-school,学校组单点已开通、clientType=null 不过滤端)
diff 同步——新增即 enabled=1、改名静默刷新、池外保留;UserBase 不可达降级本地行
- /admin/app/list(触发同步)/ /admin/app/enable;defSave 显式 appKey 须 ∈ 启用集合(不传不拦,升版本继承不受影响)
- SQL 备案:flw_app 建表 + UserBase 菜单 107 新增/104 下线(人工执行)
- 单测 +8;E2E 13/13(local-debug/four-topics-c-e2e.py)
- 关联 SDK 修复:BoaApp.createTime @JsonFormat 对齐 UserBase 时间契约(BasePlatform 单独 commit,Nexus -73)
|
2026-10-10 19:17:38 +08:00 |
|
chenxing
|
92619508f0
|
feat(condition): CONDITION 判断方式二选一——EXPRESSION 内置 Aviator 表达式(沙箱)+ SERVICE 原口径;JudgeBody 补 submitterId
- ExpressionEvaluator:Aviator 5.4.3 沙箱(FEATURE_SET 只留 If、ALLOWED_CLASS_SET 空=禁类访问/反射)、编译缓存、
顶层变量缺失抛错挂起(Aviator 缺失变量按 nil 且 nil 视作最小值,<= 兜底出口会静默放行——宁挂起不误放行)
- ConditionRouteService.decide 分流:EXPRESSION 按出边顺序取首个 true(逐边结果摘要落 raw_response),
全 false/异常挂起沿用 SERVICE 纪律(route_log outlet=NULL + EXPRESSION 常量 + 告警 + 管理端重跑)
- DefValidator 发布期分层校验:EXPRESSION 出口缺条件/语法错/违禁表达式硬拦;表单变量放行(运行时核对);
内置变量疑似拼错 warn;judgeMode 非法值拦
- /admin/router/eval 调试端点(同一求值核心,不落库不走流程)
- 单测 22 新增 + 全量 170 绿;E2E 18/18(发布/分支选路/挂起留痕/重跑/调试)见 local-debug/four-topics-a-e2e.py
|
2026-10-10 18:52:40 +08:00 |
|
chenxing
|
a1f99fd7e0
|
feat(def): 流程定义唯一键改按流程线管 + 归属应用筛选
build / build-push (push) Successful in 8m31s
- flw_def 唯一键 (sch,code,ver)→(sch,flow_guid,ver)(uk_flw_def_guid_ver,生产/本地已手工切索引):升版本 maxByGuid+1 与唯一键同口径,同编码多条流程线(work-leave 三条线实锤追尾)不再死锁
- 新建永远新开流程线 v1,删除同编码草稿复用;撞唯一键转"保存冲突"友好提示
- 新增 flw_def.app_key 归属应用列:save 全链路透传(升版本缺省继承源线、传非空覆盖);/admin/def/list 支持 appKey 过滤;新增 /admin/def/appkeys 应用清单(flw_def 已标注 ∪ 已注册回调)
- FlowDefAdminServiceSaveTest 10 用例锁 save 分派语义
|
2026-10-10 14:34:25 +08:00 |
|
chenxing
|
d2bef20e13
|
feat(engine): NOTIFY 抄送 + CONDITION 条件路由 + JOIN scope 修复(两批全栈)
build / build-push (push) Successful in 47s
- NOTIFY:TYPE_NOTIFY 瞬时抄送(flw_cc 逐人留痕 + CC_SENT 事件 + 站内通知不加待办角标)、/api/flow/cc/my、轨迹 kind=CC 与 oapi progress 抄送步、示意图青框卡片
- CONDITION:flw_router 判断服务注册 + flw_route_log 决策留痕(REQUIRES_NEW,reroute 回滚不丢失败行)+ 同步判断调用(服务目录寻址 + 平台签名,3s×3 退避重试)+ 失败挂起/管理端重跑(不配默认出口)+ 可选事件 flow.route.decided
- JOIN scope:branch_key 路径前缀编码 + scope 级到齐放行 + DefValidator SPLIT/JOIN 配对与键长守卫(存量无点号键零迁移,历史直连图回退实例级口径)
- 管理端:/api/flow/admin/router/* CRUD + POST /api/flow/admin/instance/{id}/reroute
- 生产 SQL:sql/20260923_create_flw_cc.sql(含 flw_task 时间列升 DATETIME(3))、20260924_create_flw_router_and_route_log.sql
- 测试:全量 125 绿(FlowEngineIT 24,含条件/嵌套并行/退回重走用例)
|
2026-09-24 08:58:26 +08:00 |
|
chenxing
|
9cc0b06c29
|
feat(flow): 工作台与轨迹优化 + 管理端启用回路 + 本地验签配置修复
build / build-push (push) Successful in 1m30s
- 已办去重: 同一办件一行 + doneCount 累计次数(FlwTaskRepository 查询去重)
- 发起/撤回/重提留痕事件行(状态码 6/7, 无需 DDL); /oapi/flow/progress steps 含撤回/重提步骤
- 管理端新增启用回路: POST /admin/map/enable/{id}、POST /admin/def/enable/{id}; GET /api/flow/def/source 源码查询
- 修复 findEnabledByOrdId 未过滤 status 的隐性缺陷; 新增 DeptLabelSupport 科室标签支撑
- 测试: FlowEngineIT 撤回留痕/已办去重断言、OapiFlowContractIT 撤回步骤断言(94 tests 全过)
- 本地验签修复: 本地 UserBase 无 context-path, yh.open.services 显式覆盖服务目录枚举兜底的 /userbase basePath, 否则出站签名与服务端剥离不对齐 → GetUserInfo 等全部「验签失败」; 生产经 Caddy 挂 /userbase 时删除 services 覆盖
|
2026-09-18 16:56:01 +08:00 |
|
chenxing
|
434aa9d185
|
feat(admin): 选人教师树(仿 Notice GetSchoolAll)——组树剔除学生组, YschClassOpenApi.getSchTeaList 按 GroupIds 挂组+空组剪枝 (GET /admin/user/teacherTree); 管理端新增 /def/diagram.png 示意图页进度图 <img> 直嵌
build / build-push (push) Successful in 46s
|
2026-09-17 14:53:05 +08:00 |
|
chenxing
|
5a7d93a48f
|
feat(admin): 选人组件数据源-userTree——管理端「选择用户」弹窗接学校组树 (组→组内用户叶子, GET /admin/user/tree), 替代管理页手输用户ID
build / build-push (push) Successful in 45s
|
2026-09-17 11:09:40 +08:00 |
|
chenxing
|
55e3a3f800
|
feat: 一键拉取教师组作为科室(办理人映射批量导入)+ 回调签名/编辑器存量
build / build-push (push) Successful in 46s
- 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)
|
2026-09-16 01:20:59 +08:00 |
|
chenxing
|
c1103aeb29
|
feat: 提交流程中心后端代码
build / build-push (push) Successful in 28s
Spring Boot 流程引擎服务:流程定义/实例/任务、审批人解析、
回调分发、oapi 接口及单元测试。
保留远程 .gitea/workflows/build.yml 与 docker/Dockerfile,
新增 .gitignore 排除 target/ 构建产物。
|
2026-09-15 10:42:56 +08:00 |
|