提交图
2823 次代码提交
作者 SHA1 备注 提交日期
Mimingguang 05beb7965d docs(changelog): #7534 回写前端已交付(verified,hl-admin@420e1a07)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-15 09:09:43 +08:00
yaosutu 053776756f feat(finance): 预付款功能 changelog(#7428)
changelog-filename-gate / validate (push) Failing after 1s
后端全链路就绪,前端需补「付款管理/预付款」菜单+页面;
应付款支付页支持 payType=PREPAY。
2026-09-15 02:55:38 +08:00
yaosutu 4917e44e6a feat(finance): 出纳付款金额锁死 changelog(598610,#7713)
changelog-filename-gate / validate (push) Failing after 2s
5 条 OUT 付款线金额须等于审批应付金额,不一致抛 598610;
前端付款弹窗金额应改只读。
2026-09-15 02:40:43 +08:00
yaosutu 8e9856fd6d docs(changelog): 出纳方式↔账户两级校验(598609) + 资金账户详情删flows走独立分页 (Issue #7695/#7710)
changelog-filename-gate / validate (push) Failing after 1s
2026-09-15 00:15:24 +08:00
Mimingguang 2bfed6bf0f docs(changelog): #7695 回写前端已对齐(verified,hl-admin@902fe6b0)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-15 00:04:58 +08:00
yaosutu b80d3e3ca2 docs(changelog): 资金账户详情 flows 本账户流水对接说明 (Issue #7695)
changelog-filename-gate / validate (push) Failing after 1s
2026-09-14 23:38:11 +08:00
API Changelog Bot和Claude Opus 5 523c1faf99 docs(changelog): #7666 接送机服务日回填(内部)CAS 落空按库内真实值回显(修复)
changelog-filename-gate / validate (push) Failing after 2s
POST /v3/internal/order/orders/{orderId}/requirement/transfer/service-dates/backfill:CAS 落空时按库内当前读作答,
库内仍空答 NO_TRANSPORT(不再失真答 ALREADY_PRESENT),库内有日期答 ALREADY_PRESENT + 库内真实值。
补正 13_7439 内部分册第 4 个端点的 outcome 口径。测试服 order-v3 dev-v3@79e3b9da7 直连实例实测。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015LU2ERekNLbvhsMqzFruHo
2026-09-14 22:37:38 +08:00
API Changelog Bot和Claude Opus 5 234e557852 docs(changelog): #7667 提交车务前拦截未回填服务日的接送机需求(809007,修复)
changelog-filename-gate / validate (push) Failing after 2s
POST /v3/admin/order/{id}/vehicle-requirement/dispatch 在 kind=TRANSFER 且服务日为 NULL/[] 时返回 809007,
需求停在 PENDING_REVIEW;TRAVEL 与已回填的接送机需求不变。测试服 order-v3 dev-v3@79e3b9da7 经网关实测。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015LU2ERekNLbvhsMqzFruHo
2026-09-14 22:30:35 +08:00
jw 3572fc7a0d docs(changelog): #7534 成团通知接通通知中心 + 补发端点 GB-ADM-004N(新增接口)
changelog-filename-gate / validate (push) Failing after 2s
新增补发端点 notify-formed;成团(含自动成团)后事务外投递 GROUP_BATCH_FORMED。
backend=deployed / gateway=verified(TEST 网关三组实测:补发成功 recipientCount=4 /
冷却 589593 {0} 渲染 / 成团契约 589537 未变)。错误码 589593/594/595(589592 被 #7533 占顺延)。
2026-09-14 20:03:47 +08:00
Mimingguang 0b2853224e chore(changelog): #7536 回写前端 verified(mmg,657f14dd)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 17:22:41 +08:00
jw 22d34c8023 changelog(7536): 团期接口返回值整改·破坏批(A3 分页信封+删5冗余字段+财务金额字符串,修改接口,管理后台)
changelog-filename-gate / validate (push) Failing after 2s
Refs #7536 PR #7688
2026-09-14 16:55:29 +08:00
Mimingguang 5fa9fdae6b chore(changelog): #7681 回写前端 verified(mmg,7ed122cb)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 16:21:13 +08:00
API Changelog Bot c917eadbbf docs(changelog): 回写 #7635 重开修复验收
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 16:02:16 +08:00
Mimingguang 5f85c9c626 chore(7533): frontend_ref 跟随 amend 更新为 f1319851(去署名,内容不变)
changelog-filename-gate / validate (push) Failing after 1s
2026-09-14 15:54:21 +08:00
yaosutu 559e3da634 docs(changelog): 收付方式字典统一两维口径 前端 changelog (Issue #7681 / PR #7685)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 15:50:32 +08:00
Mimingguang 11e4a365ca chore(7533): 前端已交付 verified ref=028020fe
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 15:38:27 +08:00
jw和Claude Opus 5 a19ef02533 changelog(7533): 团级行程单与团期签单凭证(新增接口,管理后台)
changelog-filename-gate / validate (push) Failing after 2s
两个只读端点:print-itinerary(只出 ALL_SAME 项、差异项标「按户另见」)
与 sign-voucher(按供应商聚合、默认脱敏)。backend=deployed / gateway=verified。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 15:09:45 +08:00
Mimingguang e4481081ee chore(7662): 前端已交付 verified ref=c9588762
changelog-filename-gate / validate (push) Failing after 1s
2026-09-14 13:01:21 +08:00
yaosutu 6b41b5fa0f docs(finance): 业务外收入建单去掉账户/凭证字段对齐两步资金流程 changelog(#7662)
changelog-filename-gate / validate (push) Failing after 1s
入参删 fundAccountId/payMethod/voucherNo/voucherUrl,由出纳 confirm-in 采集;
出参不变、零 DDL;前端需把字段从申请页挪到确认收款弹窗。
2026-09-14 12:40:23 +08:00
Mimingguang 57a0cf6b78 chore(7529): 前端判 not_required(转期契约未改,3 新码 message 后端给全文走兜底)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 11:16:00 +08:00
Mimingguang 2fb3cb01a8 chore(7326): 前端批2 分房页 H9/H10/H11 已交付,#7326 全量闭环 verified(ad34c8ab)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 11:11:19 +08:00
Mimingguang 1e2839e03f chore(7326): 前端批1 H12 配房明细已交付,转 in_progress 待批2 分房页
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 10:42:13 +08:00
jw和Claude Opus 5 dbd1eba658 changelog(7561): 12301 合同申请补装配 v3 回调地址
changelog-filename-gate / validate (push) Failing after 1s
Refs #7561 / PR HL#7672(dev-v3 fee1faf2c)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 10:31:50 +08:00
Mimingguang 97bc9d2fb5 docs(changelog): #7327 月度对账并入团期行前端闭环 not_required
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 10:25:25 +08:00
Mimingguang 285f414b96 docs(changelog): #7439 终止退款 dayNumber 接送机边界前端交付 verified
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 10:22:59 +08:00
Mimingguang 192ac2d963 docs(changelog): #7528 团期七项硬门详情展示前端交付 verified
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 10:14:41 +08:00
Mimingguang 930a3379fe docs(changelog): #7635 订单列表团属性筛选前端交付 verified
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 10:00:10 +08:00
jw和Claude Opus 5 3860003084 docs(order-v3): #7529 团期转期后重排逐日行程 + 重版用车需求 + 三条 fail-fast 守卫
changelog-filename-gate / validate (push) Failing after 2s
Refs #7529

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 09:44:47 +08:00
Mimingguang 96dcb3fffb chore(staffloan): 回写核销归属修正前端凭证(7521/7520 ref 2a2ec01d)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-14 09:32:30 +08:00
jw和Claude Opus 5 a7dd25f5c4 docs(order-v3): #7609 审批角色守卫改 fail-closed——缺 role claim 的 token 不再绕过角色门
changelog-filename-gate / validate (push) Failing after 2s
退单审批 4 端点 + 流团审批 approve/reject 共 6 个端点。
不改请求/响应结构、不新增错误码、不改路由、无 Flyway。

TEST 真实网关前后对照:缺 role claim 由 589531/589545(绕过进业务)
变为 589530/589547(拦下);role=ADMIN(非超管)行为不变。

⚠️ 行为变更:生产库若有活跃零角色账号在做审批,上线即被拦,需运营侧知情。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 07:54:30 +08:00
API Changelog Bot和Claude Opus 5 899c18de84 docs(changelog): 月度对账并入团期计划行与分房行(#7327 PR-3)
changelog-filename-gate / validate (push) Failing after 3s
补 PR-3(#7645 / 0573c1a78)的接口行为变更。原 13_7327 那份只覆盖
PR-0/1/2 的 settlement/step1,月度对账三个端点一个字没提,而前端拿
changelog 当契约用。

覆盖 GET /v3/admin/house/reconciliation/monthly 及其 hotel-orders、
export 三个既有端点:字段结构未变,变的是返回数值——团期计划行与分房行
首次并入聚合(此前数据源只有 house_hotel_assignment),失效实付不再被
静默丢弃(原 continue 改 computeIfAbsent 新建桶),以及 addOrder 无条件
执行导致 orderCount 口径变化。

测试服实测(dev-v3 @ 0573c1a78 = PR-3 squash 提交,取证前后 commit 未变):
三端点经网关全部 200;2026-10 该月 house 侧 CONFIRMED 为 0 行而团期侧
3 行 9 间,响应返回 2 家酒店 5 单 —— PR-3 之前该月必然空响应。
REVOKED 实付 800 与有效实付 758 合计 1558,与响应逐字段吻合。

frontend_status 取 pending:响应结构未变但数值口径变了,需 mmg 确认
页面对「0 间夜订单行」「团期酒店行」两种新形态的展示。

Refs #7327

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 03:17:43 +08:00
yaosutu 3becd7f6da docs(finance): 员工借款申请与审批 changelog——Row 出参补 purpose 申请事由
changelog-filename-gate / validate (push) Failing after 2s
接口 PR #7655(Issue #7654)员工借款分页 Row 出参新增 purpose(对应 fin_staff_loan.purpose,
原型列表有事由列、接口原缺失)。出参只增不删向后兼容。已部署测试服行为级验证
(page 返回 Row 含 purpose 字段)。changelog §5.1 Row 补 purpose、§5.2 Detail 去重。
2026-09-13 23:04:13 +08:00
API Changelog Bot d2bce9b9c8 docs(changelog): #7439 dayNumber 取值域放宽,用车行可落在行程窗外
changelog-filename-gate / validate (push) Failing after 2s
Refs #7439 / PR #7639 (8c699658a)

- TerminateRefundItemVO.dayNumber 不再保证落在 [1, tripDays]:接送机服务日常在行程窗外,
  该值是服务日的无损编码,后端不再截断;原先这类订单被 581048 拒掉,现在正常返回。
- 前端凡是拿 dayNumber 直接当下标 / 做 1..N 循环的地方必须先做边界判断。
- 第八节为测试服实测:order-v3 @ dev-v3/8c699658a,经网关调 refund-preview,
  同一响应实测到 dayNumber=0(接机,出发前一天)与 dayNumber=5(送机,>tripDays=3),
  保险行仍 null,581048 未出现;取证前后 deploy-status 的 commit 一致。
2026-09-13 22:26:38 +08:00
API Changelog Bot 59bc815af4 docs(changelog): record #7635 merge
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 21:06:37 +08:00
API Changelog Bot e3700420a2 docs(changelog): publish order kind filters (#7635)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 20:18:39 +08:00
jw 0686db9ad5 changelog(#7528): 团期进入待出发七项硬门 + 详情 departureGates 展示 + recheck 端点
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 19:04:55 +08:00
API Changelog Bot和Claude Opus 5 0207e50800 docs(changelog): #7326 团期房务分房 H9-H11 + 团期配房明细 H12(新增接口,管理后台)
changelog-filename-gate / validate (push) Failing after 2s
面向 mmg:房务「分房」页三端点(H9 总览 / H10 人工微调 / H11 重算)
与团期详情「配房明细」只读区块(H12),四个端点全部新增。

覆盖范围写在 frontmatter 的 status_note 里,不藏在正文:
- 网关实测的是 e9855bf21;其后的 4df361bf6(days[].balanced 两端统一为纯算术)
  与 5fd39de3b(三处契约描述订正)只有单测覆盖;
- 网关实测那轮有两处前置是 SQL 直更达成的,对应的两条业务链路本轮没验过;
- 八项明确未覆盖的盲区逐条列出,这些项的契约按源码写、不按实测写。

几条前端最容易踩的,正文里逐条点名:
1. stayDate 格式错是 HTTP 200 + 响应体 code=400,不是 HTTP 400
   —— axios 那种「非 2xx 才进 catch」的拦截器不会被触发,必须在 then 里判 body.code;
   且格式提示括号不是恒有的(被拒值不像日期时只给不带括号的短句),别做 message 全等匹配。
2. days[].balanced 是纯算术口径(该日 leftover 全 0 且逐户 shortage/surplus 全 0),
   不含过时户与越界户——那两项只进根级 balanced。配了「我想知道 X 该看哪个字段」对照表。
3. H10 的 items 与 clearPlanIds 不得指向同一 planId(100001);三条上限 500/200/99。
4. 床型下拉按 bedTypeLabel 渲染,不要解析错误 message
   —— 理由不是它现在错(808131 文案已在 5fd39de3b 修对),而是错误 message 本来就不是契约。

PR 号待合并后回填(分支 feature/7326-room-allocation)。

两道校验器均通过:
- validate-changelog-frontmatter.mjs --verbose:4 个端点逐条回显、endpoint-count 4,与正文标题数对上;
- validate-changelog-filenames.mjs 的 validateChangelogPath:TARGET errors=[],
  阳性对照(日前缀改 12_)正确报 E_DAY,证明该门禁有分辨力。

Refs #7326

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 18:10:00 +08:00
yaosutu 9ad6178c3c docs(finance): 费用报销 changelog 冲抵勾稽自包含——内联 offsettable 用法
changelog-filename-gate / validate (push) Failing after 2s
原 §七 错误码 599107/599113 写"见 PR #7566 冲抵借款 changelog"违反自包含铁律。
本次补全:599107/599113 拆行写清触发条件 + 新增「冲抵勾稽(自包含)」段——
内联 GET /admin/finance/staff-loans/offsettable 端点用法与出参(balanceAmt 可冲上限)、
use=min(报销剩余额度,借款余额) 勾稽规则、offsetLoanAmt/payableAmt 关系,
指向员工借款申请与审批篇准确文件名。
2026-09-13 17:51:23 +08:00
yaosutu 1191b6e046 docs(finance): 员工借款 changelog 重写——按原型修正核销归属 + 审批写清
changelog-filename-gate / validate (push) Failing after 2s
按原型对齐两菜单分工:
- 员工借款申请与审批(改名,原"申请与核销"):付款管理/员工借款 = 申请 + 审批(submit/approve/reject 手工推进状态,approvalInstanceId 留空待接企微) + 核销进度只读 + 报销冲抵选借款;砍掉还款登记/红冲
- 员工借款支付出纳放款:支付管理/员工借款支付 = 出纳放款(cashier bizType=STAFF_LOAN) + 还款核销(现金/转账登记 POST /{id}/repays、红冲 DELETE、报销冲抵 offsetLoanIds) + 资金账户下拉

修正点:还款核销登记/红冲从申请篇挪到支付篇(原型 L1674 notice 明确核销在出纳侧);审批接口写清为手工推进状态、approvalInstanceId 留空。
2026-09-13 17:43:48 +08:00
Mimingguang babb9e6a89 chore(staffloan): 回写员工借款前端交付凭证(7521/7520 申请核销+出纳放款 verified eb6812c2)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 17:27:19 +08:00
yaosutu c91730668b docs(finance): 员工借款两菜单 changelog——申请+核销 / 出纳放款支付
changelog-filename-gate / validate (push) Failing after 2s
Epic #7520 四 PR(#7543/#7549/#7557/#7566)员工借款域已全量接通 + 菜单已挂载(PR #7642 / 迁移 V20260913_001)。

- 13_staffloan_员工借款申请与核销-新增接口:「付款管理/员工借款」/admin/finance/staff-loans 12 端点全表 + 状态机 + 错误码 599101-599113
- 13_staffloan_员工借款支付出纳放款-修改接口:「支付管理/员工借款支付」出纳放款对接(cashier bizType=STAFF_LOAN)
- 两篇均含 菜单↔功能↔接口 对照表;借款人下拉统一 GET /admin/user/employee-options;资金账户 fund-accounts/options
2026-09-13 17:01:28 +08:00
Mimingguang 890c8bd454 chore(expense): 回写费用报销前端交付凭证(7472/7486/7502 verified e5ca470a)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 16:49:39 +08:00
API Changelog Bot 91e38984ab docs(changelog): add #7633 revoke reason handoff
changelog-filename-gate / validate (push) Failing after 1s
2026-09-13 16:32:00 +08:00
yaosutu edab50a6a8 feat(changelog): 费用报销三件套(#7472/#7486/#7502) + 费用支付出纳对接说明
changelog-filename-gate / validate (push) Failing after 2s
- 费用报销:page 加 statuses 多状态筛选、detail 加 payRecords 付款记录、表单补 applicantId/payeeAccount/voucherUrl、透出经办人 operatorId/operatorName、598705 文案放宽;含部门组织树/员工选择器/所属公司 travel_agency/费用分类 关联接口指引
- 费用支付:出纳域对接说明(queue/pay/payments 按 EXPENSE 路由),接口无变更
2026-09-13 16:25:38 +08:00
Mimingguang 5db14d3832 chore(changelog): #7439 用车需求分家前端 not_required(等 TRANSFER 开放)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 15:10:28 +08:00
Mimingguang b241e8a69b chore(changelog): #7612 业务外收支 + #7625 员工选择器前端 verified
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 15:01:58 +08:00
API Changelog Bot 1c5279f327 docs(changelog): #7439 对外分册补齐 809001/809007 处置口径与「建议显式传 kind」
changelog-filename-gate / validate (push) Failing after 2s
两处是交接件自身的缺口,不是实现问题:

1. 809001(同单同 kind 重复/并发提交)此前只作为 JSON 示例出现,没有前端处置口径,
   而本文件错误码表的前提就是「每个码配一条处置口径——码本身不够,处置动作错了
   照样是线上问题」。补的处置口径关键是「不要自动重试」:只要那条活跃需求还在,
   重试永远是这个码。
2. 809007 此前只在内部分册。它确实是 fleet 消费侧的码、前端拿不到,但错误码段位
   在交接件里应当完整,且它与 809002 的分工需要说清(809002=提交时派生不出来,
   前端可引导补大交通;809007=提交时没派生、事后被消费,属存量回填,前端无动作)。
   补上之后,「交接件含 6 个错误码」在「两册之和」与「mmg 实际拿到的那一份」
   两种读法下都成立,不必再去裁哪种读法对。
3. 「不传 kind 按 TRAVEL 处理,现网代码可不改但建议显式传」此前只写在内部分册,
   而内部分册的收件人是后端与 fleet 侧、不是 mmg。已补进对外分册的影响评估与
   端点1 入参表,并写明为什么值得显式传:一旦该订单出现两类活跃需求,「不传」
   的语义就从「就是行程用车」变成「碰巧落到行程用车上」,两者在代码里长得一样。

校验:六个码(809000/809001/809002/809007/809008/809009)在对外册均为行首表格行
各 1 行;退役号 809003-809006 阴性对照各 0 命中;endpoint-count 仍为 7 / 4。
2026-09-13 15:01:15 +08:00
API Changelog Bot 1e8404a047 docs(changelog): #7439 团期车务地基——用车需求分家(对外 7 端点 + 内部 4 端点)
changelog-filename-gate / validate (push) Failing after 1s
两份分册按 BACKEND_CHANGELOG_DELIVERY_GUIDE.md 2.5 节拆分(/v3/internal 必须单独成篇)。
2026-09-13 测试环境逐端点实测:对外 7 个经网关,内部 4 个直连服务带 X-Internal-Token
(网关按设计一律 403 拦 internal,不是路由失败)。部署 HEAD a82367e15,
order-v3 / fleet / gateway 同批。

实测顺带订正两处文档与实现不符的契约,已改在 §二/§三 正文而非附注:
1. 打回·定制师 / 打回·车控 的 kind 是 @RequestParam Query 参数,不在 RejectReqVO 里。
   原文档标成 Body —— 按原文档把 kind 塞进 JSON 会被 Jackson 静默忽略、
   不报错也不返 400、服务端按默认 TRAVEL 处理,接送机的打回会落到行程需求上。
2. 提交/修改用车需求的非法 kind 实测返 400(VehicleRequirementReqVO 的 @Pattern
   先于业务代码拦截),809000 对该端点的 body 参数不可达;809000 仍可经内部接口的
   query 入口触发。同一处校验、两个入口两种表现,两条分支都要处理。
2026-09-13 14:47:04 +08:00
yaosutu d53a6f4328 docs(changelog): 业务外收支 7612 入参按 IN/OUT 两个页签分开说明
changelog-filename-gate / validate (push) Failing after 2s
把"四、入参"重构为分方向:先讲一套接口两个页签(direction 区分)怎么调,再分别给业务外收入(IN)/业务外支出(OUT)两张干净表单字段表,支出明确"只有 8 字段、不收凭证类"。前端对着自己页签抄即可。
2026-09-13 14:44:50 +08:00
Mimingguang 649eea681b chore(changelog): #7327 核单住宿失效团期行前端 verified(可删+合计剔除)
changelog-filename-gate / validate (push) Failing after 2s
2026-09-13 14:39:53 +08:00