Draft
As a 系统管理员, I want 将史诗008中创建的7个Allin系统UI包集成到Web client admin中, so that 管理员可以通过Web界面管理Allin系统的所有功能,包括渠道、公司、残疾人、订单、平台、薪资等模块,实现前后端完整集成。
依赖配置:在web/package.json中添加所有7个Allin系统UI包的workspace依赖
@d8d/allin-channel-management-ui@d8d/allin-company-management-ui@d8d/allin-disability-management-ui@d8d/allin-disability-person-management-ui@d8d/allin-order-management-ui@d8d/allin-platform-management-ui@d8d/allin-salary-management-uiAPI客户端初始化:在web/src/client/admin/api_init.ts中添加所有7个Allin系统UI包的API客户端初始化,路径必须与server包中的路由配置完全一致(参考packages/server/src/index.ts:139-144)
channelClientManager.init('/api/v1/channel') - 对应server中的/api/v1/channelcompanyClientManager.init('/api/v1/company') - 对应server中的/api/v1/companydisabilityClientManager.init('/api/v1/disability') - 对应server中的/api/v1/disability(注意:disability_person模块在server中注册为/api/v1/disability)orderClientManager.init('/api/v1/order') - 对应server中的/api/v1/orderplatformClientManager.init('/api/v1/platform') - 对应server中的/api/v1/platformsalaryClientManager.init('/api/v1/salary') - 对应server中的/api/v1/salarys后缀,与server包配置保持一致路由集成:在web/src/client/admin/routes.tsx中添加所有7个UI包的路由配置
/admin/channels → @d8d/allin-channel-management-ui/admin/companies → @d8d/allin-company-management-ui/admin/disabilities → @d8d/allin-disability-management-ui/admin/disability-persons → @d8d/allin-disability-person-management-ui/admin/orders → @d8d/allin-order-management-ui/admin/platforms → @d8d/allin-platform-management-ui/admin/salaries → @d8d/allin-salary-management-ui菜单集成:在web/src/client/admin/menu.tsx中添加对应的菜单项
权限配置:为每个菜单项配置相应的权限(参考现有权限模式)
图标配置:为每个菜单项配置合适的图标(使用lucide-react图标库)
API路径配置:确保API路径与后端路由对应(参考史诗007的server集成)
集成验证:验证所有路由正常工作,UI包正确加载,API客户端初始化成功
测试验证:通过E2E测试验证集成功能
[ ] 任务1:添加依赖配置 (AC: 1)
web/package.json的dependencies中添加7个Allin UI包的workspace依赖pnpm install确保依赖正确安装[ ] 任务2:API客户端初始化 (AC: 2, 7)
web/src/client/admin/api_init.ts中添加7个Allin UI包的导入语句disability_person模块使用/api/v1/disability路径(与server配置一致)[ ] 任务3:路由配置集成 (AC: 3)
web/src/client/admin/routes.tsx中导入7个Allin UI包的主要组件[ ] 任务4:菜单配置集成 (AC: 4, 5, 6)
web/src/client/admin/menu.tsx的menuItems数组中添加7个菜单项'user:manage')[ ] 任务5:集成验证 (AC: 8)
[ ] 任务6:E2E测试验证 (AC: 9)
pnpm test:e2e:chromium确保测试通过[ ] 任务7:类型检查和构建验证
pnpm typecheck确保无类型错误pnpm build确保构建成功web/目录web/src/client/admin/api_init.ts [Source: architecture/source-tree.md#实际项目结构]web/src/client/admin/routes.tsx [Source: architecture/source-tree.md#实际项目结构]web/src/client/admin/menu.tsx [Source: architecture/source-tree.md#实际项目结构]@d8d/user-management-ui、@d8d/auth-management-ui等现有集成 [Source: architecture/source-tree.md#实际项目结构]Server包路由配置 (packages/server/src/index.ts:139-144):
export const channelApiRoutes = api.route('/api/v1/channel', channelRoutes)
export const companyApiRoutes = api.route('/api/v1/company', companyRoutes)
export const disabilityApiRoutes = api.route('/api/v1/disability', disabledPersonRoutes)
export const orderApiRoutes = api.route('/api/v1/order', orderRoutes)
export const platformApiRoutes = api.route('/api/v1/platform', platformRoutes)
export const salaryApiRoutes = api.route('/api/v1/salary', salaryRoutes)
重要: 所有路径使用单数形式,没有s后缀。disability_person模块在server中注册为/api/v1/disability路径。
所有7个UI包已创建在allin-packages/目录下,包名如下:
@d8d/allin-channel-management-ui - 渠道管理UI@d8d/allin-company-management-ui - 公司管理UI@d8d/allin-disability-management-ui - 残疾人管理UI@d8d/allin-disability-person-management-ui - 残疾人个人管理UI@d8d/allin-order-management-ui - 订单管理UI@d8d/allin-platform-management-ui - 平台管理UI@d8d/allin-salary-management-ui - 薪资管理UIAPI客户端初始化模式 (web/src/client/admin/api_init.ts):
import { userClientManager } from '@d8d/user-management-ui/api';
userClientManager.init('/api/v1/users');
路由集成模式 (web/src/client/admin/routes.tsx):
import { UserManagement } from '@d8d/user-management-ui';
{
path: 'users',
element: <UserManagement />,
errorElement: <ErrorPage />
}
菜单集成模式 (web/src/client/admin/menu.tsx):
{
key: 'users',
label: '用户管理',
icon: <Users className="h-4 w-4" />,
path: '/admin/users',
permission: 'user:manage'
}
现有权限模式使用{resource}:{action}格式,例如:
'user:manage' - 用户管理权限'file:manage' - 文件管理权限'area:manage' - 区域管理权限建议为Allin系统模块配置相应的权限,如:
'channel:manage' - 渠道管理权限'company:manage' - 公司管理权限'disability:manage' - 残疾人管理权限'order:manage' - 订单管理权限'platform:manage' - 平台管理权限'salary:manage' - 薪资管理权限使用lucide-react图标库,现有图标示例:
<Users className="h-4 w-4" /> - 用户管理<File className="h-4 w-4" /> - 文件管理<MapPin className="h-4 w-4" /> - 区域管理建议图标:
<MessageSquare className="h-4 w-4" /> 或 <Share2 className="h-4 w-4" /><Building className="h-4 w-4" /> 或 <Briefcase className="h-4 w-4" /><User className="h-4 w-4" /> 或 <Users className="h-4 w-4" /><ClipboardList className="h-4 w-4" /> 或 <FileText className="h-4 w-4" /><Monitor className="h-4 w-4" /> 或 <Globe className="h-4 w-4" /><DollarSign className="h-4 w-4" /> 或 <CreditCard className="h-4 w-4" />allin-packages/目录下"workspace:*"http://localhost:8080 访问Web界面web/tests/e2e/ [Source: architecture/testing-strategy.md#e2e测试-end-to-end-tests]pnpm test:e2e:chromium [Source: CLAUDE.md#测试调试]cd web && pnpm test:e2e:chromiumtest-results/**/error-context.md分析问题 [Source: CLAUDE.md#测试调试]| Date | Version | Description | Author |
|---|---|---|---|
| 2025-12-06 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
此部分由开发代理在实施期间填写
来自QA代理对已完成故事实施的QA审查结果