chenxing
a4d220362e
Preserve active leases and align flow recovery rounds
...
Local review candidate only. Explicitly selected inherited prerequisites and prior repair patches; unrelated WIP and independent MQ fixes are excluded. No push or deployment authorized.
2026-10-23 10:51:40 +08:00
chenxing
8edccd5514
Preserve reviewed existing gate prerequisites
...
Local review candidate only. Explicitly selected inherited prerequisites and prior repair patches; unrelated WIP and independent MQ fixes are excluded. No push or deployment authorized.
2026-10-23 10:51:32 +08:00
chenxing
f816fc390e
feat(openapi): FlowCenterClient 切 SDK appCode 寻址(显式>legacy>fallback),application.yml 出厂 base-host 默认内部网关
build / build-push (push) Successful in 1m18s
2026-10-22 17:14:03 +08:00
chenxing
e51201134a
fix: FcAnswerConsumer 条件化(配 rabbitmq.host 才装配)——未配 broker 时 @RabbitListener 因容器工厂缺失打断启动
...
build / build-push (push) Successful in 55s
inbox 唯一写入口是 MQ 消费路径,未配 broker 时重报扫描无台账可扫,条件化语义无损;签名收据路径不经过本类。
2026-10-22 10:33:48 +08:00
chenxing
391281582a
t1~t3+精修: 事项FC绑定/可信建件(意图+投影+恢复)/答卷对账Worker
...
build / build-push (push) Successful in 1m21s
含10-22精修: 对账有限重试(retry_count/指数退避/work_version防旧覆盖)+接缝身份(source-app-key空拒收)+应急对账闸让位FlowApplyRecoveryService+同attempt指令不重开终态。SQL未执行。
2026-10-22 10:03:07 +08:00
chenxing
af760913fa
fix(server): 补齐服务承诺字段的管理端保存与回显
...
build / build-push (push) Failing after 2m7s
上一批只落了实体与 oapi 出参,管理端 save 入参与编辑回显没接上,
导致 front 录入的 6 个字段被 Jackson 静默丢弃。
- SvcModels.SvcItemSaveRequest 补 7 字段(含 @Size 校验,与实体列长一致)
- SvcModels.SvcItemEditVo 补 7 字段 + of() 映射
- ServiceItemService.adminSave 补 7 行赋值(空串归一 null)
- 新增 SvcItemPromiseFieldsTest:反序列化字段名对齐 + EditVo 映射(3 例)
- .gitignore 排除 local-debug/(本地探针,不入库)
2026-10-20 18:13:00 +08:00
chenxing
c1bcbf2f88
feat(server): 事项服务承诺字段 + 匿名指南接口 + hall 用户面开匿名
...
- service_item 加 7 列(协办部门/经办人/办理时段/跑动次数/快递/收费标准+依据)
- /api/hall/items 出参补 applyUrl 与承诺字段
- 新增 GET /api/hall/item(匿名,指南详情)
- url-pattern 收窄至写入面,/api/hall/** 匿名只读
- url-pattern 另补 /api/base/*(契约 §1 表格未列,页头用户信息与左侧菜单必须 CAS 会话)
2026-10-20 16:43:17 +08:00
chenxing
6f855e57d1
ci: 重触发构建(run 1568 exit 137 OOM kill,本地 166/166 绿非代码问题)
build / build-push (push) Successful in 1m17s
2026-10-20 00:19:45 +08:00
chenxing
6086c4374c
feat(p3.5): 审批代理增 Done/Cc 两端点(中心 done/cc 中转)
...
build / build-push (push) Failing after 10s
- SvcApprovalClient.doneTasks/ccMine:/oapi/flow/tasks/done、/oapi/flow/cc(中心按
签名方应用过滤,出站不传 bizType——P2-02 接缝,双值双查不适用)
- SvcApprovalController GET Done/Cc:requireOperator+身份字段入参拒绝,信封透传
- 测试 +3(client 拼装 2+controller 透传与拒绝 1),全量 166/166 绿(Stage S5/P3.5)
2026-10-20 00:16:20 +08:00
chenxing
05d2143ce1
feat(p3.2): bizType 方案B——常量换终值 svc-hall + 双值双查 + P1-02 行级绑定校验 + P1-03 R4 时序修复
...
build / build-push (push) Successful in 48s
- SvcFlowCallbackHandler.BIZ_TYPE → SvcBizTypes.CURRENT(svc-hall,H-1 实核 appKey=100008
注册行 app_code);yml 回调白名单双值 [svc-hall, svc_item](收敛条件=另一类型不再可能
产生事件,本轮不收敛;回滚也保双值)
- 双值双查补丁(先终值后存量,S0-H2 实测中心 svc_item 存量=0,次查为防御性兼容):
ApplyViewGuard 办理人分支 / FlowReconcileJob 对账(命中判据=内容非空,兼容 miss 空载体)/
progress 空态出参 / S2 审批代理 byBiz·todo(S2 已落)
- P1-02 行级事件绑定校验:事件 schId 与行一致、行有镜像实例时事件 instanceId 必须一致;
不匹配 200 消费但不推进+告警日志(不抛 5xx 防重推风暴);行无值(首发回调早于回填)放行,
doFlowApply 回填侧对实例不一致告警留痕(方案B 书面接受第二实例降级)
- P1-03 R4 时序修复:markResubmitted 清旧 flowResultJson(保留 lastInstanceVersion 跨轮
乱序防护);Handler 终态守卫改版本感知(事件版本>已消费版本=新轮竞态窗口放行,不再以
旧结果非空一刀切拒绝);非终态推进清残留 finishTime;三场景测试静态化注入
(新轮回调先于 apply 响应/新轮快速终态/旧轮迟到重复)
- 测试断言按新语义更新:新件出站断言 svc-hall×3;全量 163/163 绿(Stage S3/P3.2)
2026-10-19 23:49:02 +08:00
chenxing
ed3c9e6a72
feat(p3.1): 应用内审批后端代理——SvcApprovalClient + /api/apply/approval/ 7 端点
...
build / build-push (push) Successful in 54s
- SvcBizTypes:bizType 终值/存量单一取值点(svc-hall=H-1 实核 appKey=100008 注册行 app_code;
svc_item=存量,双值双查先新后旧——方案B,P3.2 落地前的读面兼容口径)
- SvcApprovalClient(沿 NoticeApprovalClient 形态,YschOpenCall 服务目录命名目标):
todo/byBiz 双值双查合并、approve/reject 写面、embed 记录页 instanceId 形态、taskPageUrl
- SvcApprovalController:Todo/ByBiz/RecordUrl/TaskPageUrl/Approve/Reject/My
· 定位链=requireOperator→findByIdAndSchId(会话校)→ApplyViewGuard→byBiz 归属预检(P1-01)
· 身份三字段只取 CAS 会话,请求参数出现身份字段一律拒(P1-10 择一取严)
· 写面参数形态与中心同构(taskId/applyId 查询参数,opinion/edgeName JSON body)
· My 端点复用本地 myApplies + FlowPage 信封显式映射(total/list→total/content+页元数据)
· 不代理 /oapi/flow/instances(全校视角);本地 flow_status 仍只由回调推进
- 测试 30 例全绿(client 10 + MockMvc standalone 20,显式装 BoaUserArgumentResolver/
GlobalExceptionHandler/ApiResponseAdvice;真实 CasSsoApiRedirectFilter 过滤链未登录=200+code302;
拒绝路径断言审批出站=0);全量回归 157/157 绿(Stage S2/P3.1)
2026-10-19 23:41:20 +08:00
chenxing
fb4bef9d34
feat(p3.0): bizUrl 发方收口——删 svchall.front.base-url、断言改裸相对路径 /apply-detail?id=
...
build / build-push (push) Successful in 48s
- application.yml 删 front.base-url(自指地址优化 Phase 2 收尾),主代码已无消费点
- ServiceApplyFlowSubmitTest 断言从 http://localhost:8087/#/apply-detail?id=42 改为 /apply-detail?id=42(16/16 绿)
- 顺手修正两处 jumpApp 错误注释(yml:109 与 doFlowApply):绝对化解析键实为
flw_instance.apply_app_code(apply 时由验签身份 appKey 按注册表换得的 app_code 快照),
与 bizType 是两个字段互不影响(P3.0 审计勘误)
- 配对收方 flow-center BizUrlResolver 已在 52c27d8 上 160
2026-10-19 23:23:48 +08:00
chenxing
88978ea701
外观SDK化任务E:本地 AppearanceProxyController 下沉平台 starter
...
build / build-push (push) Successful in 47s
删本地哑管道,加 yh-appearance-spring-boot-starter(BOM 管版本,YschOpenCall
走聚合包)。端点同 URL /api/appearance 同语义:三态 proxy/local/off,503 直写
铁律内置(f84ce9c 线上修复的等价实现)。工作区他人 WIP(application.yml/
ServiceApplyFlowSubmitTest)未混入,择迹提交。
2026-10-12 09:40:02 +08:00
chenxing
283d4479f5
feat(apply): 办件快照增 summaryFields 约定键——让嵌入页出现「业务信息」块
...
build / build-push (push) Successful in 2m46s
itemSnapshotJson 两个重载各加形参 submitterName(提交人在 ServiceItem 上取不到,必须外传);
快照末尾追加约定键 summaryFields(申请人/所属部门/办结时限/联系电话,label 逐字保序),
只 append 值非空白的行,四项全空则不写该键 ⇒ 嵌入页不出现 "-" 行也不出现空块。
原 6 键 itemTitle/summary/deptName/handleTimeLimit/contactPhone/attachmentNames 一字未动,
flow-center 侧 bizSnapshot 原样透传,前端零改动即可渲染。
表单类字段本轮不做:svc-hall 是通用事项平台,取表单值需解析 formSchemaJson,超出本任务范围。
2026-10-10 15:19:59 +08:00
chenxing
f84ce9c822
fix(appearance): 503 改 sendError 直写——绕过 GlobalExceptionHandler 兜底(线上实测发现)
build / build-push (push) Successful in 2m9s
2026-10-09 00:39:51 +08:00
chenxing
54682cb72b
feat(appearance): 外观偏好同源读代理端点 GET /api/appearance(oapi 代理轮)
...
build / build-push (push) Successful in 2m42s
- YschOpenCall(target=userhome) 经 open-gateway 签名直调,JsonNode 整体透传;下游不可达 503 静默降级
2026-10-08 23:27:48 +08:00
chenxing
eb0a8ded2f
refactor(oapi): 收敛 Notice 范式——回调收口+提供方强制验签迁 starter(审计 P1 / L2-7 L2-8)
...
build / build-push (push) Successful in 1m37s
回调(对齐《子应用流程与消息对接手册-20260929》Notice 线上形态):
- yh.flow-callback.path 迁 /oapi/flow/callback;删 callback-url(改 starter 三段推导:
base-host+前缀三层回落+path,生产=http://open-gateway-service:10013/svc-hall/oapi/flow/callback)
- verify-flw-signature=false(平台应用签名承担,X-Flw 不启用);reconcile-on-register=true
(路径漂移自动重注册,160 存量 /callback/flow 行靠它收敛)
- 删 svchall.public-base-url(唯一消费方即 callback-url 拼接)与 yh.open.base-path
(对齐 Notice 形态;该键代码默认值即 /userbase,删键无行为变化)
- deriveCallbackBasePath 剥尾段口径同步 /oapi/flow/callback(契约测试断言更新)
提供方(flow-center 同款组合链):
- 删自写 OpenApiAuthEnforceConfiguration(starter 版 RequireAppSignFilter 承接,order+11 等价)
- yh.app-auth.server.enforce-patterns=[/oapi/*] + trust-registry=true;trusted-apps 保留
100005(CMS) 并增 100019(flow-center 回调推送兜底);pom 显式引 data-redis(optional 不传递)
- management.health.redis.enabled=false(Redis 抖动不拉 DOWN 整机健康)
门禁:mvn test 127/127 绿
2026-10-05 22:26:22 +08:00
chenxing
f368299eb5
feat(hall): 站点主题中转 + 用户面站点信息端点(T2)——SiteOptionVo 扩 theme/themeParams(@JsonIgnoreProperties 兜未知键,兼容旧 CMS 三键形态,测试已证);SiteDirectory 新增 findOption(resolveSite 的全量形态,resolveSite 委托之,SiteInfo 三字段不动);HallController 新增 GET /api/hall/site(requireMember 同口径 + 防御性 SiteInfo 补壳)
2026-10-03 13:46:31 +08:00
chenxing
4bbcd22d25
refactor(flow): 目录键归一 flowcenter→flow-center(D1)——出站枚举 FLOW_CENTER 跟随、本地 yh.open.services 键与注释同步;yml 另一 hunk(Phase 2 front.base-url 删除)为在途 WIP 未随本笔提交
build / build-push (push) Successful in 1m36s
2026-09-28 17:35:33 +08:00
chenxing
b08d076f0b
feat(flow): 回调链路迁平台 flow-callback starter + 表单级流程绑定
...
build / build-push (push) Failing after 8s
- 回调迁 starter(2026-09-20):删本地实现 FlowCallbackService/Controller/
FilterConfiguration 及旧测试,X-Flw 验签/幂等/乱序门由 starter 承担,
业务映射入 SvcFlowCallbackHandler(biz-type svc_item);端点仍 /callback/flow,
存量注册 callback_url 不变、secret 零轮换,镜像表 flow_callback_reg
由 sql/20260920_flow_callback_starter_migration.sql 迁移
- 表单级流程绑定:ServiceForm 增 flowGuid,事项未绑流程时回退取绑定表单
最新版本(effectiveFlowGuid),绑定校验/在线办理口径同步
- FlowReconcileJob/FlowCenterClient/OpenApiAuthEnforceConfiguration 等
SDK 适配微调;补 .gitignore(target/、日志)
- 全量 mvn test 本地绿(含新增 SvcFlowCallbackHandlerTest/
ServiceItemEffectiveFlowTest)
2026-09-21 09:37:33 +08:00
chenxing
27e19923fb
fix(file): 封面 URL /upload/ 段逐轮叠加致门户裂图——出入口折叠自愈
...
build / build-push (push) Successful in 51s
- 生产 public-base-url 以 /upload/ 结尾而库内相对值以 /upload/ 开头,
buildUrl 盲拼每轮"绝对化→存库"多叠一层(部署态实测叠到 4 层 404)。
- FileUtil.squashDuplicateUploadSeg:/upload/upload/ 永远非法(upload 非
法类型名),buildUrl/absolutize 出口与 toRelativeIfLocal 存库侧统一折叠——
发版即恢复显示无需清库,库内损伤值下次保存永久收敛。
- adminGet 封面回显绝对化:修管理端编辑页相对路径 404 被误当"没保存上"。
- 新增 FileUtilTest 8 用例锁行为(不叠加/损伤自愈/透传/往返幂等)。
2026-09-21 08:52:02 +08:00
chenxing
8504ca970c
feat(apply): 办件详情出参补发 formSchemaJson——申请内容按表单 schema 显示中文 label 与分组
...
build / build-push (push) Successful in 48s
- ApplyVo 新增响应期字段 formSchemaJson(仅 detail 填,不入库)
- ServiceFormService.schemaAt:按办件提交时 formVersion 精确命中,缺失回落最新已发布
- 无表单/事项清理/未发布 → null,前端回落按 key 展示
- 单测 ServiceApplyDetailSchemaTest 三态冻结(详情中文化分组 2026-09-17,详见验收清单)
2026-09-17 14:50:46 +08:00
chenxing
f0279ae12d
feat(apply): 用户面撤回/进度/流程图后端中转 + 大厅HallController + flowEnabled 三态(SDK withdraw/progress/diagramUrl)
build / build-push (push) Successful in 1m11s
2026-09-17 01:05:35 +08:00
chenxing
e462b71bef
refactor(sdk): 出站全端点收敛到服务目录命名目标 + 零专属地址配置
...
build / build-push (push) Successful in 3m20s
- FlowCenterClient:apply/getInstanceByBiz/registerCallback 由 ad-hoc TargetSpec
改走 YschFlowOpenApi 门面(ApplyBody/CallbackRegBody/ApplyResultVo/CallbackRegVo
继承 SDK DTO);instance 走 raw() 预绑视图保留 Map 全字段透传。
- CmsSiteDirectoryImpl:DIRECTORY_KEY 包可见;目录未配且 svcchall.cms.base-url
缺失时构造期 fail-fast(原 @Value 无默认值会直接炸启动,无明确提示)。
- FlowCenterClient:svchall.flow.base-url 默认值去掉 + 同款 fail-fast(enabled=false 不校验)。
- application.yml:新增 yh.open.services.{flowcenter,cms},删 svchall.cms.base-url /
svchall.flow.base-url —— 地址唯一来源=服务目录。
- 测试:新增 FlowCenterClientFacadeTest(6 例,冻结门面/归一目标/回落/fail-fast);
CmsSiteDirectoryImplTest 加目录命名目标 + fail-fast 用例。112 测试全绿。
2026-09-16 21:04:28 +08:00
chenxing
9a47351725
fix: CmsSiteDirectoryImplTest 同步 SDK 新包路径(openapi.core.*,接 da1b76e)
build / build-push (push) Successful in 2m50s
2026-09-16 16:39:57 +08:00
chenxing
da1b76e45a
fix: 对齐 BasePlatform 新版 SDK 包路径(CI 宿主 m2 快照已晋升)
...
build / build-push (push) Failing after 1m10s
BasePlatform 2b14e09 服务目录版把 openapi 类挪入子包,CI 复用的宿主 m2 缓存快照已更新为新布局,
旧包路径(openapi.TargetSpec/openapi.client.*/openapi.dto.FlowDto)在 CI 编译失败(run 971)。
本批纯包路径替换,无逻辑改动:
- openapi.TargetSpec/YschOpenCall → openapi.core.*(FlowCenterClient/CmsSiteDirectoryImpl)
- openapi.client.YschBaseOpenApi → openapi.base.*(YschBaseDeptSource/BaseApiController)
- openapi.client.YschFlowOpenApi → openapi.flow.*(FlowCenterClient)
- openapi.dto.FlowDto.FlowSummary → openapi.flow.model.FlowSummary(SvcModels.FlowSummaryVo)
2026-09-16 16:37:29 +08:00
chenxing
76b35b2fb3
feat: 表单使用场景可见闭环——form/list 返回绑定事项明细 refItems
...
build / build-push (push) Failing after 26s
- SvcFormVo 增 refItems(ItemBrief: id/itemCode/title/siteCode/status),referenced 同源派生;仅 list 填充,versions/get 不带
- ServiceItemRepository.findBySchIdAndFormCodeIsNotNull 一次查全量按 formCode 内存分组,替代逐表单 count 的 N+1
- ServiceFormServiceTest 5 用例(未绑定/单绑/跨站点/多版本聚合/分组不串)
- 前端配套(svc-hall-front 另推):绑定明细弹窗+直达事项编辑、发布未绑定引导、schema 预览、事项编辑页草稿表单提示
2026-09-16 16:33:55 +08:00
chenxing
dedb4aa436
fix: 回调注册补 basePath(从回调 URL 推导接收方 context-path)
...
build / build-push (push) Successful in 46s
部署带 ctx(/svc-hall)时 flow-center 按整路径签名与 FlowCallbackVerifyFilter
剥 ctx 后对不上 → 注册探活 401 → service_flow_reg 缺失 → 办件状态事件全丢。
本地裸地址(无 ctx)推导为空串,行为不变。新增 FlowCenterClientCallbackBasePathTest。
2026-09-16 02:08:55 +08:00
chenxing
850a70d4f7
ci: 恢复 CI 工作流与 Dockerfile(同步脚本误删)
build / build-push (push) Successful in 48s
2026-09-16 01:29:02 +08:00
chenxing
8aeb40f119
feat: SDK 类型化门面接入(flow/cms 走服务目录)+ 教师组科室语义对齐 + F1-F3 存量
...
- FlowCenterClient/CmsSiteDirectoryImpl:服务目录命名目标(flowcenter/cms)优先,
legacy svchall.flow/cms.base-url 回落(迁移期兼容)
- SvcModels.FlowSummaryVo extends SDK FlowDto(单一事实源)
- 含 2026-09-13/14 存量:bizUrl hash-query(F1)/IDHttp ctx 签名/apply 漏 schId/回填事务
2026-09-16 01:22:15 +08:00
chenxing
000d0591fa
fix: CMS 站点不可达日志补最内层根因,不再被 SDK 的 ioError 文案吞掉
...
build / build-push (push) Successful in 2m20s
现象:CmsSiteDirectoryImpl 两处 catch 只打 e.getMessage(),而平台 SDK 统一把
传输层失败包成 "OpenAPI request failed: ioError",底层 ConnectException /
SocketTimeoutException / SSLException 全部丢失,日志分不清"对端没起"还是"读超时"。
改动:
- 新增 rootCauseBrief():沿 cause 链取最内层原因追加为"(根因 X: msg)";
无 cause 时不追加,避免与 e.getMessage() 重复。
- resolveSite / listSites 两处 catch 日志接入该方法。
契约不变:路径 /oapi/site/list、per-target basePath /cms、fail-closed 语义均未动。
测试:CmsSiteDirectoryImplTest 新增 1 例断言摘要形态;mvn test 82/82 绿。
2026-09-15 20:52:59 +08:00
chenxing
d47951abd7
feat: 办事大厅后端源码首次入库(事项/字典/表单/申报 + 流程回调)
build / build-push (push) Failing after 39s
2026-09-15 11:00:00 +08:00