Approved
As a 超级管理员, I want 一个统一的文件管理UI包, so that 可以在租户管理后台统一管理所有文件,统一广告管理UI使用统一的文件选择器组件。
当前问题:
unified-advertisement-management-ui) 使用 @d8d/file-management-ui-mt 的 FileSelector 组件(多租户)解决方案:
file-management-ui 复制创建统一版本unified-file-management-ui(API指向统一文件模块)packages/unified-file-management-ui 包,从 file-management-ui 复制并改造为指向统一文件模块/api/v1/admin/unified-files)[ ] 任务1: 创建UI包结构和配置文件 (AC: 1)
packages/unified-file-management-ui 目录package.json,配置包名为 @d8d/unified-file-management-uitsconfig.jsonvitest.config.ts(设置 fileParallelism: false,配置别名)src/ 子目录:components/, api/, hooks/, types/, utils/tests/ 子目录:integration/, unit/[ ] 任务2: 创建API客户端 (AC: 4)
src/api/client.ts,使用 hc RPC客户端/api/v1/admin/unified-filesuploadFile, getFiles, getFile, deleteFile[ ] 任务3: 创建React Hooks (AC: 1)
src/hooks/useUnifiedFiles.ts(文件列表)src/hooks/useUnifiedFileUpload.ts(文件上传)src/hooks/useUnifiedFileDelete.ts(文件删除)[ ] 任务4: 实现文件管理组件 (AC: 2)
src/components/UnifiedFileList.tsx(文件列表)src/components/UnifiedFileUpload.tsx(文件上传)src/components/UnifiedFileManagement.tsx(管理页面主组件)[ ] 任务5: 实现文件选择器组件 (AC: 3)
src/components/UnifiedFileSelector.tsx(文件选择器)data-testid 属性用于测试[ ] 任务6: 创建包导出入口 (AC: 1)
src/index.ts,导出组件、Hooks、API客户端package.json 的 exports 字段[ ] 任务7: 编写组件测试 (AC: 5)
tests/unit/UnifiedFileSelector.test.tsxtests/unit/UnifiedFileList.test.tsxtests/unit/UnifiedFileUpload.test.tsx[ ] 任务8: 编写集成测试 (AC: 5)
tests/integration/file-selector.integration.test.tsxtests/integration/file-upload.integration.test.tsxtests/integration/file-management.integration.test.tsx[ ] 任务9: 代码质量检查
pnpm typecheck 确保无TypeScript错误pnpm lint 确保代码符合规范pnpm test 确保所有测试通过pnpm test:coverage 确保覆盖率达标新包位置:
packages/unified-file-management-ui/
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── src/
│ ├── components/
│ │ ├── UnifiedFileList.tsx
│ │ ├── UnifiedFileUpload.tsx
│ │ ├── UnifiedFileSelector.tsx
│ │ └── UnifiedFileManagement.tsx
│ ├── api/
│ │ └── client.ts
│ ├── hooks/
│ │ ├── useUnifiedFiles.ts
│ │ ├── useUnifiedFileUpload.ts
│ │ └── useUnifiedFileDelete.ts
│ ├── types/
│ │ └── index.ts
│ ├── utils/
│ │ └── file-utils.ts
│ └── index.ts
└── tests/
├── integration/
│ ├── file-selector.integration.test.tsx
│ ├── file-upload.integration.test.tsx
│ └── file-management.integration.test.tsx
└── unit/
├── UnifiedFileSelector.test.tsx
├── UnifiedFileList.test.tsx
└── UnifiedFileUpload.test.tsx
参考模块:
packages/file-management-uipackages/unified-advertisement-management-uiRPC客户端使用:
import { hc } from '@d8d/shared-ui-components/utils/hc';
import type { UnifiedFileRoutes } from '@d8d/unified-file-module';
export const unifiedFileClient = hc<UnifiedFileRoutes>('/api/v1/admin/unified-files');
文件选择器 (UnifiedFileSelector.tsx):
data-testid 属性用于测试| 测试类型 | 最低要求 | 目标要求 |
|---|---|---|
| 单元测试 | 70% | 80% |
| 集成测试 | 50% | 60% |
tests/unit/tests/integration/# 进入UI包目录
cd packages/unified-file-management-ui
# 运行所有测试
pnpm test
# 运行集成测试
pnpm test:integration
# 生成覆盖率报告
pnpm test:coverage
# 类型检查
pnpm typecheck
| Date | Version | Description | Author |
|---|---|---|---|
| 2026-01-03 | 1.0 | 初始故事创建 | James (Claude Code) |
待开发时填写
待开发时填写
待开发时填写
待开发时填写
待QA代理填写