【1. 主题补全】 - pwuniapp/pages/expert/workspace.vue(大神工作台):根节点加 theme class,66 处深色硬编码改为全局主题变量(bg-primary/surface/surface-elevated/text-*/border-subtle/color-brand(-gradient)) - pwuniapp/pages/activity/my-ticket.vue(我的门票):同样接入主题;条码/二维码区域保持黑白(可扫描,不做主题化) - 两页 onShow 刷新 currentThemeKey,切换主题回到页面即时生效 【2. 后台模板 demo 清理】 - 删除模板路由模块:form / list / profile / result / visualization(原本 hideInMenu 不可见) - 删除对应 views 目录、api(form/list/profile/visualization/dashboard)、dashboard/monitor - 删除 src/mock 与全部 views/**/mock.ts,并移除 main.ts 的 `import './mock'` - 可见工作台移除:content-chart(调用不存在的 /api/content-data)、popular-content(写死假活动数据);分类占比卡片改为整行 - 同步清理 zh-CN/en-US locale 中对应导入与展开 【验证】 - 后台 `pnpm build` 通过,产物显著减小(chart 分块 1026KB→576KB) - 新增 theme-and-admin-cleanup.spec.ts;更新 dashboard-reality.spec.ts - 全量 100 套件 / 685 用例全绿
53 行
2.2 KiB
TypeScript
53 行
2.2 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 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');
|
|
});
|
|
});
|
|
});
|