作为 人才小程序开发者, 我想要 搭建rencai系列mini ui包的基础框架, 以便 为人才小程序的6个核心页面提供可复用的UI组件和API客户端集成,建立完整的技术基础。
现有系统状态:
原型设计参考:
docs/小程序原型/rencai.html 提供了完整的6个页面原型设计技术集成模式:
需要创建的7个UI包:
@d8d/rencai-dashboard-ui - 首页/个人主页UI包@d8d/rencai-auth-ui - 登录认证UI包@d8d/rencai-personal-info-ui - 个人信息UI包@d8d/rencai-attendance-ui - 考勤记录UI包@d8d/rencai-employment-ui - 就业信息UI包@d8d/rencai-settings-ui - 设置页UI包@d8d/rencai-shared-ui - 共享UI组件包src/api/, src/pages/, src/components/, src/types/, src/utils/, tests/src/api/index.ts)hc客户端实现类型安全的API调用"./pages/LoginPage/LoginPage")"dev": "tsc --watch" 用于TypeScript编译监视import LoginPage from '@d8d/rencai-auth-ui/pages/LoginPage/LoginPage'dev:mini-ui-packages脚本包含所有rencai UI包的并行编译监视pnpm run dev命令能够正常启动所有服务,包括rencai UI包的编译监视pnpm typecheck)api/v1/rencai 前缀)mini-ui-packages下创建7个UI包目录:
rencai-dashboard-ui/rencai-auth-ui/rencai-personal-info-ui/rencai-attendance-ui/rencai-employment-ui/rencai-settings-ui/rencai-shared-ui/src/api/ - API客户端src/pages/ - 页面组件src/components/ - UI组件src/types/ - TypeScript类型定义src/utils/ - 工具函数src/index.ts - 包主入口 (保持为空,仅包含注释)tests/ - 测试文件[ ] 2.3 创建src/index.ts文件,内容为:
// 采用细粒度路径导出方式
// 不再导出任何内容,所有工具和组件通过具体路径导入
yongren-dashboard-ui/package.json创建每个UI包的package.json@d8d/rencai-<name>-ui"." - 主入口"./api" - API客户端"./pages/<PageName>/<PageName>" - 页面组件导出路径@d8d/mini-shared-ui-components@d8d/rencai-shared-ui (共享UI组件)@d8d/allin-company-module)@tarojs/components: "4.1.4"@tarojs/plugin-platform-weapp: "4.1.4"@tarojs/react: "4.1.4"@tarojs/taro: "4.1.4"[ ] 3.6 配置scripts脚本 (必须包含以下脚本):
"scripts": {
"build": "tsc",
"dev": "tsc --watch",
"typecheck": "tsc --noEmit",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
}
重要: dev脚本使用tsc --watch,用于开发时监视TypeScript文件变化并自动编译
[ ] 3.7 配置测试相关依赖:
"@d8d/mini-testing-utils": "workspace:*"jest, ts-jest, @testing-library/react, 等[ ] 3.8 创建jest.config.cjs配置文件,参照yongren-dashboard-ui/jest.config.cjs:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['@d8d/mini-testing-utils/setup'],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^~/(.*)$': '<rootDir>/tests/$1',
'^@tarojs/taro$': '@d8d/mini-testing-utils/testing/taro-api-mock.ts',
'\\.(css|less|scss|sass)$': '@d8d/mini-testing-utils/testing/style-mock.js',
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
'@d8d/mini-testing-utils/testing/file-mock.js'
},
testMatch: [
'<rootDir>/tests/**/*.spec.{ts,tsx}',
'<rootDir>/tests/**/*.test.{ts,tsx}'
],
// ... 其他配置
}
src/api/<rencai>Client.ts[ ] 4.2 使用简单的RPC客户端导出模式,参照yongren-statistics-ui/src/api/enterpriseStatisticsClient.ts:
// src/api/<rencai>Client.ts
import type { <rencaiRoutes> } from '@d8d/<rencai>-module'
import { rpcClient } from '@d8d/mini-shared-ui-components/utils/rpc/rpc-client'
// 人才小程序API路径前缀: /api/v1/rencai
export const <rencai>Client = rpcClient<typeof <rencaiRoutes>>('/api/v1/rencai')
[ ] 4.3 创建src/api/index.ts导出API客户端
[ ] 4.4 集成史诗015提供的RPC路由定义
[ ] 4.5 确保API路径使用/api/v1/rencai前缀
@d8d/rencai-shared-ui中创建基础布局组件:
StatusBar - 状态栏组件TabBarLayout - 底部导航布局组件 (参照yongren-shared-ui/src/components/YongrenTabBarLayout.tsx)PageContainer - 页面容器组件Navbar - 导航栏组件 (支持带/不带返回按钮)@d8d/mini-shared-ui-components/components/tab-bar作为基础docs/小程序原型/rencai.html的UI样式@d8d/rencai-auth-ui中创建认证基础框架[ ] 7.1 删除旧的yongren页面: 删除mini-talent/src/pages/yongren/目录及其所有子目录
rm -rf mini-talent/src/pages/yongren
[ ] 7.2 更新app.config.ts配置:
[ ] 7.3 创建rencai系列页面目录结构:
mkdir -p mini-talent/src/pages/login
mkdir -p mini-talent/src/pages/index
mkdir -p mini-talent/src/pages/attendance
mkdir -p mini-talent/src/pages/personal-info
mkdir -p mini-talent/src/pages/employment
mkdir -p mini-talent/src/pages/settings
[ ] 7.4 配置底部TabBar导航 (首页、考勤、我的、更多)
[ ] 7.5 使用TabBarLayout组件包装TabBar页面
[ ] 7.6 确保路由配置与原型设计一致
pnpm typecheck确保类型检查通过[ ] 9.1 在根目录package.json的scripts中添加rencai系列UI包的开发脚本:
"dev:rencai-dashboard-ui": "pnpm --filter \"@d8d/rencai-dashboard-ui\" run dev",
"dev:rencai-auth-ui": "pnpm --filter \"@d8d/rencai-auth-ui\" run dev",
"dev:rencai-personal-info-ui": "pnpm --filter \"@d8d/rencai-personal-info-ui\" run dev",
"dev:rencai-attendance-ui": "pnpm --filter \"@d8d/rencai-attendance-ui\" run dev",
"dev:rencai-employment-ui": "pnpm --filter \"@d8d/rencai-employment-ui\" run dev",
"dev:rencai-settings-ui": "pnpm --filter \"@d8d/rencai-settings-ui\" run dev",
"dev:rencai-shared-ui": "pnpm --filter \"@d8d/rencai-shared-ui\" run dev"
[ ] 9.2 更新dev:mini-ui-packages脚本,将rencai系列UI包添加到concurrently命令中:
"dev:mini-ui-packages": "concurrently \
\"pnpm run dev:dev:allin-enums\" \
\"pnpm run dev:mini-enterprise-auth-ui\" \
\"pnpm run dev:mini-shared-ui-components\" \
\"pnpm run dev:yongren-shared-ui\" \
\"pnpm run dev:yongren-dashboard-ui\" \
\"pnpm run dev:yongren-order-management-ui\" \
\"pnpm run dev:yongren-settings-ui\" \
\"pnpm run dev:yongren-statistics-ui\" \
\"pnpm run dev:yongren-talent-management-ui\" \
\"pnpm run dev:mini-charts\" \
\"pnpm run dev:rencai-shared-ui\" \
\"pnpm run dev:rencai-dashboard-ui\" \
\"pnpm run dev:rencai-auth-ui\" \
\"pnpm run dev:rencai-personal-info-ui\" \
\"pnpm run dev:rencai-attendance-ui\" \
\"pnpm run dev:rencai-employment-ui\" \
\"pnpm run dev:rencai-settings-ui\""
[ ] 9.3 验证pnpm run dev命令能够正常启动所有服务,包括rencai系列UI包的编译监视
[ ] 9.4 确认rencai系列UI包的TypeScript编译输出正确,无编译错误
史诗016完成状态:
史诗015完成状态 (2025-12-25):
来源: architecture/tech-stack.md
运行时和框架:
测试框架:
包管理:
来源: architecture/ui-package-standards.md
关键规范要求:
mini-ui-packages/<package-name>/
├── package.json # 包配置 (必须包含exports字段)
├── tsconfig.json # TypeScript配置
├── jest.config.cjs # Jest测试配置
├── src/
│ ├── index.ts # 主入口文件 (保持为空,采用细粒度导出)
│ ├── api/ # API客户端
│ │ └── index.ts # API导出
│ ├── pages/ # 页面组件
│ │ └── <PageName>/
│ │ ├── <PageName>.tsx
│ │ └── index.ts
│ ├── components/ # UI组件
│ ├── types/ # TypeScript类型定义
│ └── utils/ # 工具函数
└── tests/ # 测试文件
src/index.ts规范 (参照yongren-statistics-ui/src/index.ts):
// 采用细粒度路径导出方式
// 不再导出任何内容,所有工具和组件通过具体路径导入
重要: 主入口文件src/index.ts保持为空(仅包含注释),所有导出通过package.json的exports字段配置的具体路径进行。
重要: UI包内部导入必须使用相对路径,不要使用别名。
正确示例 (参照yongren-dashboard-ui/src/pages/Dashboard/Dashboard.tsx):
// ✅ 正确: 使用相对路径导入同一包内的模块
import { enterpriseCompanyClient } from '../../api'
import { SomeComponent } from '../components/SomeComponent'
import { utilFunction } from '../../utils/helper'
错误示例:
// ❌ 错误: 不要使用别名导入UI包内部的模块
import { enterpriseCompanyClient } from '@/api'
import { SomeComponent } from '@/pages/Dashboard/components'
说明:
@/和~/别名仅在Jest配置中用于测试路径映射,不在源代码中使用@d8d/mini-shared-ui-components){
"exports": {
".": {
"types": "./dist/src/index.d.ts",
"import": "./dist/src/index.js",
"require": "./dist/src/index.js"
},
"./api": {
"types": "./src/api/index.ts",
"import": "./src/api/index.ts",
"require": "./src/api/index.ts"
},
"./pages/<PageName>/<PageName>": {
"types": "./dist/src/pages/<PageName>/<PageName>.d.ts",
"import": "./dist/src/pages/<PageName>/<PageName>.js",
"require": "./dist/src/pages/<PageName>/<PageName>.js"
}
}
}
重要: 页面组件的导出路径必须与实际文件路径匹配,便于mini-talent导入:
// mini-talent中的导入方式
import LoginPage from '@d8d/rencai-auth-ui/pages/LoginPage/LoginPage'
每个UI包必须创建jest.config.cjs配置文件,参照yongren-dashboard-ui/jest.config.cjs:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['@d8d/mini-testing-utils/setup'],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^~/(.*)$': '<rootDir>/tests/$1',
'^@tarojs/taro$': '@d8d/mini-testing-utils/testing/taro-api-mock.ts',
'\\.(css|less|scss|sass)$': '@d8d/mini-testing-utils/testing/style-mock.js',
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
'@d8d/mini-testing-utils/testing/file-mock.js'
},
testMatch: [
'<rootDir>/tests/**/*.spec.{ts,tsx}',
'<rootDir>/tests/**/*.test.{ts,tsx}'
],
collectCoverageFrom: [
'src/**/*.{ts,tsx}',
'!src/**/*.d.ts',
'!src/**/index.{ts,tsx}',
'!src/**/*.stories.{ts,tsx}'
],
coverageDirectory: 'coverage',
coverageReporters: ['text', 'lcov', 'html'],
testPathIgnorePatterns: [
'/node_modules/',
'/dist/',
'/coverage/'
],
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
'^.+\\.(js|jsx)$': 'babel-jest'
},
transformIgnorePatterns: [
'/node_modules/(?!(swiper|@tarojs)/)'
],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json']
}
关键配置说明:
setupFilesAfterEnv: 使用@d8d/mini-testing-utils/setup进行测试环境初始化moduleNameMapper:
^@/(.*)$ 和 ^~/(.*)$: 仅用于测试文件的路径映射,不在源代码中使用^@tarojs/taro$: 映射Taro API到mock@/或~/别名,只使用相对路径testMatch: 支持.spec.{ts,tsx}和.test.{ts,tsx}两种测试文件格式每个UI包使用简单的RPC客户端导出模式 (参照yongren-statistics-ui/src/api/enterpriseStatisticsClient.ts):
// src/api/<rencai>Client.ts
import type { <rencaiRoutes> } from '@d8d/<rencai>-module'
import { rpcClient } from '@d8d/mini-shared-ui-components/utils/rpc/rpc-client'
// 人才小程序API路径前缀: /api/v1/rencai
export const <rencai>Client = rpcClient<typeof <rencaiRoutes>>('/api/v1/rencai')
src/api/index.ts导出:
export { <rencai>Client } from './<rencai>Client'
必须使用RPC推断类型,避免直接导入schema类型:
// ✅ 正确:使用RPC推断类型 + 相对路径导入
import type { InferResponseType } from 'hono'
import { <rencai>Client } from '../api/<rencai>Client'
export type <Rencai>InfoResponse = InferResponseType<typeof <rencai>Client.personal.info.$get, 200>
// ❌ 错误:直接导入schema类型 (可能导致Date/string不匹配)
import type { <Rencai> } from '@d8d/<rencai>-module/schemas'
// ❌ 错误:使用别名导入UI包内部模块
import { <rencai>Client } from '@/api/<rencai>Client'
来源: architecture/source-tree.md
mini-talent项目结构:
mini-talent/ # 人才小程序项目
├── src/
│ ├── app.tsx # 小程序入口
│ ├── app.config.ts # 小程序配置 (需替换为rencai页面路由)
│ ├── app.css # 全局样式
│ ├── index.html # HTML模板
│ └── pages/ # 页面目录
│ ├── login/ # 登录页 (从UI包导入)
│ │ └── index.tsx
│ ├── index/ # 首页/个人主页 (从UI包导入)
│ │ └── index.tsx
│ ├── attendance/ # 考勤记录 (从UI包导入)
│ │ └── index.tsx
│ ├── personal-info/ # 个人信息 (从UI包导入)
│ │ └── index.tsx
│ ├── employment/ # 就业信息 (从UI包导入)
│ │ └── index.tsx
│ └── settings/ # 设置页 (从UI包导入)
│ └── index.tsx
├── config/ # 配置文件
├── package.json
├── jest.config.js # Jest配置
└── tsconfig.json
说明:
mini-ui-packages/yongren-shared-ui/src/components/YongrenTabBarLayout.tsxmini-talent/src/app.config.ts配置 (新):
完全替换现有的yongren配置为rencai配置:
export default defineAppConfig({
pages: [
'pages/login/index', // 登录页
'pages/index/index', // 首页/个人主页
'pages/attendance/index', // 考勤记录
'pages/personal-info/index', // 个人信息
'pages/employment/index', // 就业信息
'pages/settings/index', // 设置页
],
window: {
backgroundTextStyle: 'light',
navigationBarBackgroundColor: '#3b82f6',
navigationBarTitleText: '人才小程序',
navigationBarTextStyle: 'white',
navigationStyle: 'custom'
},
tabBar: {
custom: true,
color: "#6b7280",
selectedColor: "#3b82f6",
backgroundColor: "#ffffff",
list: [
{
pagePath: 'pages/index/index',
text: '首页'
},
{
pagePath: 'pages/attendance/index',
text: '考勤'
},
{
pagePath: 'pages/personal-info/index',
text: '我的'
},
{
pagePath: 'pages/settings/index',
text: '更多'
}
]
},
usingComponents: {}
})
重要变更:
mini-ui-packages目录结构:
mini-ui-packages/
├── yongren-dashboard-ui/ # 参考实现 (用人方仪表板)
├── yongren-auth-ui/ # 参考实现 (用人方认证)
├── yongren-shared-ui/ # 参考实现 (用人方共享组件)
├── mini-shared-ui-components/ # 通用小程序UI组件
├── rencai-dashboard-ui/ # [待创建] 人才仪表板
├── rencai-auth-ui/ # [待创建] 人才认证
├── rencai-personal-info-ui/ # [待创建] 人才个人信息
├── rencai-attendance-ui/ # [待创建] 人才考勤记录
├── rencai-employment-ui/ # [待创建] 人才就业信息
├── rencai-settings-ui/ # [待创建] 人才设置
└── rencai-shared-ui/ # [待创建] 人才共享组件
根目录package.json脚本配置:
开发服务器启动使用concurrently并行运行所有服务的编译监视:
{
"scripts": {
"dev": "concurrently \
\"pnpm run dev:mini\" \
\"pnpm run dev:mini-talent\" \
\"pnpm run dev:web\" \
\"pnpm run dev:weapp\" \
\"pnpm run dev:weapp-talent\" \
\"pnpm run dev:mini-ui-packages\" ",
"dev:mini-ui-packages": "concurrently \
[... existing yongren packages ...] \
\"pnpm run dev:rencai-shared-ui\" \
\"pnpm run dev:rencai-dashboard-ui\" \
\"pnpm run dev:rencai-auth-ui\" \
\"pnpm run dev:rencai-personal-info-ui\" \
\"pnpm run dev:rencai-attendance-ui\" \
\"pnpm run dev:rencai-employment-ui\" \
\"pnpm run dev:rencai-settings-ui\"",
"dev:rencai-dashboard-ui": "pnpm --filter \"@d8d/rencai-dashboard-ui\" run dev",
"dev:rencai-auth-ui": "pnpm --filter \"@d8d/rencai-auth-ui\" run dev",
// ... 其他rencai UI包
}
}
重要: 每个UI包的dev脚本使用tsc --watch,在开发时监视TypeScript文件变化并自动编译到dist/目录。
原型包含6个完整页面:
登录页 (原型行115-158)
首页/个人主页 (原型行160-301)
考勤记录页 (原型行303-481)
个人信息页 (原型行483-628)
就业信息页 (原型行630-768)
设置页 (原型行770-906)
移动端设计规范:
来源: docs/prd/epic-015-talent-mini-program-api-support.md
API路径约定:
所有人才小程序API使用 api/v1/rencai 前缀:
POST /api/v1/rencai/auth/loginGET /api/v1/rencai/personal/infoGET /api/v1/rencai/personal/bank-cardsGET /api/v1/rencai/personal/photosGET /api/v1/rencai/attendance/records (P2延期,前端模拟)GET /api/v1/rencai/employment/infoGET /api/v1/rencai/salary/recordsGET /api/v1/rencai/employment/history已完成的API (可直接集成):
进行中的API (后续集成):
只读设计原则: 遵循与用人方小程序相同的设计原则,人才小程序API以查询功能为主。所有数据修改操作由管理员在管理后台统一处理。人才用户仅有的写入操作包括: 登录认证、通知标记已读。
来源: architecture/testing-strategy.md
测试框架选择:
pnpm test (在mini目录下运行)jest.config.js测试文件位置:
mini-ui-packages/<package-name>/
└── tests/
├── unit/ # 单元测试
│ └── *.test.tsx
└── integration/ # 集成测试
└── *.test.tsx
测试要求:
pnpm typecheck确保类型检查通过Mock响应工具函数 (参考):
const createMockResponse = (status: number, data?: any) => ({
status,
ok: status >= 200 && status < 300,
body: null,
bodyUsed: false,
statusText: status === 200 ? 'OK' : 'Error',
headers: new Headers(),
url: '',
redirected: false,
type: 'basic' as ResponseType,
json: async () => data || {},
text: async () => '',
blob: async () => new Blob(),
arrayBuffer: async () => new ArrayBuffer(0),
formData: async () => new FormData(),
clone: function() { return this; }
})
来源: architecture/coding-standards.md
关键编码规范:
开发UI包时,必须参考并遵循UI包开发规范,该规范基于史诗008(AllIn UI模块移植)的经验总结。
data-testid属性getByText()查找可能重复的文本元素@/, ~/等),必须使用相对路径路径使用示例:
// ✅ 正确: UI包内部使用相对路径
import { apiClient } from '../../api'
import { MyComponent } from '../components'
// ✅ 正确: 跨包导入使用workspace包名
import { SharedComponent } from '@d8d/mini-shared-ui-components'
// ❌ 错误: UI包内部使用别名
import { apiClient } from '@/api'
import { MyComponent } from '~/pages/Dashboard/components'
用人方统计UI包: mini-ui-packages/yongren-statistics-ui
src/api/enterpriseStatisticsClient.ts (简单RPC客户端导出模式)src/index.ts (保持为空,采用细粒度导出)用人方仪表板UI包: mini-ui-packages/yongren-dashboard-ui
src/pages/Dashboard/Dashboard.tsxjest.config.cjs来源: architecture/data-model-schema-changes.md
相关数据表 (基于allin数据库):
users2 - 用户表 (已扩展支持talent用户类型)disabled_person - 残疾人信息表disabled_bank_card - 银行卡信息表disabled_person_photo - 证件照片表employment_order - 就业订单表order_person - 订单人员关联表数据库schema扩展 (故事015-01已完成):
users2表新增talent用户类型users2表新增person_id字段 (外键引用disabled_person.person_id)主要风险:
缓解措施:
| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2025-12-25 | 1.0 | 创建故事文档 | Bob (Scrum Master) |
此部分由开发代理在实施过程中填写
Claude Sonnet 4 (claude-sonnet-4-20250514)
无
API客户端导入修正: 初始实现时错误地从@d8d/server导入路由类型,已修正为从相应的后端模块包导入:
rencaiAuthRoutes 从 @d8d/core-module/auth-moduletalentPersonalInfoRoutes 从 @d8d/allin-disability-moduletalentEmploymentRoutes 从 @d8d/allin-order-modulemini-talent页面简化: 页面文件采用"薄包装层"设计,仅从UI包导入并导出组件,不做额外包装
复用现有共享组件: StatusBar、PageContainer、Navbar等通用组件使用@d8d/mini-shared-ui-components中的实现,避免重复创建
简化导出结构: 页面组件不需要额外的index.ts文件,直接通过package.json的exports字段导出
待实现功能: 以下功能已创建基础框架,待后续故事实现:
新增/修改的UI包配置文件 (21个):
mini-ui-packages/rencai-dashboard-ui/package.jsonmini-ui-packages/rencai-dashboard-ui/jest.config.cjsmini-ui-packages/rencai-dashboard-ui/tsconfig.jsonmini-ui-packages/rencai-dashboard-ui/src/index.tsmini-ui-packages/rencai-auth-ui/package.jsonmini-ui-packages/rencai-auth-ui/jest.config.cjsmini-ui-packages/rencai-auth-ui/tsconfig.jsonmini-ui-packages/rencai-auth-ui/src/index.tsmini-ui-packages/rencai-personal-info-ui/package.jsonmini-ui-packages/rencai-personal-info-ui/jest.config.cjsmini-ui-packages/rencai-personal-info-ui/tsconfig.jsonmini-ui-packages/rencai-personal-info-ui/src/index.tsmini-ui-packages/rencai-attendance-ui/package.jsonmini-ui-packages/rencai-attendance-ui/jest.config.cjsmini-ui-packages/rencai-attendance-ui/tsconfig.jsonmini-ui-packages/rencai-attendance-ui/src/index.tsmini-ui-packages/rencai-employment-ui/package.jsonmini-ui-packages/rencai-employment-ui/jest.config.cjsmini-ui-packages/rencai-employment-ui/tsconfig.jsonmini-ui-packages/rencai-employment-ui/src/index.tsmini-ui-packages/rencai-settings-ui/package.jsonmini-ui-packages/rencai-settings-ui/jest.config.cjsmini-ui-packages/rencai-settings-ui/tsconfig.jsonmini-ui-packages/rencai-settings-ui/src/index.tsmini-ui-packages/rencai-shared-ui/package.jsonmini-ui-packages/rencai-shared-ui/jest.config.cjsmini-ui-packages/rencai-shared-ui/tsconfig.jsonmini-ui-packages/rencai-shared-ui/src/index.tsAPI客户端文件 (13个):
mini-ui-packages/rencai-auth-ui/src/api/talentAuthClient.tsmini-ui-packages/rencai-auth-ui/src/api/index.tsmini-ui-packages/rencai-dashboard-ui/src/api/talentDashboardClient.tsmini-ui-packages/rencai-dashboard-ui/src/api/index.tsmini-ui-packages/rencai-personal-info-ui/src/api/talentPersonalInfoClient.tsmini-ui-packages/rencai-personal-info-ui/src/api/index.tsmini-ui-packages/rencai-employment-ui/src/api/talentEmploymentClient.tsmini-ui-packages/rencai-employment-ui/src/api/index.tsmini-ui-packages/rencai-attendance-ui/src/api/talentAttendanceClient.tsmini-ui-packages/rencai-attendance-ui/src/api/index.tsmini-ui-packages/rencai-settings-ui/src/api/talentSettingsClient.tsmini-ui-packages/rencai-settings-ui/src/api/index.ts基础布局组件 (1个):
mini-ui-packages/rencai-shared-ui/src/components/RencaiTabBarLayout.tsx
@d8d/mini-shared-ui-components中的实现认证框架 (2个):
mini-ui-packages/rencai-auth-ui/src/utils/AuthContext.tsxmini-ui-packages/rencai-auth-ui/src/pages/LoginPage/LoginPage.tsx
mini-talent页面文件 (7个):
mini-talent/src/app.config.ts (更新)mini-talent/src/pages/login/index.tsx (更新)mini-talent/src/pages/index/index.tsx (新建)mini-talent/src/pages/attendance/index.tsx (新建)mini-talent/src/pages/personal-info/index.tsx (新建)mini-talent/src/pages/employment/index.tsx (新建)mini-talent/src/pages/settings/index.tsx (新建)根目录配置 (1个):
package.json (更新,添加rencai UI包开发脚本)总计: 45个文件
执行日期: 2025-12-25 执行者: Bob (Scrum Master)
| 类别 | 状态 | 问题 |
|---|---|---|
| 1. 目标与上下文清晰度 | PASS | - |
| 2. 技术实现指导 | PASS | - |
| 3. 参考文档有效性 | PASS | - |
| 4. 自包含性评估 | PASS | - |
| 5. 测试指导 | PASS | - |
/api/v1/rencai 前缀)故事准备状态: ✅ READY
清晰度评分: 9/10
主要优点:
建议改进:
开发者视角:
结论: 故事提供了充分的实施上下文,开发者可以基于此文档成功实施UI包基础框架搭建工作。
此部分由QA代理在审查完成后填写