Done
作为 系统管理员, 我想要 有一个独立的单租户商户管理界面包, 以便 可以在单租户系统中独立管理商户账户和状态,而不影响现有的多租户系统。
@d8d/merchant-management-ui,包含正确的包配置和依赖管理web/src/client/admin/pages/Merchants.tsx 为单租户商户管理界面包@d8d/shared-ui-components 中的基础组件@d8d/merchant-module 提供API客户端和类型定义[x] 任务 1 (AC: 1, 7): 创建单租户商户管理界面包结构
packages/merchant-management-ui/src/、tests/、package.json[x] 任务 2 (AC: 1): 配置包依赖和构建
packages/merchant-management-ui/package.json 包配置 [参考: packages/user-management-ui/package.json]@d8d/shared-ui-components、@d8d/merchant-modulepackages/merchant-management-ui/tsconfig.json TypeScript配置 [参考: packages/user-management-ui/tsconfig.json]packages/merchant-management-ui/vitest.config.ts 测试配置 [参考: packages/user-management-ui/vitest.config.ts]packages/merchant-management-ui/tests/setup.ts 测试设置文件 [参考: packages/user-management-ui/tests/setup.ts]packages/merchant-management-ui/build.config.ts 构建配置文件cd packages/merchant-management-ui && pnpm install[x] 任务 3 (AC: 3, 6): 创建RPC客户端架构和类型定义
[x] 任务 4 (AC: 2, 3): 复制并调整商户管理界面组件
web/src/client/admin/pages/Merchants.tsx 为 packages/merchant-management-ui/src/components/MerchantManagement.tsxweb/src/client/admin/components/MerchantSelector.tsx 为 packages/merchant-management-ui/src/components/MerchantSelector.tsx@d8d/shared-ui-components/components/ui/button,避免从根导入packages/user-management-ui/src/components/UserSelector.tsx 的实现模式,包括API调用、test ID属性、类型定义等[x] 任务 5 (AC: 3, 4): 实现完整的商户管理功能
[x] 任务 6 (AC: 8): 创建测试套件
packages/merchant-management-ui/tests/integration/merchant-management.integration.test.tsxpackages/merchant-management-ui/tests/setup.ts [参考: packages/user-management-ui/tests/setup.ts]packages/merchant-management-ui/tests/basic.test.tsx[x] 任务 7 (AC: 1, 7): 配置包导出接口
packages/merchant-management-ui/src/index.ts 包导出主入口[x] 任务 8 (AC: 9): 验证功能无回归
cd packages/merchant-management-ui && pnpm buildcd packages/merchant-management-ui && pnpm testcd packages/merchant-management-ui && pnpm typecheckcd packages/merchant-management-ui && pnpm lintpackages/merchant-management-ui/ [Source: architecture/source-tree.md#实际项目结构]src/components/ - React组件src/hooks/ - 自定义React hookssrc/api/ - API客户端src/types/ - TypeScript类型定义tests/unit/ - 单元测试tests/integration/ - 集成测试@d8d/shared-ui-components - 提供基础UI组件 [Source: architecture/source-tree.md#实际项目结构]@d8d/merchant-module - 提供商户管理API [Source: docs/prd/epic-007-multi-tenant-package-replication.md#商户管理界面包]packages/merchant-management-ui/tests/unit/ 和 packages/merchant-management-ui/tests/integration/ [Source: architecture/testing-strategy.md#单元测试]pnpm test 运行所有测试 [Source: architecture/testing-strategy.md#本地开发测试]packages/merchant-management-ui/tests/integration/**/*.test.tsx
[Source: architecture/testing-strategy.md#单元测试]cd packages/merchant-management-ui && pnpm testcd packages/merchant-management-ui && pnpm test:unitcd packages/merchant-management-ui && pnpm test:integrationcd packages/merchant-management-ui && pnpm test:coverage| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2025-11-16 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
实施时间: 2025-11-17 开发代理: Claude Code
包结构创建: 成功创建完整的商户管理UI包结构,包括src、tests目录和所有必要的配置文件
API客户端架构: 实现单例模式的商户客户端管理器,支持延迟初始化和类型安全的API调用
merchantClientManager.get() 获取客户端实例merchantClient,API调用时使用 merchantClientManager.get()组件实现: 复制并调整了商户管理界面组件,提供完整的商户CRUD功能
构建和测试配置: 配置了完整的构建和测试环境
API客户端使用模式: 发现类型定义和实际API调用的分离模式
merchantClient 实例merchantClientManager.get() 获取实例构建配置优化: 移除了路径别名配置,依赖TypeScript的路径映射,避免构建时的路径解析问题
类型定义策略: 遵循用户管理UI包模式,将类型定义直接放在组件文件中,而不是独立的类型文件
测试策略: 创建了基础测试验证组件渲染,修复了集成测试中的mock配置问题
创建的包文件:
packages/merchant-management-ui/package.jsonpackages/merchant-management-ui/tsconfig.jsonpackages/merchant-management-ui/vitest.config.tspackages/merchant-management-ui/build.config.tspackages/merchant-management-ui/src/index.tspackages/merchant-management-ui/src/api/merchantClient.tspackages/merchant-management-ui/src/components/MerchantManagement.tsxpackages/merchant-management-ui/tests/setup.tspackages/merchant-management-ui/tests/integration/merchant-management.integration.test.tsxpackages/merchant-management-ui/tests/basic.test.tsx此部分将在质量保证审查过程中由QA代理填充