自动修改

This commit is contained in:
2026-07-12 07:50:27 +08:00
parent b74e4e4fe5
commit d0f0fa09af
18 changed files with 117 additions and 66 deletions
+19
View File
@@ -6,6 +6,7 @@ import {
validateRedeemAmount,
allocateBenefitCoupons,
calcBenefitSummary,
orderTabToStatuses,
} from './index';
describe('calcBenefitAmount', () => {
@@ -87,6 +88,24 @@ describe('allocateBenefitCoupons', () => {
});
});
describe('orderTabToStatuses', () => {
it('maps V3.0 three user tabs', () => {
expect(orderTabToStatuses('pending_pay')).toEqual(['PENDING_PAY']);
expect(orderTabToStatuses('paid')).toEqual([
'PENDING_SHIP',
'OUT_WAREHOUSE',
'SHIPPING',
'PENDING_RECEIVE',
]);
expect(orderTabToStatuses('completed')).toEqual(['COMPLETED']);
});
it('keeps legacy tab keys mapped to paid', () => {
expect(orderTabToStatuses('pending_ship')).toEqual(orderTabToStatuses('paid'));
expect(orderTabToStatuses('pending_receive')).toEqual(orderTabToStatuses('paid'));
});
});
describe('calcBenefitSummary', () => {
it('max redeem equals total balance', () => {
expect(calcBenefitSummary([300, 400])).toEqual({
+2 -2
View File
@@ -115,10 +115,10 @@ export function orderTabToStatuses(tab: string): string[] | undefined {
switch (tab) {
case 'pending_pay':
return ['PENDING_PAY'];
case 'paid':
case 'pending_ship':
return ['PENDING_SHIP', 'OUT_WAREHOUSE'];
case 'pending_receive':
return ['SHIPPING', 'PENDING_RECEIVE'];
return ['PENDING_SHIP', 'OUT_WAREHOUSE', 'SHIPPING', 'PENDING_RECEIVE'];
case 'completed':
return ['COMPLETED'];
default:
+11 -4
View File
@@ -40,9 +40,13 @@ export enum OrderStatus {
export enum OrderTab {
ALL = 'all',
PENDING_PAY = 'pending_pay',
PENDING_SHIP = 'pending_ship',
PENDING_RECEIVE = 'pending_receive',
/** V3.0 PRD:已付款(含待发货/配送中,内部多状态聚合) */
PAID = 'paid',
COMPLETED = 'completed',
/** @deprecated 兼容旧链接,映射同 PAID */
PENDING_SHIP = 'pending_ship',
/** @deprecated 兼容旧链接,映射同 PAID */
PENDING_RECEIVE = 'pending_receive',
}
export enum DeliveryType {
@@ -91,6 +95,9 @@ export const CLIENT_APP_ACTOR_MAP: Record<ClientApp, ActorType> = {
export const REDEEM_DIRECT_LIMIT_POLICY = 'TOTAL_ACTIVE_BALANCE';
export const REDEEM_DOCUMENT_LIMIT_POLICY = 'DOCUMENT_BALANCE';
export const REDEEM_TOKEN_TTL_SECONDS = 300;
/** V3.0 PRD:核销码 3 分钟有效 */
export const REDEEM_TOKEN_TTL_SECONDS = 180;
/** 短信/核销验证码 3 分钟有效(NFR-003) */
export const SMS_CODE_TTL_SECONDS = 180;
/** 核销成功后供用户端轮询结果,略长于 token TTL */
export const REDEEM_RESULT_TTL_SECONDS = 600;
export const REDEEM_RESULT_TTL_SECONDS = 360;