Просмотр исходного кода

docs(ac20): models_divide.Layer 红线注释写明「两道限制,不是同一个概念」

问题:该字段注释只写「深度上限 100(超限 → 3111,防递归栈溢出)」,
与 service 里新加的 MaxDivideBizDepth=3 并存,读者会以为只有一道限制,
并把「超限」理解成同一个超限 —— 而这两个数一个是业务规则、一个是结构上限。

改法:红线部分写明 ① 业务规则最多 3 层(第 4 层 → 3111,2026-11-10 拍板)
② 结构上限 100(防 BFS 不终止/递归爆栈);判序先 3 后 100,两个数不得合并。

依据:F20(业务拍板「3 层是硬规则」)+ 三库实测 MAX(layer)=2、layer>3 共 0 行。
Q 7 часов назад
Родитель
Сommit
f82f2399b0
1 измененных файлов с 1 добавлено и 1 удалено
  1. 1 1
      internal/academic/model/models_divide.go

+ 1 - 1
internal/academic/model/models_divide.go

@@ -33,7 +33,7 @@ type UserDivideInto struct {
 	ParentUserID     *string   `gorm:"index:idx_parent;column:parent_user_id;size:26" json:"parentUserId,omitempty"`                                // 上级用户(ULID;根为 NULL)|枚举:无|写入:加入时|FK:→ 本表 user_id(自引用)|红线:BFS 上行链依据,禁止成环
 	ParentUserID     *string   `gorm:"index:idx_parent;column:parent_user_id;size:26" json:"parentUserId,omitempty"`                                // 上级用户(ULID;根为 NULL)|枚举:无|写入:加入时|FK:→ 本表 user_id(自引用)|红线:BFS 上行链依据,禁止成环
 	LeftVal          int32     `gorm:"index:idx_root_left_right,priority:2;column:left_val;not null;default:1" json:"leftVal"`                      // 左值(Nested Set)|枚举:无|写入:加入/插入新节点时右值扩张|FK:无|红线:区间扩张须同事务(left>=parentRight 全体 +2)
 	LeftVal          int32     `gorm:"index:idx_root_left_right,priority:2;column:left_val;not null;default:1" json:"leftVal"`                      // 左值(Nested Set)|枚举:无|写入:加入/插入新节点时右值扩张|FK:无|红线:区间扩张须同事务(left>=parentRight 全体 +2)
 	RightVal         int32     `gorm:"index:idx_root_left_right,priority:3;column:right_val;not null;default:2" json:"rightVal"`                    // 右值(Nested Set)|枚举:无|写入:同上|FK:无|红线:必须恒有 left < right
 	RightVal         int32     `gorm:"index:idx_root_left_right,priority:3;column:right_val;not null;default:2" json:"rightVal"`                    // 右值(Nested Set)|枚举:无|写入:同上|FK:无|红线:必须恒有 left < right
-	Layer            int32     `gorm:"column:layer;not null;default:1" json:"layer"`                                                                // 层级(根=1)|枚举:无|写入:加入时=父+1|FK:无|红线:深度上限 100(超限 → 3111,防递归栈溢出)
+	Layer            int32     `gorm:"column:layer;not null;default:1" json:"layer"`                                                                // 层级(根=1)|枚举:无|写入:加入时=父+1|FK:无|红线:**两道限制,不是同一个概念**——① **业务规则:最多 3 层**(`service.MaxDivideBizDepth`,第 4 层 → 3111,2026-11-10 拍板"硬规则")② **结构上限:100**(`service.MaxDivideDepth`,防 BFS 不终止/递归爆栈);判序先 3 后 100,**两个数不得合并**(否则下一个看到 3 与 100 并存的人一定会删掉一个)
 	CreatedAt        time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"createdAt"`                                                                 // 创建时间(datetime(3))|枚举:无|写入:DB 默认|FK:无|红线:勿手改
 	CreatedAt        time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"createdAt"`                                                                 // 创建时间(datetime(3))|枚举:无|写入:DB 默认|FK:无|红线:勿手改
 	UpdatedAt        time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updatedAt"`                                                                 // 更新时间(datetime(3),ON UPDATE)|枚举:无|写入:DB 自动|FK:无|红线:勿手改
 	UpdatedAt        time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updatedAt"`                                                                 // 更新时间(datetime(3),ON UPDATE)|枚举:无|写入:DB 自动|FK:无|红线:勿手改
 }
 }