Completed - 测试全部通过
作为 系统管理员, 我想要 有一个独立的单租户认证管理界面包, 以便 可以在单租户系统中独立管理用户认证和登录功能,而不影响现有的多租户系统。
@d8d/auth-management-ui,包含正确的包配置和依赖管理web/src/client/admin/pages/Login.tsx 为单租户认证管理界面包web/src/client/admin/hooks/AuthProvider.tsx 为单租户认证包@d8d/shared-ui-components 中的基础组件@d8d/auth-module 提供API客户端和类型定义AuthProvider、useAuth 和 AuthContextType[x] 任务 1 (AC: 1, 8): 创建单租户认证管理界面包基础结构
packages/auth-management-ui/package.json 包配置@d8d/shared-ui-components 和 @d8d/auth-moduletsconfig.jsonbuild.config.tsvitest.config.ts[x] 任务 2 (AC: 2, 4, 5): 复制并修改登录界面组件
web/src/client/admin/pages/Login.tsx 到 packages/auth-management-ui/src/components/LoginPage.tsx[x] 任务 3 (AC: 3, 4, 5): 复制并修改认证提供器
web/src/client/admin/hooks/AuthProvider.tsx 到 packages/auth-management-ui/src/hooks/AuthProvider.tsx[x] 任务 4 (AC: 4, 5, 6): 创建认证管理界面主组件
packages/auth-management-ui/src/components/AuthManagement.tsx 主组件[x] 任务 5 (AC: 6, 7): 配置API客户端和类型定义
packages/auth-management-ui/src/api/authClient.ts API客户端[x] 任务 6 (AC: 9): 创建完整的测试套件
packages/auth-management-ui/tests/unit/LoginPage.test.tsxpackages/auth-management-ui/tests/unit/AuthProvider.test.tsxpackages/auth-management-ui/tests/integration/auth-management.integration.test.ts[x] 任务 7 (AC: 1, 8, 11, 12): 配置包导出接口
packages/auth-management-ui/src/index.ts 统一导出文件AuthProvider 组件供其他包使用useAuth hook供其他包使用AuthContextType 类型定义LoginPage 和 AuthManagement 组件[x] 任务 8 (AC: 10, 12): 验证功能无回归
[x] 任务 9 (新增任务): 实现RPC客户端架构和最佳实践
吸取故事007.014的经验教训:
用户认证数据模型 [Source: packages/auth-module/src/schemas/auth.schema.ts]
username (字符串,必填), password (字符串,必填)token (JWT令牌), user (用户信息对象)id (数字), username (字符串), email (字符串), role (角色信息)认证API端点 [Source: packages/auth-module/src/routes/]
POST /auth/login - 用户登录POST /auth/logout - 用户登出GET /auth/me - 获取当前用户信息认证管理界面组件 [Source: docs/architecture/component-architecture.md#前端组件架构]
LoginPage: 登录表单组件AuthProvider: 认证状态管理组件AuthManagement: 主认证管理组件基础UI组件依赖 [Source: packages/shared-ui-components/src/components/ui/]
认证包必须导出的接口 [Source: web/src/client/admin/hooks/AuthProvider.tsx]
AuthProvider 组件:React Context Provider,提供认证状态管理useAuth hook:用于在组件中访问认证状态和操作AuthContextType 类型:认证上下文类型定义导出配置 [Source: packages/tenant-management-ui/src/index.ts]
src/index.ts 统一导出所有公共接口导出模式:
export { AuthProvider } from './hooks/AuthProvider';
export { useAuth } from './hooks/AuthProvider';
export type { AuthContextType } from './types/auth';
export { LoginPage } from './components/LoginPage';
export { AuthManagement } from './components/AuthManagement';
其他包使用示例
// 在其他管理界面包中使用认证包
import { AuthProvider, useAuth } from '@d8d/auth-management-ui';
// 在应用根组件中包裹AuthProvider
<AuthProvider>
<YourApp />
</AuthProvider>
// 在组件中使用认证状态
const { user, isAuthenticated, login, logout } = useAuth();
新文件位置 [Source: docs/architecture/source-tree.md#包架构层次]
packages/auth-management-ui/package.json - 包配置packages/auth-management-ui/src/index.ts - 包导出主入口packages/auth-management-ui/src/components/LoginPage.tsx - 登录页面组件packages/auth-management-ui/src/components/AuthManagement.tsx - 主认证管理组件packages/auth-management-ui/src/hooks/AuthProvider.tsx - 认证提供器packages/auth-management-ui/src/api/authClient.ts - 认证API客户端packages/auth-management-ui/src/types/auth.ts - 认证类型定义packages/auth-management-ui/tests/ - 完整的测试套件packages/auth-management-ui/tsconfig.json - TypeScript配置packages/auth-management-ui/vitest.config.ts - 测试配置packages/auth-management-ui/build.config.ts - 构建配置前端技术栈 [Source: docs/architecture/tech-stack.md#现有技术栈维护]
包架构 [Source: docs/architecture/source-tree.md#包架构层次]
@d8d/auth-module 提供API客户端和类型定义性能要求 [Source: docs/prd/epic-007-multi-tenant-package-replication.md#成功标准]
测试标准 [Source: docs/architecture/testing-strategy.md#包测试架构]
packages/auth-management-ui/tests/unit/ 和 packages/auth-management-ui/tests/integration/具体测试要求
测试策略关键发现
测试架构改进
| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2025-11-15 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
| 2025-11-15 | 1.1 | 修复测试架构和共享组件构建错误 | James (Developer) |
| 2025-11-15 | 1.2 | 基于web项目模式改进测试策略 | James (Developer) |
| 2025-11-15 | 1.3 | 修复useQuery测试策略,使用真实QueryClient而不是mock | James (Developer) |
| 2025-11-15 | 1.4 | 修复所有测试失败,11个测试全部通过 | James (Developer) |
| 2025-11-16 | 1.5 | 实现RPC客户端架构,提供单例模式、延迟初始化和类型安全 | James (Developer) |
.ts改为.tsx扩展名packages/auth-management-ui/package.json - 包配置文件packages/auth-management-ui/src/index.ts - 包导出主入口packages/auth-management-ui/src/components/LoginPage.tsx - 登录页面组件packages/auth-management-ui/src/components/AuthManagement.tsx - 主认证管理组件packages/auth-management-ui/src/hooks/AuthProvider.tsx - 认证提供器packages/auth-management-ui/src/api/authClient.ts - 认证API客户端packages/auth-management-ui/src/types/auth.ts - 认证类型定义packages/auth-management-ui/tests/unit/LoginPage.test.tsx - 登录页面单元测试packages/auth-management-ui/tests/unit/AuthProvider.test.tsx - 认证提供器单元测试packages/auth-management-ui/tests/integration/auth-management.integration.test.tsx - 集成测试packages/auth-management-ui/tests/test-utils.tsx - 测试工具packages/auth-management-ui/tsconfig.json - TypeScript配置packages/auth-management-ui/vitest.config.ts - 测试配置packages/auth-management-ui/build.config.ts - 构建配置packages/auth-management-ui/verify-exports.mjs - 导出验证脚本packages/auth-management-ui/verify-exports-simple.mjs - 简化验证脚本packages/auth-management-ui/test-summary.md - 测试总结此部分将在质量保证审查过程中由QA代理填充