// 已读取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 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('已移除调用不存在接口(/api/content-data)的走势图组件,工作台不再引用', () => { const chartPath = path.join( rootDir, 'admin/arco-design-pro-vite/src/views/dashboard/workplace/components/content-chart.vue' ); expect(fs.existsSync(chartPath)).toBe(false); const workplace = fs.readFileSync( path.join(rootDir, 'admin/arco-design-pro-vite/src/views/dashboard/workplace/index.vue'), 'utf-8' ); expect(workplace).not.toContain('ContentChart'); expect(workplace).not.toContain('PopularContent'); }); }); });