feat(platform): frame history replay as customer delivery
This commit is contained in:
@@ -6887,9 +6887,9 @@ test('copies trajectory playback summary from history page', async () => {
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('统计查询:http://localhost:3000/#/mileage?keyword=VIN-HISTORY-SUMMARY&protocol=JT808&dateFrom=2026-07-03&dateTo=2026-07-04'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('车辆服务:http://localhost:3000/#/detail?keyword=VIN-HISTORY-SUMMARY&protocol=JT808'));
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: /复制轨迹影响/ }));
|
||||
fireEvent.click(screen.getByRole('button', { name: /复制客户影响/ }));
|
||||
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【轨迹运营影响】'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【客户轨迹影响】'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('车辆:VIN-HISTORY-SUMMARY'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('数据通道:JT808'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('业务状态:需要复核'));
|
||||
@@ -6903,7 +6903,7 @@ test('copies trajectory playback summary from history page', async () => {
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: /复制轨迹复盘包/ }));
|
||||
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【轨迹复盘交接包】'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【客户轨迹复盘包】'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('车辆:VIN-HISTORY-SUMMARY'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('轨迹规模:位置 2 / 有效定位 2 / 明细证据 1 / 字段裁剪 2'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('轨迹质量:定位覆盖率 100% / 回放跨度 60 分钟 / 采样间隔 60 分钟/点'));
|
||||
@@ -8272,17 +8272,17 @@ test('shows parsed field history as a flattened evidence table', async () => {
|
||||
expect(screen.getByText('参考 Fleetio、Samsara、Geotab 的报表能力,把导出从一次性下载升级为可复用的交付节奏。')).toBeInTheDocument();
|
||||
expect(screen.getByText('客户报表用途导航')).toBeInTheDocument();
|
||||
expect(screen.getByText('先选择客户要解决的问题,再决定导出位置、字段、统计或说明。')).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.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.getByRole('button', { name: '客户报表交付节奏 字段模板复用 字段配置' })).toBeInTheDocument();
|
||||
expect(screen.getByText('客户导出包模板库')).toBeInTheDocument();
|
||||
expect(screen.getByText('把一次性 CSV 下载变成客户可复用的报表模板:日报看运营、周报做对账、临时解释处理质疑、字段模板保持口径稳定。')).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: '客户导出包模板库 日报运营包 运营早会 导出日报' })).toBeInTheDocument();
|
||||
expect(screen.getByText('把一次性 CSV 下载变成客户可复用的报表模板:日报看车辆、周报做对账、临时解释处理质疑、字段模板保持口径稳定。')).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();
|
||||
@@ -8315,7 +8315,7 @@ test('shows parsed field history as a flattened evidence table', async () => {
|
||||
await waitFor(() => {
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【历史数据周期交付计划】'));
|
||||
});
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('推荐频率:日报用于运营复盘,周报用于客户对账,临时导出用于问题解释。'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('推荐频率:日报用于客户复盘,周报用于客户对账,临时导出用于问题解释。'));
|
||||
expect(writeText).toHaveBeenCalledWith(expect.stringContaining('交付内容:轨迹报告 / 位置历史 CSV / 明细证据 CSV / 字段裁剪 CSV / 统计查询链接 / 质量提示。'));
|
||||
fireEvent.click(screen.getByRole('button', { name: '保存报表视图 当前筛选 VIN-FIELDS-001 保存视图' }));
|
||||
await waitFor(() => {
|
||||
@@ -8488,7 +8488,7 @@ test('shows trajectory playback workspace from history locations', async () => {
|
||||
expect(screen.getByText('位置导出')).toBeInTheDocument();
|
||||
expect(screen.getAllByText('历史明细').length).toBeGreaterThan(0);
|
||||
expect(screen.getAllByText('字段裁剪').length).toBeGreaterThanOrEqual(1);
|
||||
expect(screen.getByText('轨迹运营影响')).toBeInTheDocument();
|
||||
expect(screen.getByText('客户轨迹影响')).toBeInTheDocument();
|
||||
expect(screen.getByText('轨迹范围')).toBeInTheDocument();
|
||||
expect(screen.getAllByText('定位覆盖').length).toBeGreaterThan(0);
|
||||
expect(screen.getByText('异常影响')).toBeInTheDocument();
|
||||
|
||||
Reference in New Issue
Block a user