refactor(*): 平台架构 - 拆分后端领域模块与画布前端组件并补充测试
This commit is contained in:
40
web/test/helpers/module-group-source.ts
Normal file
40
web/test/helpers/module-group-source.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
// 源码约束测试的读取辅助:大文件按职责拆分后,约束应覆盖原文件及其拆分出的同组模块。
|
||||
//
|
||||
// 用法:moduleGroupSource("pages/assets/index.tsx") 返回原文件与同组模块拼接后的文本。
|
||||
// 只在「源码断言」类测试里使用;行为测试请直接 import 模块。
|
||||
|
||||
import { readFileSync } from "node:fs";
|
||||
import { resolve } from "node:path";
|
||||
|
||||
/** 原文件(相对 src)到拆分出的同组模块。新增拆分时在这里登记。 */
|
||||
export const SPLIT_MODULE_GROUPS: Record<string, readonly string[]> = {
|
||||
"components/canvas/canvas-cloud-agent-panel.tsx": ["components/canvas/canvas-cloud-agent-panel-parts.tsx", "components/canvas/canvas-cloud-agent-events.ts"],
|
||||
"components/canvas/canvas-cloud-agent-chat-ui.tsx": ["components/canvas/canvas-cloud-agent-composer.tsx", "components/canvas/canvas-cloud-agent-attachments.ts"],
|
||||
"components/canvas/art-critique/ai-art-critique-modal.tsx": ["components/canvas/art-critique/ai-art-critique-report.tsx"],
|
||||
"components/canvas/canvas-resource-mention-textarea.tsx": ["components/canvas/canvas-mention-chips.tsx", "components/canvas/canvas-mention-editable.ts", "components/canvas/canvas-mention-menu.tsx"],
|
||||
"components/canvas/canvas-node-content.tsx": ["components/canvas/canvas-node-media-content.tsx", "components/canvas/canvas-node-status-content.tsx"],
|
||||
"components/canvas/canvas-node-prompt-panel.tsx": ["components/canvas/canvas-node-prompt-config.ts", "components/canvas/canvas-node-prompt-references.tsx", "components/canvas/canvas-node-prompt-resize.tsx"],
|
||||
"components/canvas/canvas-script-node.tsx": ["components/canvas/canvas-script-node-parts.tsx"],
|
||||
"components/canvas/director/canvas-director-workbench.tsx": ["components/canvas/director/director-inspectors.tsx"],
|
||||
"components/canvas/director/director-viewport.tsx": ["components/canvas/director/director-viewport-capture.ts", "components/canvas/director/director-viewport-rig.ts"],
|
||||
"lib/art-critique/pipeline.ts": ["lib/art-critique/pipeline-messages.ts", "lib/art-critique/pipeline-parse.ts"],
|
||||
"lib/model-capabilities.ts": ["lib/model-capabilities-workflow.ts"],
|
||||
"pages/admin/components/admin-announcements-panel.tsx": ["pages/admin/components/admin-announcement-editor.tsx", "pages/admin/components/admin-announcement-results.ts"],
|
||||
"pages/admin/components/redemption-codes-panel.tsx": ["pages/admin/components/redemption-codes-modals.tsx"],
|
||||
"pages/admin/settings/appearance-settings-page.tsx": ["pages/admin/settings/appearance-settings-parts.tsx"],
|
||||
"pages/admin/settings/storage-settings-page.tsx": ["pages/admin/settings/storage-settings-model.ts"],
|
||||
"pages/assets/index.tsx": ["pages/assets/asset-library-cards.tsx", "pages/assets/asset-library-format.ts", "pages/assets/asset-library-panels.tsx"],
|
||||
"pages/canvas/project.tsx": ["pages/canvas/canvas-clipboard.ts"],
|
||||
"pages/create/creation-workspace.tsx": ["pages/create/creation-workspace-empty.tsx", "pages/create/creation-workspace-history.tsx", "pages/create/creation-workspace-messages.tsx"],
|
||||
"services/user-data-sync.ts": ["services/user-data-sync-media.ts"],
|
||||
"stores/use-config-store.ts": ["stores/config-model-options.ts", "stores/config-workflow-fields.ts"],
|
||||
};
|
||||
|
||||
const srcRoot = resolve(import.meta.dir, "../../src");
|
||||
|
||||
/** 读取 src 下的文件;若它被拆分过,一并读取同组模块。 */
|
||||
export function moduleGroupSource(relativePath: string): string {
|
||||
const normalized = relativePath.replace(/^(\.\.\/)*src\//, "").replace(/^\.\//, "");
|
||||
const files = [normalized, ...(SPLIT_MODULE_GROUPS[normalized] ?? [])];
|
||||
return files.map((file) => readFileSync(resolve(srcRoot, file), "utf8")).join("\n");
|
||||
}
|
||||
Reference in New Issue
Block a user