|
@@ -52,9 +52,20 @@ import (
|
|
|
const MaxDivideDepth int32 = 100
|
|
const MaxDivideDepth int32 = 100
|
|
|
|
|
|
|
|
// MaxDivideBizDepth 是分账层级的**业务规则**上限:最多 3 层(超管 → 校区主任 → 老师)。
|
|
// MaxDivideBizDepth 是分账层级的**业务规则**上限:最多 3 层(超管 → 校区主任 → 老师)。
|
|
|
|
|
+// 超限一律 apperr.ErrDivideQuotaExceeded(3111),与其它三种 3111 语义共用错误码、靠 message 区分。
|
|
|
//
|
|
//
|
|
|
-// 拍板日期 2026-11-10(业务确认为**硬规则**,不是建议),来源 = 前端 mock
|
|
|
|
|
-// `divide-into.ts:26 MAX_DIVIDE_DEPTH = 3`。超限一律 apperr.ErrDivideQuotaExceeded(3111)。
|
|
|
|
|
|
|
+// 拍板日期 2026-11-10(业务确认为**硬规则**,不是建议)。
|
|
|
|
|
+//
|
|
|
|
|
+// 出处(已按本机前端仓实读校正,不是转述):
|
|
|
|
|
+//
|
|
|
|
|
+// DEV-MERGE-LEGACY-PC-FRONTEND-2026/src/api/mock/routes/divide-into.ts:32
|
|
|
|
|
+// const MAX_DIVIDE_DEPTH = 3;
|
|
|
|
|
+// :107 if (parent.layer >= MAX_DIVIDE_DEPTH) return fail(3111, '分账层级超限(最多 3 层)');
|
|
|
|
|
+//
|
|
|
|
|
+// 判据等价:mock 的 `parent.layer >= 3` ⇔ 本服务的 `parent.Layer+1 > 3`(即 nextLayer > 3),
|
|
|
|
|
+// 同一个边界、同一个 3111、同一个"第 4 层被拒"语义 —— 前后端不会出现"前端不让点、
|
|
|
|
|
+// 后端却能建"或"后端拒了、前端以为能建"的错位。
|
|
|
|
|
+// (注:mock 里那句注释「B-2 待业务拍板,暂保留 3」已过期,2026-11-10 已成硬规则。)
|
|
|
//
|
|
//
|
|
|
// 为什么必须落在后端而不是只靠前端常量:mock 里的常量只保证"界面上不让你点"。
|
|
// 为什么必须落在后端而不是只靠前端常量:mock 里的常量只保证"界面上不让你点"。
|
|
|
// 真后端一旦没有这道校验,绕过前端(或第三方直接调 API)就能建出第 4 层,
|
|
// 真后端一旦没有这道校验,绕过前端(或第三方直接调 API)就能建出第 4 层,
|