docs(changelog): #7347 finalize 团期住宿户级闸门 + #7390 孤儿持有行自动收敛;订正 #7316 的「无权限码是既有设计」
changelog-filename-gate / validate (push) Successful in 2s
changelog-filename-gate / validate (push) Successful in 2s
#7347:整单核单 finalize 新增团期住宿户级硬闸门,新增错误码 584130。 存量统计 SQL 结果为 0,全量生效不做灰度。 #7390:双写扣减孤儿持有行自动收敛,解开重新提交配房恒抛 808902 的死锁。 显著标注「本单不修根因」——submitPersist 仍在 try 块外,孤儿行仍会继续产生。 #7316 订正三处:原文写「本端点无权限码要求……这是既有设计」, 那不是设计而是 #7411 要修的缺陷,已改写为发布时点的事实陈述并指向 #7411。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
这个提交包含在:
@@ -179,7 +179,7 @@ Authorization: Bearer <持 group-batch:view 的管理端 token>
|
||||
|
||||
#### 使用场景
|
||||
|
||||
团期看板「结算」Tab,团期管理员 / 财务查看整团核单进度(已核单户数 / 在团户数)与成本、毛利、共享成本、预支汇总。**本端点无权限码要求**(当前登录态能过网关即可,不校验 `group-batch:view`,与「## 1.全团需求汇总」不同,见「业务边界」)。
|
||||
团期看板「结算」Tab,团期管理员 / 财务查看整团核单进度(已核单户数 / 在团户数)与成本、毛利、共享成本、预支汇总。**⚠️ 2026-09-10 订正**:本篇发布时(`#7316`/PR #7407+#7408 合并时点)本端点确实**零判权**(当前登录态能过网关即可,不校验 `group-batch:view`,与「## 1.全团需求汇总」不同)——**这不是有意的设计,而是 `#7411` 发现并修复的权限缺口**(越权可读毛利 `subOrderTotalProfit`、团期预支 `groupAdvanceApproved`/`groupAdvancePending` 等敏感经营数据)。`#7411`(PR #7447,合并提交 `856ab69bf`)已给本端点补齐权限码 **`group-batch:finance:view`**,不持该码 → **589507**(`GROUP_BATCH_PERMISSION_DENIED`,HTTP 恒 200)。详见 `10_7411_团期核单共享成本三端点补判权-修改接口-管理后台.md`。
|
||||
|
||||
#### 入参字段表
|
||||
|
||||
@@ -256,7 +256,7 @@ Authorization: Bearer <任意已登录管理端 token,无需 group-batch:view>
|
||||
|
||||
- 「已核单」判据只看 `SettlementSummaryRespVO.settled` 标志,不能判 `null`——`SettlementService.getSummary` 对查不到 `order_settlement_summary` 行的子订单返回的是 `settled=false` 的空壳 VO(仅 `orderId`/`advanceSummary` 有值),**从不返回 `null`**,这是 PR #7408 修复的唯一缺陷点。
|
||||
- `totalActiveOrderCount` 与「## 1.全团需求汇总」的 `activeOrderCount` 同口径(在团 = 仅排除 `CANCELLED`,含 `COMPLETED`),两者用同一条 `OrderService#selectInGroupOrderIdsByGroupBatchId(groupBatchId)`。
|
||||
- 本端点**无权限码校验**,任何能过网关鉴权的后台账号都能调用;与 `requirement-summary` 的判权状态不同步(一个要 `group-batch:view`、一个不要),这是既有设计,本次未新增或移除该端点的权限要求。
|
||||
- **⚠️ 2026-09-10 订正**:本篇发布时本端点确实无权限码校验,任何能过网关鉴权的后台账号都能调用,与 `requirement-summary` 的判权状态不同步(一个要 `group-batch:view`、一个不要)——**这不是既有设计,是缺陷**:`#7316` 发布后被 `#7411` 发现并列为安全缺口(同 Controller 的写端点 `POST .../settlement/cost` 同样零判权,任意后台账号可写入团期成本)。`#7411`(PR #7447,合并提交 `856ab69bf`)已修复:本端点(`GET .../settlement/summary`)与 `GET .../settlement/cost` 现要求权限码 `group-batch:finance:view`;`POST .../settlement/cost` 要求 `group-batch:finance:advance`;不持有对应权限码 → 589507。详见 `10_7411_团期核单共享成本三端点补判权-修改接口-管理后台.md`。
|
||||
- `subOrderTotalActualCost` / `subOrderTotalProfit` 只累加 `settled=true` 的子订单;未核单户是**跳过**不计入累加,不是计 `0` 累加(数学效果一致,但语义上是跳过)。
|
||||
- `groupAdvanceApproved` / `groupAdvancePending` 只计 scope=`GROUP_BATCH` 的团期级预支,不含子订单级(子订单级预支已进各户核单报销单,整团层再算一次会重复扣回);`groupAdvanceApproved`/`groupAdvancePending` 均不计入 `grandTotalCost`(预支是资金拨付不是成本)。
|
||||
- 团期不存在 → 589500,判定在 `groupBatchService.requireById` 完成。
|
||||
@@ -380,7 +380,7 @@ Authorization: Bearer <任意已登录管理端 token,无需 group-batch:view>
|
||||
|
||||
- 两个端点的请求参数、响应结构(字段名、类型、嵌套层级)本次完全不变,只变语义、取值口径与其中一个端点的鉴权。
|
||||
- 团期需求确认 / 打回三个端点(`confirm` / `confirm-check` / `reject`)使用的权限码仍是 `group-batch:demand:confirm`,不受本次影响。
|
||||
- `settlement/summary` 本身**没有新增权限码**,与 `requirement-summary` 的判权状态不同步是既有设计,本次未改变。
|
||||
- `settlement/summary` 本身在 `#7316` 发布时**没有新增权限码**,本次(`#7316`)确实未改变其判权状态;**⚠️ 2026-09-10 订正**:但「与 `requirement-summary` 判权不同步」并非有意设计,而是 `#7411` 发现并修复的缺陷——`#7411` 已给 `settlement/summary`、`settlement/cost`(GET/POST)三端点补齐 `group-batch:finance:view`/`group-batch:finance:advance` 判权,详见 `10_7411_团期核单共享成本三端点补判权-修改接口-管理后台.md`。
|
||||
- 无 Flyway、无表结构变更、无新端点、网关路由零改动,只涉及 `hl-order-service-v3` 单模块。
|
||||
|
||||
---
|
||||
|
||||
在新工单中引用
屏蔽一个用户