已完成
作为系统开发人员, 我希望建立用人方小程序的基础技术框架, 以便后续页面开发有统一的API客户端、路由和布局基础。
mini/src/api.tsmini/src/api.ts RPC客户端(AC:1)
mini/src/api.ts结构,了解RPC客户端模式api/v1/yongren路径前缀docs/小程序原型/yongren.html设计史诗011中无先前故事(这是第一个故事)。依赖史诗012的完成状态:
RPC客户端模式:
mini/src/api.ts,使用Hono RPC客户端模式 [来源:mini/src/api.ts]api/v1/yongren [来源:docs/prd/epic-011-employer-mini-program-implementation.md#集成方式]技术栈:
基础布局组件要求:
必须严格对照原型文件 docs/小程序原型/yongren.html 中的样式定义实现:
容器与框架:
.mobile-frame:宽度375px,高度667px,圆角40px,阴影 box-shadow: 0 10px 30px rgba(100, 100, 100, 0.2),背景白色calc(100% - 60px)(仅减去底部导航60px)页面导航栏(Navbar)样式:
flex justify-between items-center mb-4<h3 class="font-semibold text-gray-700">页面标题</h3>底部导航样式:
.tab-bar:高度60px,背景白色,顶部边框 1px solid #f0f0f0.tab-item:flex列布局,字体大小12px,默认颜色 #999.tab-item.active:激活状态颜色 #3b82f6颜色系统:
#3b82f6(蓝色),渐变背景 linear-gradient(135deg, #3b82f6 0%, #1e40af 100%)#10b981(绿色),警告色 #f59e0b(橙色),强调色 #8b5cf6(紫色)#1f2937,正文 #6b7280,辅助文字 #9ca3af卡片与阴影:
.card:圆角12px,阴影 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05)box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05),padding 16pxUI组件开发:
docs/小程序原型/yongren.html独立设计开发小程序UI组件@d8d/allin-*系列UI包mini项目结构:
mini/src/api.ts - API客户端主文件,需要扩展mini/src/pages/ - 页面组件目录,需要新增用人方小程序页面mini/src/layouts/ - 布局组件目录,可添加标签栏布局mini/src/components/ - 公共组件目录,可添加基础布局组件设计原型位置:
docs/小程序原型/yongren.html - 用人方小程序完整原型设计 [来源:docs/prd/epic-011-employer-mini-program-implementation.md#页面功能基于]api.ts RPC客户端模式,新增客户端与原有客户端兼容| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2025-12-17 | 1.0 | 初始创建(拆分后的基础框架故事) | Bob(Scrum Master) |
| 2025-12-17 | 1.1 | 基础框架实施完成 | James |
| 2025-12-18 | 1.2 | 修复测试问题,完成路由配置测试 | James |
| 2025-12-18 | 1.3 | 优化页面结构:删除重复yongren登录页,改造原有登录页为企业用户登录,统一认证系统,清理注册页面,更新测试 | Claude Code |
| 2025-12-18 | 1.4 | 修复tabbar使用问题:更新7个企业页面使用YongrenTabBarLayout,改造profile页面为企业账户页;清理无用页面:删除pages/index/和pages/explore/目录,优化路由配置;修复导入导出问题:统一YongrenTabBarLayout导出方式,更新所有页面导入 | Claude Code |
识别的allin系统移植模块(史诗7,8,9,10):
@d8d/allin-channel-module)@d8d/allin-company-module)@d8d/allin-disability-module)@d8d/allin-order-module)@d8d/allin-platform-module)@d8d/allin-salary-module)@d8d/allin-enums)@d8d/allin-statistics-module)识别的史诗012补充API接口:
enterpriseAuthApiRoutes) - 路径前缀:/api/v1/yongren/authenterpriseCompanyApiRoutes) - 路径前缀:/api/v1/yongren/companyenterpriseDisabilityApiRoutes) - 路径前缀:/api/v1/yongren/disability-personRPC客户端接口定义和类型分析:
mini/src/api.ts导入:AuthRoutes, UserRoutes, RoleRoutes, FileRoutesChannelRoutes, CompanyRoutes, DisabilityRoutes, OrderRoutes, PlatformRoutes, SalaryRoutes, EnterpriseAuthRoutes, EnterpriseCompanyRoutes, EnterpriseDisabilityRoutes/api/v1/yongren路径前缀@d8d/server包导出所有必需的路由类型RPC客户端类型验证结果:
packages/server/src/index.ts导出的路由类型包括:
ChannelRoutes, CompanyRoutes, DisabilityRoutes, OrderRoutes, PlatformRoutes, SalaryRoutesEnterpriseAuthRoutes, EnterpriseCompanyRoutes, EnterpriseDisabilityRoutesmini/src/api.ts模式:rpcClient<RouteType>().api.v1.modulechannelClient = rpcClient<ChannelRoutes>().api.v1.channelcompanyClient = rpcClient<CompanyRoutes>().api.v1.companydisabilityClient = rpcClient<DisabilityRoutes>().api.v1.disabilityorderClient = rpcClient<OrderRoutes>().api.v1.orderplatformClient = rpcClient<PlatformRoutes>().api.v1.platformsalaryClient = rpcClient<SalaryRoutes>().api.v1.salaryenterpriseAuthClient = rpcClient<EnterpriseAuthRoutes>().api.v1.yongren.authenterpriseCompanyClient = rpcClient<EnterpriseCompanyRoutes>().api.v1.yongren.companyenterpriseDisabilityClient = rpcClient<EnterpriseDisabilityRoutes>().api.v1.yongren.disability-personstatisticsRoutes和bankNameRoutes是否必要(待定)检查结果:
channelClient, companyClient, disabilityClient, orderClient, platformClient, salaryClient@d8d/server包已正确导出企业路由类型:EnterpriseAuthRoutes, EnterpriseCompanyRoutes, EnterpriseDisabilityRoutesmini/src/api.ts中的类型导入和路径访问问题修复措施:
更新mini/src/api.ts导入语句,添加企业路由类型:
import type {
...,
EnterpriseAuthRoutes,
EnterpriseCompanyRoutes,
EnterpriseDisabilityRoutes
} from '@d8d/server'
解除企业客户端注释并修复路径访问:
export const enterpriseAuthClient = rpcClient<EnterpriseAuthRoutes>().api.v1.yongren.auth
export const enterpriseCompanyClient = rpcClient<EnterpriseCompanyRoutes>().api.v1.yongren.company
export const enterpriseDisabilityClient = rpcClient<EnterpriseDisabilityRoutes>().api.v1.yongren['disability-person']
验证类型检查通过,企业客户端可正常使用
当前故事进度:
实施总结:
mini/src/api.ts 已扩展包含9个新客户端。mini/src/app.config.ts 中添加了8个用人方小程序页面路由,创建了对应的页面组件文件。YongrenTabBarLayout:用人方小程序底部导航布局组件UserStatusBar:用户状态栏组件(显示用户信息和通知)PageContainer:页面容器组件(统一布局和样式)EnterpriseAuthProvider 和 useEnterpriseAuth 钩子,提供了企业用户登录、登出、状态管理功能,并创建了权限检查框架。验收标准完成情况:
mini/src/api.ts文件列表更新:
mini/src/pages/yongren/ 目录及8个页面组件mini/src/layouts/yongren-tab-bar-layout.tsxmini/src/components/ui/user-status-bar.tsxmini/src/components/ui/page-container.tsxmini/src/utils/enterprise-auth.tsxmini/src/utils/enterprise-auth-guard.tsmini/tests/yongren-api.test.tsmini/tests/yongren-routes.test.tsmini/tests/yongren-components.test.tsxmini/src/api.ts:添加新的RPC客户端mini/src/app.config.ts:添加用人方小程序页面路由docs/stories/011.001.story.md:更新任务状态和开发记录背景: 根据用户反馈"当前小程序是只给企业用户用的了",需要优化页面结构,删除重复页面,统一企业用户认证系统。
实施总结:
pages/yongren/login/index(重复的企业登录页),使用原有 pages/login/index 改造为企业用户登录页username → phone(匹配企业认证API)/^1[3-9]\d{9}$/)/pages/index/index → /pages/yongren/dashboard/indexauthClient → enterpriseAuthClientmini_token/userInfo → enterprise_token/enterpriseUserInfo/pages/index/index → /pages/yongren/dashboard/indexpages/explore/index、pages/register/indexpages/index/index、pages/profile/index、pages/login/indextests/yongren-routes.test.ts:用人方页面数量8 → 7pages/yongren/login/index 相关测试断言文件更新列表:
mini/src/pages/yongren/login/ 目录(重复登录页)mini/src/pages/register/ 目录(企业用户注册由管理员创建)mini/src/utils/enterprise-auth.tsx(合并到主auth.tsx)mini/src/utils/enterprise-auth-guard.ts(未使用)mini/src/pages/login/index.tsx:改造为企业用户登录页mini/src/pages/login/wechat-login.tsx:适配企业认证mini/src/pages/profile/index.tsx:改造为企业账户页mini/src/app.config.ts:清理路由配置mini/tests/yongren-routes.test.ts:更新测试断言mini/src/utils/auth.tsx:统一使用企业认证客户端微信小程序适配验证:
weapp(微信小程序)dist/weapp/development/ 和 dist/weapp/production/ 目录已生成后续建议:
enterpriseAuthClient['mini-login']{phone: string, password: string} 格式下一步建议:
来自QA代理对已完成故事实施的QA审查结果