fix: 部分收付累计释额并扩展结算 E2E 与 CI
账期收付改为按累计已付同步 credit_ledger,修复多笔 partial_paid 与坏账核销重复释额;新增 API E2E(占成、权限、部分收付/坏账)与 GitHub Actions e2e-api job。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
|
||||
import { test, expect, request as pwRequest } from '@playwright/test';
|
||||
import { playerLoginViaBypass, resetE2EPlayer, fetchCurrentDrawNo } from './_helper';
|
||||
import { playerLoginViaBypass, resetE2EPlayer, fetchOpenDrawNo } from './_helper';
|
||||
|
||||
const CURRENCY = (process.env.LOTTERY_DEFAULT_CURRENCY ?? 'NPR').toUpperCase();
|
||||
const BET_AMOUNT_MINOR = 1000;
|
||||
@@ -39,8 +39,7 @@ test('玩家登录 → /wallet/balance 返回币种 + 余额', async () => {
|
||||
});
|
||||
|
||||
test('preview → place → 拿 ticket_no + 余额变动', async () => {
|
||||
const draw = await fetchCurrentDrawNo();
|
||||
test.skip(draw === null, '当前无开放期号(draw.current 返回 null),跳过下注链路');
|
||||
const drawNo = await fetchOpenDrawNo();
|
||||
|
||||
const session = await playerLoginViaBypass();
|
||||
const ctx = await pwRequest.newContext({
|
||||
@@ -52,7 +51,7 @@ test('preview → place → 拿 ticket_no + 余额变动', async () => {
|
||||
|
||||
const preview = await ctx.post('/api/v1/ticket/preview', {
|
||||
data: {
|
||||
draw_id: draw!.draw_no,
|
||||
draw_id: drawNo,
|
||||
currency_code: CURRENCY,
|
||||
client_trace_id: `e2e-preview-${Date.now()}`,
|
||||
lines: [{ number: '1234', play_code: 'straight', amount: BET_AMOUNT_MINOR }],
|
||||
@@ -64,7 +63,7 @@ test('preview → place → 拿 ticket_no + 余额变动', async () => {
|
||||
|
||||
const place = await ctx.post('/api/v1/ticket/place', {
|
||||
data: {
|
||||
draw_id: draw!.draw_no,
|
||||
draw_id: drawNo,
|
||||
currency_code: CURRENCY,
|
||||
client_trace_id: `e2e-place-${Date.now()}`,
|
||||
lines: [{ number: '1234', play_code: 'straight', amount: BET_AMOUNT_MINOR }],
|
||||
@@ -89,8 +88,7 @@ test('preview → place → 拿 ticket_no + 余额变动', async () => {
|
||||
});
|
||||
|
||||
test('同 client_trace_id 第二次 place → 幂等回放,不重复扣款', async () => {
|
||||
const draw = await fetchCurrentDrawNo();
|
||||
test.skip(draw === null, '当前无开放期号,跳过幂等用例');
|
||||
const drawNo = await fetchOpenDrawNo();
|
||||
|
||||
const session = await playerLoginViaBypass();
|
||||
const ctx = await pwRequest.newContext({
|
||||
@@ -99,7 +97,7 @@ test('同 client_trace_id 第二次 place → 幂等回放,不重复扣款', a
|
||||
|
||||
const trace = `e2e-idem-${Date.now()}`;
|
||||
const payload = {
|
||||
draw_id: draw!.draw_no,
|
||||
draw_id: drawNo,
|
||||
currency_code: CURRENCY,
|
||||
client_trace_id: trace,
|
||||
lines: [{ number: '5678', play_code: 'straight', amount: 500 }],
|
||||
|
||||
Reference in New Issue
Block a user