fix: improve retry feedback and deletion stability

This commit is contained in:
hectorzhao
2026-08-02 20:39:49 +08:00
parent ecc3d7a504
commit 94e997ec4d
9 changed files with 273 additions and 41 deletions
+27
View File
@@ -3071,3 +3071,30 @@ git diff --check
- 发布后API和Gateway自本次发布起error级日志均为0,`panic/fatal/unhandled/exception/error`关键字检查无新增异常;120秒内活跃下游客户连接仍为0。未发送、重投或补发真实短信,未修改真实通道账号、密码、启停状态、企业余额或客户连接。
- 发布后供应商通道现状为3条connected 1/1`会员营销-铁布衫``赛邮行业-王斯评中转``赛邮行业-王斯评中转副本``会员营销-富泷`持续约90秒为failed 0/1,数据库原因为`authentication / connect response status: auth failed`。保留系统自动重连,未修改其账号、密码或启停状态。
- 依赖缓解安全门禁通过。npm audit仍报告既有前端2项high(未使用的React Router RSC路径)和API 3项moderatePrisma工具链)告警,未执行可能引入破坏性升级的`audit fix --force`
## 2026-08-01 下游人工重投弹窗与结果反馈修复(本地未提交)
- 线上只读诊断确认预生产运行`37ffce40`,单条重投真实逻辑一直是操作前调用浏览器原生`window.confirm`、成功后仅静默刷新列表、失败时仅在页面顶部显示弱提示;`AdminDownstreamDeliveriesPage.tsx``RealseV2.0/c0a4317a``37ffce40`之间无差异,本次缺少成功反馈不是R0-R11拆文件引入的回归。拆分仅将同一真实POST接口迁入`src/api/admin/operations.api.ts`
- 线上`OperationLog`只读记录显示2026-07-31 16:01:5516:02:41已受理多条真实状态回执人工重投,其中同一记录人工次数达到2,说明静默成功与缺少处理中锁会增加误判和重复操作风险;诊断过程没有新增重投或修改线上业务数据。
- 运营端下游投递记录页改用平台`Modal`完成单条和批量重投确认,明确展示投递类型、消息ID或所选条数以及客户侧重复处理风险;提交期间确认按钮显示“重投处理中…”且所有重投入口禁用,避免同一页面重复点击。
- 单条真实接口成功后结果弹窗展示后端返回的当前投递状态和`manualRetryCount`;批量接口结果始终展示`total/successCount/failedCount`,部分或全部失败时列出真实逐条错误。请求异常时弹窗提醒先刷新核对人工次数和系统日志,避免在结果不明确时直接重复提交。
- 已同步需求文档和`TC-GW-014/TC-GW-016`,覆盖取消不请求、确认弹窗、处理中防重复、单条成功、批量全成功/部分失败、异常结果提示。代码按用户要求仅保留本地,未提交、未推送、未部署;未发送、补发或重投真实短信。
- 使用Node.js v24.16.0执行前端TypeScript和Vite v8.1.5生产构建通过,2532个模块完成转换;仅保留既有约2.01MB单chunk提示,`git diff --check`通过。应用内浏览器及Chrome均无可复用的本地运营端登录页,遵守验证码边界且避免真实重投,没有为了视觉验收伪造会话或调用写接口;登录后的确认/结果弹窗真实点击验收待后续具备会话时补测。
## 2026-08-02 运营端安全控制时间格式与企业签名删除稳定性回归(本地未提交)
- 全局黑名单“入库时间”和敏感词“创建时间”不再直接输出后端 UTC ISO 字符串,统一复用`formatDateTime`;共享格式化工具显式固定`Asia/Shanghai`并输出`YYYY-MM-DD HH:mm:ss`,避免依赖访问者设备时区。真实数据库全局黑名单时间为 UTC `2026-08-02 09:02:11`,页面显示北京时间`2026-08-02 17:02:11`;敏感词页面显示`2026-08-02 17:02:22`,两处均无`T/Z`
- 企业签名删除使用真实 Smoke Test Enterprise / Smoke SMS App 共执行10轮:3轮创建后直接删除、3轮编辑为待审核后删除、2轮成功反馈修复后复测及2轮截图/最终确认。PostgreSQL确认10条测试签名均为`auditStatus=deleted``OperationLog`存在10条`governance.delete/signature`记录;每轮刷新后列表均不再返回目标签名,未发生删除失败、重复删除或残留 active 数据。
- 原“不稳定”现象不是删除事务或幂等链路失败。删除组件成功后立即调用父列表刷新,目标签名卡片被移除时连同弹窗一起卸载,导致已经生成的“删除已完成/操作单号”结果区无法展示;同时`AppShell`存在独立的待审核任务原生 alert,签名编辑进入待审核后可能在时间上干扰操作观感,但本次10轮没有再次触发该提醒。
- `DeleteRiskAction`现改为删除成功后切换到独立结果视图,明确展示“删除已完成”和操作单号;用户关闭结果弹窗后才通知父列表刷新。修复后直接删除和编辑为待审核后删除均验证结果视图可见,关闭后列表刷新并移除签名。
- 已同步需求文档和`TC-ADMIN-026/TC-ADMIN-027`。Node.js v24.16.0下前端TypeScript和Vite v8.1.5生产构建通过(2532 modules),删除治理定向测试1 suite / 6 tests通过,`git diff --check`通过,应用内浏览器控制台无相关warning/error。
- 本轮测试数据使用独立前缀并全部按系统规则逻辑删除;全局黑名单、敏感词和签名仅保留规定的deleted审计历史。未发送、重投或补发短信,未修改企业余额、真实通道账号/密码/状态、Redis Stream或客户连接。修改仅保留本地,未提交、未推送、未部署;原有下游人工重投及其他工作区改动继续保留,不归因于本轮。
## 2026-08-02 下游重投反馈与时间/删除稳定性修复发布前门禁
- 用户明确授权提交、推送并部署当前工作区全部有效代码。发布范围为下游投递单条/批量人工重投确认与结果反馈、提交期间防重复操作、运营端日期时间统一为北京时间,以及删除治理成功结果在父列表刷新前稳定展示;同步包含需求和测试用例文档。
- 发布前重新执行`git status --short --branch`、完整`git diff``git fetch --prune`并分别核对`HEAD``origin/main`,二者均为`ecc3d7a5045b7669d102f4c81cd2f011b207b3b5`且无分叉。`RealseV2.0`注解标签仍指向`c0a4317a7ea641bab39294e596f58f859edfca73`,既定代码回滚基线有效。
- 发布前预生产实际运行`37ffce40b274e218e6e64210ac9f0f4db88106c8`,源码与数据库均为78条migration。API、Gateway、Nginx、PostgreSQL和MinIO为activeRedis实际端口监听且返回`PONG``gateway.submit.commands`消费者1、pending=0、lag=0。4条active供应商通道均为connected 1/1120秒内活跃下游连接为0API/Gateway近30分钟error级journal均为0。
- 本地首次Prisma命令命中系统PATH中的旧Node.js并因不支持`??=`退出,未进入schema检查且未产生代码改动;切换至工作区Node.js v24.14.0后,Prisma format、validate、generate和migrate status全部通过,本地数据库schema up to date。
- Node.js v24.14.0下API全量29 suites / 389 tests全部通过,API TypeScript正式构建、前端TypeScript与Vite v8.1.5生产构建通过(2532 modules);Gateway`go test ./... -count=1``go vet ./...`、19个Node结构门禁、2个Go结构门禁、依赖缓解安全门禁及`git diff --check`全部通过。Jest仅保留既有`--forceExit`开放句柄提示,Vite仅保留既有约2.01MB单chunk提示。
- `api/tsconfig.build.tsbuildinfo`、根目录`tsconfig.tsbuildinfo``outputs/`和空文件`=`继续作为构建缓存或临时产物排除,不提交、不删除、不错误归因。发布和验证过程禁止发送、重投或补发真实短信,禁止修改真实通道账号、密码、启停状态、企业余额或客户连接。