refactor(order): 结账单状态常量化并锁定仲裁结单统计口径
仲裁结案会把结账单置为终态 settled,但该状态一直是裸字符串;同时 adminfinance 按日结算聚合只按
accepted 过滤,容易被误读成"仲裁单掉出统计"。本次只做卫生与口径固化,不改任何行为:
- order 新增 CheckoutStatus{Submitted,Countered,Accepted,Disputed,Settled},包内沿用非导出别名
- dispute 的仲裁结案与争议取消分支改用常量;distribution 不能反向依赖 order,本地声明同名常量
- adminfinance 聚合里的 oc.status = 'accepted' 改为常量绑定,并注释说明仲裁单不计入是有意口径
- 新增 distribution 结账单退款重算用例(该分支原先无覆盖):accepted/settled 按结账单实际租金,
submitted 不被采用;dashboard 用例补一张 settled 结账单,钉住"不计入已结算订单数"
This commit is contained in:
@@ -54,6 +54,16 @@ const (
|
||||
checkoutStatusAccepted = "accepted"
|
||||
checkoutStatusDisputed = "disputed"
|
||||
|
||||
// 结账单状态的跨模块导出别名:dispute 仲裁结案写 settled,adminfinance 统计按
|
||||
// accepted 过滤,这些跨包位置不应再出现裸字符串。包内沿用上面的非导出名。
|
||||
// CheckoutStatusSettled 是仲裁终态(写回实际结算金额后置位),不属于
|
||||
// hasOpenCheckout 的"待结"集合——仲裁只发生在 completed 订单上。
|
||||
CheckoutStatusSubmitted = checkoutStatusSubmitted
|
||||
CheckoutStatusCountered = checkoutStatusCountered
|
||||
CheckoutStatusAccepted = checkoutStatusAccepted
|
||||
CheckoutStatusDisputed = checkoutStatusDisputed
|
||||
CheckoutStatusSettled = "settled"
|
||||
|
||||
checkoutTurnOwner = "owner"
|
||||
checkoutTurnRenter = "renter"
|
||||
|
||||
|
||||
@@ -580,6 +580,7 @@ func TestCheckoutStatusConstantsAreDefined(t *testing.T) {
|
||||
checkoutStatusCountered,
|
||||
checkoutStatusAccepted,
|
||||
checkoutStatusDisputed,
|
||||
CheckoutStatusSettled,
|
||||
}
|
||||
|
||||
for _, status := range statuses {
|
||||
@@ -587,6 +588,22 @@ func TestCheckoutStatusConstantsAreDefined(t *testing.T) {
|
||||
t.Fatal("checkout status should not be empty")
|
||||
}
|
||||
}
|
||||
|
||||
// 跨模块导出别名必须与包内常量取值一致:dispute 仲裁结案写 settled,adminfinance 按 accepted 过滤。
|
||||
exports := map[string]string{
|
||||
CheckoutStatusSubmitted: checkoutStatusSubmitted,
|
||||
CheckoutStatusCountered: checkoutStatusCountered,
|
||||
CheckoutStatusAccepted: checkoutStatusAccepted,
|
||||
CheckoutStatusDisputed: checkoutStatusDisputed,
|
||||
}
|
||||
for exported, internal := range exports {
|
||||
if exported != internal {
|
||||
t.Fatalf("导出别名 %q 与包内常量 %q 不一致", exported, internal)
|
||||
}
|
||||
}
|
||||
if CheckoutStatusSettled != "settled" {
|
||||
t.Fatalf("CheckoutStatusSettled = %q, want settled", CheckoutStatusSettled)
|
||||
}
|
||||
}
|
||||
|
||||
// TestOrderDurationHours 测试订单时长计算
|
||||
|
||||
Reference in New Issue
Block a user