Archived
上一轮判断"读数层四个函数也躲不掉、只能手抄"是错的:rowReadings/missingReadings/ tallyReadings/distinctReadings 是 apps/api/src/app/wiring/engines.ts 的具名导出,测试文件住在 apps/api/src/modules/loop-engine/__tests__/,import 它们是 apps→apps,activities-isolated 与 apps-not-into-activities 两条隔离规则一条都不沾。真正躲不掉的手抄只有六笔配方常量本身(ACT_*, 因为那条边是 apps/* → activities/* 的反方向,才是两条规则真堵住的)。 而且手抄件已经在同一笔提交里漂了:missingReadings 拼缺项名的真身是 gaps.map((f) => f.label ?? f.name)(engines.ts:378),手抄件漏了 label ?? 那半句,连带镜像的 Declared 类型没有 label 字段,这条分支从结构上就复刻不出来。 删掉约 150 行手抄,改成 import 真身。相对路径要爬三层撞了 eslint 的 no-restricted-imports, 新增 @app/* 路径别名(tsconfig.base.json + vitest.config.ts 各一行,与既有 @modules/* / @shared/* 同一种写法)—— 取名核对过不撞 pnpm 工作区包名 @app/api / @app/web(两者从未被当作 TS import specifier 用过,且 apps/api 的 package.json exports 只暴露了 "." 一个入口)。 变异复验(删手抄之后这条用例仍能精确复现原 bug):旧次序 → RED,Received 恰是评审报告点名的 那个空字符串,与手抄版本逐字相同;新次序 → GREEN。depcruise 单独确认零违规。 文件头注按"测什么、不测什么"重写:次序不倒退已由 steps.test.ts 用精确数组相等钉在真 ASSESSMENT_STEPS 上;这份镜像守的是引擎逐 action 刷新时机,在形状上有代表性即可,不是逐字 等于真配方的承诺。docs/debt.md 补一条,点名唯一还留着的手抄(ACT_* 六个常量)与谁改了 S1 配方形状该顺手核什么。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { defineConfig } from 'vitest/config';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const p = (rel: string) => fileURLToPath(new URL(rel, import.meta.url));
|
|
|
|
export default defineConfig({
|
|
resolve: {
|
|
alias: {
|
|
'@contracts': p('./packages/contracts/src/index.ts'),
|
|
'@sdk': p('./packages/activity-sdk/src/index.ts'),
|
|
'@sfeel': p('./packages/sfeel/src/index.ts'),
|
|
'@ui': p('./packages/ui-kit/src/index.ts'),
|
|
'@utils': p('./packages/utils/src/index.ts'),
|
|
// apps/web 内部的两个别名 —— 与 apps/web/vite.config.ts 同口径,
|
|
// 否则 web 侧测试碰不到挂了这两个前缀的模块(2026-08-26 subscribe.ts 接入票据后踩到)
|
|
'@web-shared': p('./apps/web/src/shared'),
|
|
'@features': p('./apps/web/src/features'),
|
|
'@testing': p('./tools/it-database.ts'),
|
|
'@modules': p('./apps/api/src/modules'),
|
|
'@app': p('./apps/api/src/app'),
|
|
'@shared': p('./apps/api/src/shared'),
|
|
},
|
|
},
|
|
test: {
|
|
include: ['{apps,packages,activities}/**/__tests__/**/*.test.ts', '{apps,packages}/**/*.test.ts'],
|
|
testTimeout: 30_000,
|
|
hookTimeout: 120_000,
|
|
exclude: ['**/node_modules/**', '**/dist/**'],
|
|
passWithNoTests: true,
|
|
environment: 'node',
|
|
},
|
|
});
|