Approved
As a 超级管理员, I want 统一文件模块集成到统一广告模块和租户后台, so that 可以在租户管理后台统一管理所有文件,统一广告模块使用统一文件实体。
前置条件:
unified-file-module) 已创建unified-file-management-ui) 已创建需要完成的集成:
UnifiedFile 实体(而非 FileMt)UnifiedFile 替代 FileMt@d8d/unified-file-management-ui[ ] 任务1: 更新统一广告模块Entity (AC: 1)
unified-advertisement.entity.ts,将 FileMt 替换为 UnifiedFileimport { UnifiedFile } from '@d8d/unified-file-module'@ManyToOne 关联定义@JoinColumn 定义[ ] 任务2: 更新统一广告模块依赖 (AC: 1)
package.json,添加 @d8d/unified-file-module 依赖@d8d/core-module-mt 依赖(如果其他模块还需要)pnpm install 更新依赖[ ] 任务3: 更新统一广告模块测试 (AC: 5)
FileMt 引用为 UnifiedFile[ ] 任务4: 更新统一广告管理UI依赖 (AC: 2)
package.json,添加 @d8d/unified-file-management-ui 依赖@d8d/file-management-ui-mt 依赖vitest.config.ts 别名配置pnpm install 更新依赖[ ] 任务5: 更新统一广告管理UI组件 (AC: 2)
UnifiedAdvertisementManagement.tsx,将 FileSelector 替换为 UnifiedFileSelector[ ] 任务6: 更新统一广告管理UI测试 (AC: 6)
@d8d/file-management-ui-mt → @d8d/unified-file-management-ui[ ] 任务7: Server包集成统一文件模块 (AC: 3)
packages/server/src/index.ts 中导入统一文件模块UnifiedFile 实体UnifiedFile 实体到数据源app.route('/api/v1/admin/unified-files', unifiedFileAdminRoutes)[ ] 任务8: 租户后台集成统一文件管理 (AC: 4)
web/src/client/tenant/ 添加文件管理路由web/src/client/tenant/ 添加文件管理页面组件[ ] 任务9: 编写E2E测试 (AC: 7)
web/tests/e2e/tenant-file-management.spec.ts[ ] 任务10: 代码质量检查
pnpm typecheck 确保无TypeScript错误pnpm lint 确保代码符合规范统一广告模块 (packages/unified-advertisements-module/):
src/entities/unified-advertisement.entity.ts - 更新Entity关联src/entities/index.ts - 更新导入package.json - 添加依赖tests/**/*.test.ts - 更新测试统一广告管理UI (packages/unified-advertisement-management-ui/):
src/components/UnifiedAdvertisementManagement.tsx - 更新组件package.json - 更新依赖vitest.config.ts - 更新别名配置tests/**/*.test.tsx - 更新mockServer包 (packages/server/):
src/index.ts - 注册路由和实体package.json - 添加依赖租户后台 (web/src/client/tenant/):
更新前:
import { FileMt } from '@d8d/core-module-mt/file-module-mt';
@Entity('unified_advertisement')
export class UnifiedAdvertisement {
// ...
@ManyToOne(() => FileMt, { nullable: true })
@JoinColumn({ name: 'image_file_id' })
imageFile!: FileMt | null;
}
更新后:
import { UnifiedFile } from '@d8d/unified-file-module';
@Entity('unified_advertisement')
export class UnifiedAdvertisement {
// ...
@ManyToOne(() => UnifiedFile, { nullable: true })
@JoinColumn({ name: 'image_file_id' })
imageFile!: UnifiedFile | null;
}
| 测试类型 | 要求 |
|---|---|
| 统一广告模块测试 | 全部通过 |
| 统一广告管理UI测试 | 全部通过 |
| Server包集成测试 | 全部通过 |
| E2E测试 | 全部通过 |
UnifiedFile 关联正确web/tests/e2e/# 统一广告模块测试
cd packages/unified-advertisements-module
pnpm test
# 统一广告管理UI测试
cd packages/unified-advertisement-management-ui
pnpm test
# E2E测试
cd web
pnpm test:e2e:chromium
| Date | Version | Description | Author |
|---|---|---|---|
| 2026-01-03 | 1.0 | 初始故事创建 | James (Claude Code) |
待开发时填写
待开发时填写
待开发时填写
待开发时填写
待QA代理填写