Commit Graph
27 Commits
Author SHA1 Message Date
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