feat(platform): add customer mileage decision panel

This commit is contained in:
lingniu
2026-07-05 03:43:56 +08:00
parent 8052bf4af4
commit 4445328581
3 changed files with 256 additions and 2 deletions

View File

@@ -7803,7 +7803,7 @@ test('shows mileage statistics workspace with trend source and definition', asyn
expect(screen.getByRole('button', { name: '闭合复核 RAW' })).toBeInTheDocument();
expect(screen.getByText('统计发布审计')).toBeInTheDocument();
expect(screen.getAllByText('复核后发布').length).toBeGreaterThanOrEqual(1);
expect(screen.getByText('区间闭合')).toBeInTheDocument();
expect(screen.getAllByText('区间闭合').length).toBeGreaterThanOrEqual(1);
expect(screen.getAllByText('记录覆盖').length).toBeGreaterThanOrEqual(1);
expect(screen.getByText('在线证据')).toBeInTheDocument();
expect(screen.getByRole('button', { name: '复制统计发布审计' })).toBeInTheDocument();
@@ -7818,7 +7818,7 @@ test('shows mileage statistics workspace with trend source and definition', asyn
expect(screen.getByText('42.9%')).toBeInTheDocument();
expect(screen.getByText('分页覆盖率')).toBeInTheDocument();
expect(screen.getAllByText('100%').length).toBeGreaterThanOrEqual(1);
expect(screen.getByText('闭合校验')).toBeInTheDocument();
expect(screen.getAllByText('闭合校验').length).toBeGreaterThanOrEqual(1);
expect(screen.getAllByText('0 km').length).toBeGreaterThanOrEqual(1);
expect(screen.getAllByText('统计口径').length).toBeGreaterThanOrEqual(1);
expect(screen.getByText((content) => content.includes('区间总值应等于各日里程之和'))).toBeInTheDocument();
@@ -7945,6 +7945,14 @@ test('shows vehicle-first statistics domains for one vehicle service', async ()
expect(screen.getByText('三类数据源最终汇总为一个车辆服务统计视图')).toBeInTheDocument();
expect(screen.getByText('当前统计证据')).toBeInTheDocument();
expect(screen.getByText('3 车 / 2 来源 / 3 条明细')).toBeInTheDocument();
expect(screen.getByText('客户里程决策台')).toBeInTheDocument();
expect(screen.getByText('先判断能不能交付再进入轨迹、RAW 和导出复核')).toBeInTheDocument();
expect(screen.getAllByRole('button', { name: '复制决策说明' }).length).toBeGreaterThanOrEqual(1);
expect(screen.getByRole('button', { name: '客户里程决策 交付结论 复制决策' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户里程决策 区间闭合 统计摘要' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户里程决策 覆盖率 导出明细' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户里程决策 异常复核 异常证据' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户里程决策 在线影响 在线态势' })).toBeInTheDocument();
expect(screen.getByText('客户里程复核交付包')).toBeInTheDocument();
expect(screen.getByText('面向客户交付里程时,先确认区间里程、闭合状态、异常记录和在线影响,再导出明细或进入轨迹与 RAW 证据复核。')).toBeInTheDocument();
expect(screen.getByRole('button', { name: '里程交付 区间里程 复制交付' })).toBeInTheDocument();
@@ -7991,6 +7999,11 @@ test('shows vehicle-first statistics domains for one vehicle service', async ()
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('在线状态3 在线 / 1 离线 / 在线率 75%'));
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('发布判断:复核后发布'));
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('业务影响当前统计范围需要先复核轨迹、RAW和离线车辆影响'));
fireEvent.click(screen.getAllByRole('button', { name: '复制决策说明' })[0]);
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【客户里程决策说明】'));
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('决策结论:复核后交付'));
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('客户判断路径:'));
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('1. 先看区间闭合:区间总值必须等于每日里程之和。'));
fireEvent.click(screen.getByRole('button', { name: '复制在线态势' }));
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【在线统计运营态势】'));
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('车辆范围VIN-STATS-SERVICE'));