文件
shanghaipeiwan/server/tests/dashboard-reality.spec.ts

50 行
2.0 KiB
TypeScript

// 已读取AGENTS.md
import * as fs from 'fs';
import * as path from 'path';
/**
* 第九批回归闸门:后台经营看板真实数据化
* 禁止服务端返回硬编码假经营数据,前后端均不得再以假走势兜底。
*/
describe('第九批看板真实数据闸门 (禁止硬编码经营指标)', () => {
const rootDir = path.resolve(__dirname, '../../');
const repoCode = fs.readFileSync(path.join(rootDir, 'server/src/db/repository.ts'), 'utf-8');
const chartCode = fs.readFileSync(
path.join(rootDir, 'admin/arco-design-pro-vite/src/views/dashboard/workplace/components/content-chart.vue'),
'utf-8'
);
const statsStart = repoCode.indexOf('async getDashboardStats(');
const statsBlock = repoCode.slice(statsStart, statsStart + 3600);
describe('1. 服务端 getDashboardStats 必须来自真实聚合', () => {
it('不得再返回硬编码假指标', () => {
expect(statsStart).toBeGreaterThan(-1);
expect(statsBlock).not.toContain('todayGmv: 58920');
expect(statsBlock).not.toContain('activeUsers: 1250');
expect(statsBlock).not.toContain("date: '09-22'");
expect(statsBlock).not.toContain('{ name: \'同城陪吃\', value: 42 }');
});
it('必须基于订单表实时聚合今日 GMV / 走势 / 品类', () => {
expect(statsBlock).toContain('DATE(created_at) = CURDATE()');
expect(statsBlock).toContain('GROUP BY track');
expect(statsBlock).toContain('DATE_SUB(CURDATE(), INTERVAL 6 DAY)');
expect(statsBlock).toContain('recentGmvTrend');
});
it('接单中大神数量来自真实计数', () => {
expect(statsBlock).toContain('FROM companions WHERE status = "接单中"');
});
});
describe('2. 前端走势图不得以假数据兜底', () => {
it('移除硬编码走势并暴露失败', () => {
expect(chartCode).toContain('const loadFailed = ref(false)');
expect(chartCode).not.toContain('09-22');
expect(chartCode).not.toContain('58920');
expect(chartCode).not.toContain('// fallback');
});
});
});