feat(aihr): align figma pages for release
This commit is contained in:
@@ -12,10 +12,11 @@
|
||||
| 对练语音 | `POST /api/ai/asr`(multipart 字段 `file`,≤5MB)、`POST /api/ai/tts`(JSON `{text≤300字, voice}`,返回 `{audioUrl}` base64 dataURL) | 走 OpenAI-compatible audio 接口(如硅基流动 SenseVoice/CosyVoice2);模型管理需启用 `category=asr/tts` 配置;移动端优先用浏览器录音,`getUserMedia/MediaRecorder` 不可用或麦克风权限失败时,用 `audio/*` file input 选择/录制音频后继续调同一 ASR 接口;ASR/TTS 未配置或失败返回 fail,前端降级文本 |
|
||||
| 案例沉淀 `/knowledge/cases` | `POST /api/knowledge/case/upload`、`/organize`、`/curate` | `/upload` 改为 multipart 真实语音上传并走 ASR;`/organize` 用真实转写调 chat 模型整理案例,未配置模型时按真实 transcript 本地结构化;不再用固定样例转写冒充成功 |
|
||||
| SOP知识库 `/knowledge/sop` | `POST /api/knowledge/search`、`POST /api/knowledge/doc/upload` | 已接入 MySQL Fulltext + Qdrant 混合召回、OSS-first 文档上传、txt/md/PDF/Word/Excel/PPT 解析和 embedding 写入,失败回退 seed |
|
||||
| 资料处理 `/knowledge/processing` | `GET /api/knowledge/processing/overview`、`POST /api/knowledge/doc/upload-async`、`GET /api/knowledge/doc/upload-items`、`POST /api/knowledge/doc/upload-items/{id}/retry`、`POST /api/knowledge/doc/import-local-task`、`GET /api/knowledge/doc/import-tasks`、`POST /api/knowledge/doc/import-tasks/{id}/cancel` | 已接入解析任务状态聚合;**批量上传走异步队列**:接口只暂存+入队即秒回,后台 worker(并发 2)逐条解析/归类/向量化,页面按批次轮询进度、失败可单文件重试;服务端目录导入、进度轮询和任务取消保留,失败回退 seed |
|
||||
| 资料处理 `/knowledge/processing` | `GET /api/knowledge/processing/overview`、`POST /api/knowledge/doc/upload-async`、`GET /api/knowledge/doc/upload-items`、`POST /api/knowledge/doc/upload-items/{id}/retry`、`POST /api/knowledge/doc/import-local-task`、`GET /api/knowledge/doc/import-tasks`、`POST /api/knowledge/doc/import-tasks/{id}/cancel` | 已接入解析任务状态聚合;**批量上传走异步队列**:接口只暂存+入队即秒回,后台 worker(并发 2)逐条解析/归类/向量化;ZIP 在 worker 内安全解压后把支持的子文件继续入同一批次队列,页面按批次轮询进度、失败可单文件重试;服务端目录导入、进度轮询和任务取消保留,失败回退 seed |
|
||||
| 组织人员同步 | `POST /api/aihr/org/sync` | 从开放组织同步系统的 `/api/open/v1/sync/snapshot` 拉取 `company/department/employee` 快照,分页参数使用 `limit`;员工手机号只落 `person_phone` 用于移动端身份映射,不在组织列表响应暴露;岗位识别 `position/job_title/post/job_name/role/title` 等字段。默认 `replaceExisting=true`,写入前必须先用 `{"dryRun":true}`;dry-run 不访问本地快照表、不执行 DDL/写库,返回 `phoneLinked/maskedPhone/suspectText/warnings` 且 `syncedCount=0`。2026-07-10 源接口实测 3474 人仅 1 个可用手机号、3473 个脱敏手机号、8 条疑似乱码,因此未执行覆盖同步,正式试点需上游先开放至少 20 名试点人员手机号 |
|
||||
| 移动端手机号登录 | `GET /resource/sms/code`、`POST /auth/mobile/sms-login` | 已复用 sms4j 阿里云配置 `config1` 和 RuoYi `sms` 授权策略;短信发送成功后才写 Redis 验证码;手机号不存在时自动注册 `app_user`;`aihr.sms.dev-fixed-code` 非空时不真发短信、验证码固定(dev 默认 `123456`,prod profile 代码级强制失效) |
|
||||
| 用户侧三端首页 `mobile-uni` hash 路由;旧 `/h5/user`、`/h5/candidate`、`/h5/supervisor` 兼容重定向 | `GET /api/aihr/mobile/home/{role}` | 已接入员工、候选人、主管首页公开只读 API;移动端本地 fallback 保演示 |
|
||||
| 移动端登录后角色识别 | `GET /api/aihr/mobile/me` | 认证后按手机号匹配组织快照;`position_level` 为“主管/项目经理”时进入主管端,否则进入员工端;接口失败回退员工端 |
|
||||
| 移动端员工训练与主管复盘闭环 | 员工复用 `POST /api/train/practice/start`、`/turn`、`/finish`,查询 `GET /api/aihr/mobile/practice/history`、`/profile`;主管查询 `GET /api/aihr/mobile/practice/team`、`/practice/alerts`、`/practice/reviews`、`/practice/reviews/{id}`,标记 `POST /api/aihr/mobile/practice/reviews/{id}/reviewed`,指派 `POST /api/aihr/mobile/practice/assignments` | 员工端登录后带 `Authorization` 与 `clientid` 调用;`mode=mobile` 完成后写入 `aihr_practice_session`。主管接口以后端当前登录手机号映射在职组织快照,仅允许岗位为“主管/项目经理”的账号,并按租户和项目范围返回真实成员、全状态训练记录及非 daily 专项;普通员工返回“无主管权限”。复盘标记只允许首次 `待复盘 -> 已复盘` 创建后续专项,并发重复提交幂等;可带 `incentivePoint` 写入贡献度 |
|
||||
| 移动端候选人闭环 | 页面拆为 `/pages/candidate/index/index`、`/interview/index`、`/materials/index`、`/progress/index`、`/study/index`;面试复用 `POST /api/recruit/interview/start`、`/answer`、`/finish` 和 `GET /records`;资料 `POST/GET /api/aihr/mobile/candidate/materials`;预习 `POST /api/knowledge/search`;HR 审核 `GET /api/aihr/hr/candidate/materials`、`POST /api/aihr/hr/candidate/materials/{id}/review` | 候选人端登录后带 `Authorization` 与 `clientid` 调用;首页只按当前手机号对应的真实面试记录和最新资料状态分流,不读取公开 home seed。APP 候选人身份以后端登录手机号为准,前端 `candidateId/candidateName` 只作非 APP 场景兼容参数;面试拉题/评分走真实模型优先;资料写 `sys_oss`/MinIO 和 `aihr_candidate_material`,HR 审核后进度页同步三态;岗前预习查询正式 SOP,不兜前端示例答案 |
|
||||
|
||||
@@ -67,7 +68,7 @@ SOP 文档上传第三片已经落最小后端边界:
|
||||
| 解析状态聚合 | `GET /api/knowledge/processing/overview` | 聚合 `aihr_knowledge_attach.status`、fragment 数、embedding 数、`sys_oss.ext1.fileSize`,生成资料处理页指标、分类、任务、链路和事件列表 |
|
||||
| 服务端目录导入 | `POST /api/knowledge/doc/import-local` | JSON `{ directory, category, limit }`;`directory` 只能是 `AIHR_IMPORT_ROOT` / `aihr.import.root` 下的相对目录,默认根目录为 `./.data/import`;逐文件复用上传解析链路,同步执行,保留给小批量/调试 |
|
||||
| 服务端导入任务 | `POST /api/knowledge/doc/import-local-task`、`GET /api/knowledge/doc/import-tasks`、`POST /api/knowledge/doc/import-tasks/{id}/cancel` | 启动后台目录导入并返回任务;任务写入 `aihr_knowledge_import_task`,页面轮询查看总数、成功数、失败数、当前文件和进度;运行中任务可取消;重试当前按同目录重新启动一轮 |
|
||||
| 批量异步上传 | `POST /api/knowledge/doc/upload-async`(multipart `file`+`category`+`batchId`)、`GET /api/knowledge/doc/upload-items?batchId=`、`POST /api/knowledge/doc/upload-items/{id}/retry` | 上传只做暂存(`aihr.upload.staging`,默认 `./.data/staging`)+ 写入 `aihr_knowledge_upload_item`(0待处理/1处理中/2完成/3失败)即返回;后台 worker 并发 2 复用同一解析/归类/向量化链路,同名文件串行防撞唯一键;完成/失败状态 CAS 写入,卡住 30 分钟(视频 120 分钟)由清扫重置,失败暂存文件保留 72h 供重试;同步接口 `POST /api/knowledge/doc/upload` 保留给 SOP 页单文件即时预览 |
|
||||
| 批量异步上传 | `POST /api/knowledge/doc/upload-async`(multipart `file`+`category`+`batchId`)、`GET /api/knowledge/doc/upload-items?batchId=`、`POST /api/knowledge/doc/upload-items/{id}/retry` | 上传只做暂存(`aihr.upload.staging`,默认 `./.data/staging`)+ 写入 `aihr_knowledge_upload_item`(0待处理/1处理中/2完成/3失败)即返回;支持 ZIP ≤500MB,worker 限制最多 1000 个子文件、解压总量 ≤2GB,拒绝嵌套 ZIP/不安全路径并忽略未知格式;支持的子文件写回同一 batch 继续复用解析链路;完成/失败状态 CAS 写入,卡住 30 分钟(视频 120 分钟)由清扫重置,失败暂存文件保留 72h 供重试;同步接口 `POST /api/knowledge/doc/upload` 不支持 ZIP,保留给 SOP 页单文件即时预览 |
|
||||
| 视频解析 | 走批量异步上传,支持 `.mp4/.mov/.avi/.mkv/.webm/.m4v`,单文件 ≤500MB、时长 ≤60 分钟 | 依赖服务器 ffmpeg/ffprobe;抽音轨按 5 分钟分段调 asr 模型转写(`[mm:ss]` 时间戳),按 30s 间隔(≤40 帧)抽关键帧调 vision 模型提取画面文字(相邻重复画面去重);两类文本合并后走归类/切片/向量化;无 asr 且无 vision 结果时按「待处理」落库不报错;视频同时只加工 1 个 |
|
||||
|
||||
模型能力第二片已经落最小后端边界:
|
||||
|
||||
+1
-1
@@ -121,7 +121,7 @@ AIHR_AI_SPEECH_ENABLED=true
|
||||
- `aihr_candidate_material_mysql8.sql` 已纳入;候选人端补充资料文件写 `sys_oss`/MinIO,关系落 `aihr_candidate_material`
|
||||
- `aihr_org_snapshot_mysql8.sql` 已纳入 reset 脚本;组织人员本地 seed(2 个住宅项目 22 人,项目经理/主管/一线三层)支撑演示,外部开放组织系统配置完成后用 `POST /api/aihr/org/sync` 拉取 `company/department/employee` 快照并覆盖本地 `aihr_org_snapshot`
|
||||
- 本地组织 seed 带演示手机号,可用 `13900000103` 验证员工端自动识别物业管家岗位,用 `13900000202` 验证主管端项目范围
|
||||
- SOP 知识库支持 `.txt/.md/.markdown/.pdf/.doc/.docx/.xls/.xlsx/.ppt/.pptx` 上传到 MinIO 后解析入库,接口为 `POST /api/knowledge/doc/upload`,单文件上限 100MB;管理端上传请求单独放宽到 180s,PDF 解析/归类/向量化较慢时不要改全局 axios 超时
|
||||
- SOP 知识库支持 `.txt/.md/.markdown/.pdf/.doc/.docx/.xls/.xlsx/.ppt/.pptx` 上传到 MinIO 后解析入库,接口为 `POST /api/knowledge/doc/upload`,单文件上限 100MB;管理端上传请求单独放宽到 180s,PDF 解析/归类/向量化较慢时不要改全局 axios 超时。资料处理中心异步接口另支持 `.zip`(≤500MB),后台安全解压后逐文件入队;最多 1000 个子文件、解压总量 ≤2GB,不支持嵌套 ZIP
|
||||
- 视频(`.mp4/.mov/.avi/.mkv/.webm/.m4v`,≤500MB、≤60 分钟)只走资料处理中心批量导入(异步队列):ffmpeg 抽音轨分段调 asr 转写 + 抽关键帧调 vision 提取画面文字,合并后归类切片入库,片段带 `[mm:ss]` 时间戳;**依赖服务器安装 ffmpeg/ffprobe**(macOS `brew install ffmpeg`,Linux `apt install ffmpeg`)
|
||||
- 服务端目录导入接口为 `POST /api/knowledge/doc/import-local-task`,只读取导入根目录下的相对目录,后台逐文件复用同一上传解析链路;`POST /api/knowledge/doc/import-tasks/{id}/cancel` 可取消运行中任务;`POST /api/knowledge/doc/import-local` 保留为同步调试接口。
|
||||
- 启用 `aihr_model_config.category='vector'` 的模型配置后,上传会同步写入片段 embedding,并尽力 upsert 到 Qdrant;模型配置页可查看 Qdrant 维度、点数和片段向量数,并在维度不一致时重建索引;未配置或 Qdrant 不可用时只走 MySQL Fulltext/seed fallback,不影响检索。
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
## 已有正式页面
|
||||
|
||||
- [x] 员工端:今日
|
||||
- [x] 员工端:今日(Figma `23:3`)
|
||||
- [x] 员工端:练(训练中心入口)
|
||||
- [-] 员工端:问(仅提问态,缺结果与反馈)
|
||||
- [-] 员工端:我(有成长摘要,缺完整画像/荣誉/偏好)
|
||||
@@ -146,7 +146,7 @@
|
||||
- 一期范围外的复杂多组织流程
|
||||
- 未完成授权对接前的北森、考勤、请假等伪数据页面
|
||||
|
||||
## 全文件设计一致性审计(2026-07-13)
|
||||
## 全文件设计一致性审计(2026-07-14)
|
||||
|
||||
- [x] 建立 Figma 首屏“00|设计索引与审计”(Figma `101:3`)
|
||||
- [x] 79 个页面、71 张正式画板均有内容,无重复页面名和空业务页
|
||||
@@ -156,4 +156,5 @@
|
||||
- [x] 896 个精确匹配颜色补充变量绑定,整体填充变量绑定率约 50%
|
||||
- [x] 品牌主红统一为 `#E60012`,员工端与管理端变量已对齐
|
||||
- [x] 正式画板和设计规范中的可见文字最低 12px,字号调整后无裁切和越界
|
||||
- [x] 员工端「页面|今日」已完成首页高保真复核:问答卡横向内容垂直居中,左右图片容器统一为 `64×64`,右侧聊天气泡保持居中且文案不溢出
|
||||
- [ ] 代码实现阶段验证真实对比度、键盘焦点、状态播报和读屏顺序
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
# 银城员工端 Figma 视觉系统使用规范
|
||||
|
||||
## 目的
|
||||
|
||||
本文件规定员工端页面如何从通用视觉元素组合页面,再放置具体业务元素。
|
||||
|
||||
后续 LLM 打开 Figma 时,必须遵循:
|
||||
|
||||
```text
|
||||
先识别页面结构
|
||||
→ 选择通用视觉组件
|
||||
→ 填入业务对象和字段
|
||||
→ 映射业务状态
|
||||
→ 补齐响应式与交互状态
|
||||
```
|
||||
|
||||
不要把业务文案、业务状态或业务指标直接当成视觉组件。
|
||||
|
||||
## 一、四层模型
|
||||
|
||||
### 1. 业务元素
|
||||
|
||||
业务元素是产品要表达的对象、字段和动作,不属于视觉库。
|
||||
|
||||
员工端「我」页面示例:
|
||||
|
||||
- 用户身份:姓名、头像、工号、岗位、组织
|
||||
- 成长数据:成长值、等级、训练次数、完成率
|
||||
- 能力数据:能力维度、当前分数、趋势、短板
|
||||
- 记录对象:训练记录、复盘记录、收藏内容
|
||||
- 激励对象:积分、徽章、荣誉、排行榜名次
|
||||
- 用户动作:查看详情、继续训练、查看荣誉、修改偏好
|
||||
|
||||
### 2. 业务状态
|
||||
|
||||
业务状态描述业务对象当前情况,也不属于视觉库。
|
||||
|
||||
示例:
|
||||
|
||||
- 训练:未开始、进行中、已完成、待复盘、已过期
|
||||
- 审核:待审核、已通过、已驳回
|
||||
- 任务:未完成、已完成、逾期
|
||||
- 数据:加载中、暂无数据、加载失败
|
||||
|
||||
业务状态需要映射到通用组件,而不是创建同名视觉组件。
|
||||
|
||||
### 3. 通用视觉元素
|
||||
|
||||
通用视觉元素是可以跨业务复用的组件和布局结构。
|
||||
|
||||
基础元素:
|
||||
|
||||
- Color、Typography、Spacing、Radius、Shadow、Icon
|
||||
- Avatar、Divider、Image、Grid
|
||||
|
||||
通用组件:
|
||||
|
||||
- PageHeader
|
||||
- SectionHeader
|
||||
- Card
|
||||
- MetricCard
|
||||
- ListItem
|
||||
- Label
|
||||
- Tag / Badge / StatusBadge
|
||||
- Progress / Score
|
||||
- Button / IconButton
|
||||
- Tabs / BottomTabBar
|
||||
- Modal / Drawer / Toast
|
||||
- Loading / EmptyState / ErrorState
|
||||
|
||||
### 4. 页面组合
|
||||
|
||||
页面组合是业务元素使用通用视觉元素后的结果,不应反向污染视觉库。
|
||||
|
||||
示例:
|
||||
|
||||
```text
|
||||
成长摘要卡 = Card + MetricCard + Progress + 业务成长数据
|
||||
训练记录项 = ListItem + StatusBadge + Score + Button + 训练记录字段
|
||||
个人资料区 = Card + Avatar + Label + 业务身份字段
|
||||
荣誉墙 = SectionHeader + Grid + Badge + 业务荣誉数据
|
||||
```
|
||||
|
||||
### 员工端首页并列入口的尺寸规则
|
||||
|
||||
「问老师傅」和「打字问」是同一问答卡中的并列入口,属于页面组合,不新增业务组件。两侧图片容器统一使用 `64×64`,横向内容行使用垂直居中;图形本身可按图标复杂度保持内部留白,但不能再出现一侧 `80×80`、另一侧 `40×40` 的视觉层级错位。
|
||||
|
||||
## 二、状态映射规则
|
||||
|
||||
业务状态只负责提供语义,视觉组件负责提供表现。
|
||||
|
||||
| 业务语义 | 推荐组件 | 视觉职责 |
|
||||
|---|---|---|
|
||||
| 未开始 | StatusBadge / Button | 中性状态、引导操作 |
|
||||
| 进行中 | StatusBadge / Progress | 强调进行状态和完成比例 |
|
||||
| 已完成 | StatusBadge / Score | 正向反馈、展示结果 |
|
||||
| 待复盘 | StatusBadge / Button | 提示下一步动作 |
|
||||
| 已过期 | StatusBadge | 警示和不可继续操作 |
|
||||
| 暂无数据 | EmptyState | 解释原因和可执行动作 |
|
||||
| 加载失败 | ErrorState / Button | 错误说明和重试 |
|
||||
|
||||
文案如“训练未开始”是业务 Label 的内容,不是新的视觉组件。
|
||||
|
||||
## 三、Figma 命名规则
|
||||
|
||||
### 组件命名
|
||||
|
||||
组件用通用结构命名,不用业务文案命名:
|
||||
|
||||
```text
|
||||
正确:StatusBadge、MetricCard、ListItem
|
||||
错误:训练未开始标签、成长值卡片、待复盘卡片
|
||||
```
|
||||
|
||||
### 业务实例命名
|
||||
|
||||
实例可以带业务语义,但必须保留通用组件名:
|
||||
|
||||
```text
|
||||
StatusBadge / training / not-started
|
||||
MetricCard / growth-score
|
||||
ListItem / practice-history
|
||||
```
|
||||
|
||||
### 变体命名
|
||||
|
||||
优先使用结构化属性:
|
||||
|
||||
```text
|
||||
size = sm | md | lg
|
||||
tone = neutral | brand | success | warning | danger
|
||||
state = default | loading | disabled | error
|
||||
showIcon = true | false
|
||||
```
|
||||
|
||||
不要为每个业务状态复制一套组件。
|
||||
|
||||
## 四、LLM 读取和生成页面的顺序
|
||||
|
||||
LLM 处理新页面时,按以下顺序工作:
|
||||
|
||||
1. 识别页面目标和用户任务。
|
||||
2. 把页面内容拆成业务对象、字段、状态和动作。
|
||||
3. 从 Figma 组件库选择页面骨架和通用组件。
|
||||
4. 根据布局规则组合组件。
|
||||
5. 将业务字段填入组件实例。
|
||||
6. 将业务状态映射到 `tone`、`state`、`progress` 或操作按钮。
|
||||
7. 检查加载、空、错误、禁用和完成状态。
|
||||
8. 最后才调整页面级视觉,不新增业务专用组件。
|
||||
|
||||
## 五、「我」页面的推荐骨架
|
||||
|
||||
```text
|
||||
Page
|
||||
├── PageHeader
|
||||
│ └── 业务元素:页面标题、设置入口
|
||||
├── ProfileCard
|
||||
│ └── Avatar + 业务身份字段
|
||||
├── GrowthSummary
|
||||
│ └── MetricCard + Progress + 业务成长数据
|
||||
├── CapabilitySection
|
||||
│ └── SectionHeader + Score / Progress + 业务能力数据
|
||||
├── PracticeHistory
|
||||
│ └── SectionHeader + ListItem + StatusBadge + 训练记录
|
||||
├── HonorSection
|
||||
│ └── SectionHeader + Badge / Grid + 荣誉数据
|
||||
└── BottomTabBar
|
||||
└── 通用导航结构:今日 / 练 / 问 / 我
|
||||
```
|
||||
|
||||
这里的 `ProfileCard`、`GrowthSummary` 等是页面组合名称;真正进入通用视觉库的仍是 `Card`、`MetricCard`、`Progress`、`ListItem`、`Badge` 等组件。
|
||||
|
||||
## 六、设计检查清单
|
||||
|
||||
- 是否能把业务文案替换成另一种业务,而不重画组件?
|
||||
- 组件名称是否描述结构,而不是描述某个业务?
|
||||
- 业务状态是否通过 `tone`、`state` 或内容字段表达?
|
||||
- 是否复用了已有 Token 和组件?
|
||||
- 是否覆盖加载、空、错误、禁用和完成状态?
|
||||
- 页面是否由清晰的组件组合构成?
|
||||
- 是否能让 LLM 根据名称判断组件用途和边界?
|
||||
|
||||
判断标准:如果一个元素离开当前业务仍然有意义,它才适合进入通用视觉库。
|
||||
@@ -0,0 +1,134 @@
|
||||
# Figma 页面实现矩阵
|
||||
|
||||
更新时间:2026-07-13
|
||||
|
||||
## 统计口径
|
||||
|
||||
- Figma 当前索引:78 个页面、70 张正式画板。
|
||||
- `docs/FIGMA_DESIGN_INVENTORY.md` 的历史清单记录为 79 个页面、71 张正式画板,属于设计索引更新前的数字。
|
||||
- Figma 文件 API 当前实际暴露 1 个顶层页面 `101:2`(设计索引与审计);“78 个页面”是索引中的审计统计值,不是 78 个可单独定位的 Figma 顶层页面。
|
||||
- 因此不能凭空补出 8 个页面名称或 node id;本表按可定位、可验收的 70 张正式业务画板建立。
|
||||
- `[x]` 只表示 Figma 画板已完成,不表示代码或线上已完成。
|
||||
- `已实现`:仓库存在对应页面,并有真实业务接口或明确的降级链。
|
||||
- `部分实现`:有入口或局部状态,但没有完成 Figma 对应的完整业务闭环。
|
||||
- `未实现`:没有对应业务页面,或只有建设中占位。
|
||||
- `线上待修正`:本地代码已有,但线上包、角色路由或视觉仍未达到当前版本。
|
||||
- “Figma 位置”使用设计清单中的 node id;未标 node id 的项目不是正式画板。
|
||||
|
||||
## 与《AI陪练二期开发推进计划》对账
|
||||
|
||||
这两份文档不是同一张验收表:
|
||||
|
||||
- 本矩阵回答“Figma 设计的页面在代码/线上完成到什么程度”,覆盖 MVP、二期、阶段二/三和已取消设计。
|
||||
- 二期计划回答“生活顾问 AI 陪练阶段一的工程闭环和 M5 试点条件是否满足”,不要求实现全部 70 张 Figma 正式画板。
|
||||
- 因此,矩阵中的“未实现”不等于二期延期;个人 AI 助理、开放问题榜、积分/荣誉、完整偏好体系等属于计划明确暂缓的阶段二/三范围。
|
||||
- 矩阵中的“已实现”也不等于 M5 业务验收通过;评分校准、SOP 评审、正式组织身份和真实试点数据仍以严格预检为准。
|
||||
|
||||
与二期计划的主要对应关系:
|
||||
|
||||
| 计划范围 | 矩阵行 | 对账结论 |
|
||||
|---|---:|---|
|
||||
| M1 场景、Rubric、提示词模板 | 5、23、24、25 | 工程能力已实现;场景/Rubric保留轻量入口,未做计划明确不要求的复杂 CRUD。提示词模板已挂在模型配置页,按计划完成;按 Figma 独立画板仍是部分对齐。 |
|
||||
| M2 预习卡、情绪/红线、求助、知识缺口 | 5、6、7、27、28 | 代码闭环已实现;问答反馈和完整视觉状态仍是 Figma 对齐缺口。开放问题榜不属于本期。 |
|
||||
| M3 录音、回放、逐句标注 | 8、11、27 | 工程能力已实现;线上主管角色路由和真实音频/线上包仍需验证。 |
|
||||
| M4 画像、预警、派发、复盘建议、校准 | 9—14、26、46—47、50、61—62 | 主链路已实现;完整 Figma 看板、晋升和游戏化页面不属于本期必做。 |
|
||||
| M5 试点收口 | 26 | 只有工程闸门和导出能力已实现;正式业务是否通过不能由本矩阵判定,必须看真实组织数据和人工评审样本。 |
|
||||
|
||||
结论:本矩阵与二期计划**功能边界基本一致,但原表缺少计划对账层**;本节已补上,后续不再把 Figma 全量完成度当成二期完成度。
|
||||
|
||||
## 当前剩余动作
|
||||
|
||||
| 优先级 | 项目 | 需要什么才能继续 |
|
||||
|---|---|---|
|
||||
| P0 | 员工今日线上视觉 | 发布当前 `mobile-uni` 静态包并做线上浏览器回归;本地源码不再继续堆视觉代码。 |
|
||||
| P1 | 案例学习/视频详情 | 先补真实案例详情模型:`caseId`、媒体 URL、学习点、主管点评、相关训练场景;字段和 API 确定后再实现页面。 |
|
||||
| P1 | 正式组织数据 | 用正式员工、项目和试点时间窗口验证团队量化、成长证据和 M5 导出;不使用本地 smoke 样本替代。 |
|
||||
| P2 | 三期页面 | 个人 AI 助理、开放问题榜、积分/荣誉、完整七维偏好、独立 AI 教练编排按阶段二/三单独立项。 |
|
||||
|
||||
|
||||
## 70 张正式业务画板矩阵
|
||||
|
||||
| # | 页面/状态 | Figma 位置 | 代码路径 | 当前实现 | 是否修正 |
|
||||
|---:|---|---|---|---|---|
|
||||
| 1 | 员工端:今日 | — | `mobile-uni/src/pages/user/today/index.vue` | [x] 已实现 | 本地源码已对齐;线上待发布,线上仍是旧视觉 |
|
||||
| 2 | 员工端:练入口 | — | `mobile-uni/src/pages/user/practice/index.vue` | [x] 已实现 | 已验证场景首屏、最近练过、每日三题和独立练习入口;蓝白视觉已复核 |
|
||||
| 3 | 员工端:问 | — | `mobile-uni/src/pages/user/sop/index.vue` | [x] 已实现 | 已验证搜索、引用、反馈状态和总结卡 |
|
||||
| 4 | 员工端:我 | — | `mobile-uni/src/pages/user/profile/index.vue` | [x] 已实现 | 已验证登录、岗位、成长摘要、训练历史和详情入口 |
|
||||
| 5 | 训练前预习卡 | `53:2` | `mobile-uni/src/pages/user/practice/index.vue` | [x] 已实现 | 已验证预习卡、开始练习与真实对话状态;视觉已复核 |
|
||||
| 6 | 正式语音对练 | `54:2` | `mobile-uni/src/pages/user/practice/index.vue` | [x] 已实现 | 已验证文字提交、情绪/信任、求助和录音入口;失败保留文本降级 |
|
||||
| 7 | 训练完成结果 | `55:2` | `mobile-uni/src/pages/user/practice/index.vue` | [x] 已实现 | 已验证两轮真实提交、评分结果和主管待复盘更新;视觉已复核 |
|
||||
| 8 | 训练历史详情 | `56:2` | `mobile-uni/src/pages/user/history/index.vue` | [x] 已实现 | 已验证员工归属、评分明细、对话、复盘建议和刷新返回 |
|
||||
| 9 | 主管今日工作台 | `57:2` | `mobile-uni/src/pages/supervisor/index/index.vue` | [x] 已实现 | 已用主管账号验证团队概览、任务入口和预警;蓝白视觉已复核 |
|
||||
| 10 | 主管待复盘列表 | `58:2` | `mobile-uni/src/pages/supervisor/reviews/index.vue` | [x] 已实现 | 已验证真实待复盘列表、低分优先和详情跳转 |
|
||||
| 11 | 主管复盘详情 | `59:2` | `mobile-uni/src/pages/supervisor/review/index.vue` | [x] 已实现 | 已验证评分明细、对话、标注、建议、贡献分和标记已复盘 |
|
||||
| 12 | 员工能力详情 | `61:2` | `mobile-uni/src/pages/supervisor/team/index.vue` | [x] 已实现 | 已验证点击成员展示最新评分、训练次数、待复盘数量、真实训练趋势和成长证据;400px 主管画布、蓝白卡片、层级和间距已复核;未虚构 Figma 未提供的数据 |
|
||||
| 13 | 训练任务派发 | `61:530` | `mobile-uni/src/pages/supervisor/assign/index.vue` | [x] 已实现 | 已验证按项目范围选择员工、场景、原因并真实创建专项任务 |
|
||||
| 14 | 派发进度与预警 | `62:2` | `mobile-uni/src/pages/supervisor/assign/index.vue` | [x] 已实现 | 已验证真实派发进度计数(待训练/已完成/低分再练)和低分训练预警;400px 主管画布、表单/列表/进度卡层级已复核;截止时间与下滑趋势暂无后端字段,未伪造 |
|
||||
| 15 | 候选人面试首页 | `67:2` | `mobile-uni/src/pages/candidate/index/index.vue` | [x] 已实现 | 已修正 |
|
||||
| 16 | 候选人面试答题 | `68:2` | `mobile-uni/src/pages/candidate/interview/index.vue` | [x] 已实现 | 已修正 |
|
||||
| 17 | 候选人面试完成评分 | `69:26` | `mobile-uni/src/pages/candidate/interview/index.vue` | [x] 已实现 | 已修正 |
|
||||
| 18 | 候选人历史/人工复核 | `69:559` | `mobile-uni/src/pages/candidate/progress/index.vue` | [x] 已实现 | 已对齐面试记录、评分摘要、真实问答快照、人工复核状态和返回候选人中心;浏览器已验证真实面试提交后可查看 3 条问答记录 |
|
||||
| 19 | 候选人补充资料上传 | `69:599` | `mobile-uni/src/pages/candidate/materials/index.vue` | [x] 已实现 | 已修正 |
|
||||
| 20 | 候选人资料审核状态 | `69:629` | `mobile-uni/src/pages/candidate/progress/index.vue` | [x] 已实现 | 已修正 |
|
||||
| 21 | 管理端 AI 面试列表 | `70:2` | `frontend/src/views/recruit/interview.vue` | [x] 已实现 | 已修正 |
|
||||
| 22 | 管理端 AI 面试详情复核 | `71:2` | `frontend/src/views/recruit/interview.vue` | [x] 已实现 | 已修正 |
|
||||
| 23 | 场景库列表/编辑/启停 | `71:628` | `frontend/src/views/train/scenarios.vue` | [x] 已实现 | 已按 Figma 独立工作台实现筛选、分页、列表、Rubric/状态展示、编辑、新增和启停;真实浏览器已验证编辑保存及停用/启用恢复 |
|
||||
| 24 | Rubric 维度/版本管理 | `72:2` | `frontend/src/views/train/rubrics.vue` | [x] 已实现 | 已按 Figma 实现版本列表、维度权重编辑、保存发布、复制版本与启停;真实浏览器已验证权重保存、复制版本落库及启用/停用恢复 |
|
||||
| 25 | 提示词模板管理 | `73:2` | `frontend/src/views/system/prompts.vue` | [x] 已实现 | 已按 Figma 独立工作台实现模板列表、名称/代码/输出文体/系统提示词/模板/变量编辑、保存草稿、保存并启用;真实浏览器已验证编辑保存、新增启用、刷新持久化,临时样本已清理 |
|
||||
| 26 | 人工评分校准/指标导出 | `74:2` | `frontend/src/views/train/reviews.vue`、`frontend/src/views/train/practice.vue` | [x] 已实现 | 已按 Figma 补齐日期窗口、岗位/组织范围、校准样本指标卡和独立 CSV 导出;真实浏览器已验证页面加载、导出下载和复盘校准表单,正式试点数据仍需真实样本 |
|
||||
| 27 | SOP 回答结果 | `79:11` | `mobile-uni/src/pages/user/sop/index.vue` | [x] 已实现 | 已按 Figma 补齐「师傅回答/我的问题/答案卡/引用依据/反馈」层级,保留真实检索、引用和反馈接口;浏览器已验证登录、真实答案展示和“有用”反馈状态 |
|
||||
| 28 | SOP 好评/差评反馈 | `79:674` | `mobile-uni/src/pages/user/sop/index.vue` | [x] 已实现 | 已按 Figma 语义对齐为「有帮助/没解决」双按钮,保留真实反馈接口、提交后状态提示与按钮锁定;浏览器已验证真实搜索、点击反馈、结果提示和两个按钮 disabled。Figma 中的「收藏」当前无后端持久化接口,未添加假按钮 |
|
||||
| 29 | SOP 后台待复核 | `80:655` | `frontend/src/views/knowledge/sop.vue` | [x] 已实现 | 已补真实答案反馈待复核队列、待复核/已复核筛选、状态展示与「标记已复核」动作;浏览器已验证刷新加载临时待复核样本、点击复核后从待办移除并清理测试数据 |
|
||||
| 30 | SOP 知识库管理 | `81:2` | `frontend/src/views/knowledge/sop.vue` | [x] 已实现 | 已修正 |
|
||||
| 31 | 异步资料处理队列 | `81:750` | `frontend/src/views/knowledge/processing.vue` | [x] 已实现 | 已修正;ZIP 支持已写本地但未发布 |
|
||||
| 32 | 案例语音上传 | `79:706` | `mobile-uni/src/pages/user/cases/index.vue`、`frontend/src/views/knowledge/cases.vue` | [x] 已实现 | 已修正 |
|
||||
| 33 | 案例 AI 整理结果 | `79:734` | `frontend/src/views/knowledge/cases.vue` | [x] 已实现 | 已修正 |
|
||||
| 34 | 案例审核/筛选/发布 | `82:2` | `frontend/src/views/knowledge/cases.vue` | [x] 已实现 | 已修正 |
|
||||
| 35 | 案例学习/视频详情 | `80:2` | `mobile-uni/src/pages/user/learning/index.vue`、`cases/index.vue` | 部分实现 | 当前只有案例上传/整理/入库和学习入口;后端没有稳定的案例详情、媒体 URL、学习点/主管点评字段,暂不造视频详情页 |
|
||||
| 36 | 个人资料库首页 | `86:3` | — | 未实现 | 未修正,阶段二 |
|
||||
| 37 | 个人资料列表/筛选搜索 | `86:58` | — | 未实现 | 未修正,阶段二 |
|
||||
| 38 | 收藏资料 | `86:846` | — | 未实现 | 未修正,阶段二 |
|
||||
| 39 | 文件解析进度/失败重试 | `86:884` | — | 未实现 | 未修正,阶段二 |
|
||||
| 40 | 资料详情/来源/删除/导出 | `86:950` | — | 未实现 | 未修正,阶段二 |
|
||||
| 41 | 个人/企业/混合知识范围 | `86:997` | — | 未实现 | 未修正,阶段二 |
|
||||
| 42 | 个人知识带引用回答 | `87:2` | — | 未实现 | 未修正,阶段二 |
|
||||
| 43 | 工作思路整理输入 | `87:770` | — | 未实现 | 未修正,阶段二 |
|
||||
| 44 | 结论/行动项结果 | `87:815` | — | 未实现 | 未修正,阶段二 |
|
||||
| 45 | 摘要/可编辑文字生成 | `87:865` | — | 未实现 | 未修正,阶段二 |
|
||||
| 46 | 员工工作量化看板 | `89:9` | `frontend/src/views/competency/growth.vue` | 按二期计划已实现;按 Figma 部分对齐 | 已有训练时长、贡献度、测评分、等级、证据包、预警和派发;完整三期量化指标暂不补 |
|
||||
| 47 | 主管团队量化看板 | `89:776` | `mobile-uni/src/pages/supervisor/team/index.vue` | 按二期计划已实现;按 Figma 部分对齐 | 已有团队成员、风险、训练记录和成长证据;完整团队经营指标需正式组织数据 |
|
||||
| 48 | HR/运营绩效看板 | `90:2` | — | 未实现 | 未修正,三期 |
|
||||
| 49 | 工作积分排行榜 | `90:91` | — | 未实现 | 未修正,三期 |
|
||||
| 50 | 等级/晋升条件/进度 | `90:867` | `frontend/src/views/competency/growth.vue` | 按二期计划已实现;按 Figma 部分对齐 | 已有初/中/高级成长路径和评级证据包;正式晋升申请/审核属于后续范围 |
|
||||
| 51 | 破格晋升申请/审核 | `91:2` | — | 未实现 | 未修正,三期 |
|
||||
| 52 | 荣誉墙/成长档案导出 | `91:765` | — | 未实现 | 未修正,三期 |
|
||||
| 53 | 七维回复风格调节 | `93:6` | `mobile-uni/src/pages/user/practice/index.vue` | 按二期计划已实现首期形态;按 Figma 部分对齐 | 已有训练内“再严肃/更温柔/更细致/更专业”重生成;偏好持久化和七维设置属于后续范围 |
|
||||
| 54 | 优化前后结果对比 | `93:824` | — | 未实现 | 未修正,三期 |
|
||||
| 55 | 个人 AI 偏好设置 | `93:857` | — | 未实现 | 未修正,三期 |
|
||||
| 56 | 管理端团队偏好分布 | `93:940` | — | 未实现 | 未修正,三期 |
|
||||
| 57 | 开放问题榜首页 | `95:6` | — | 未实现 | 未修正,仅有 `knowledge_gap` 记录 |
|
||||
| 58 | 问题详情/全员回答 | `95:782` | — | 未实现 | 未修正,阶段二 |
|
||||
| 59 | 最佳答案/奖励结果 | `95:826` | — | 未实现 | 未修正,阶段二 |
|
||||
| 60 | 问题审核/激励规则 | `95:858` | — | 未实现 | 未修正,阶段二 |
|
||||
| 61 | AI 教练训练计划 | `97:5` | `mobile-uni/src/pages/supervisor/assign/index.vue` | 按二期计划已实现;按 Figma 部分对齐 | 已用主管派发、低分再练、每日三题和成长证据承载;独立 AI 教练编排属于后续范围 |
|
||||
| 62 | 自动场景任务/自动复盘 | `97:778` | `mobile-uni/src/pages/user/practice/index.vue`、`supervisor/review/index.vue` | 按二期计划已实现基础闭环;按 Figma 部分对齐 | 已有训练、评分、标注、复盘和再练;自动编排/自动复盘报告不属于当前二期必做 |
|
||||
| 63 | 积分/徽章/荣誉中心 | `97:823` | — | 未实现 | 未修正,三期 |
|
||||
| 64 | 企业发布申请 | — | — | 未实现 | 未修正,阶段二 |
|
||||
| 65 | 个人 AI 助理发布记录 | — | — | 未实现 | 未修正,阶段二 |
|
||||
| 66 | 个人 AI 助理报告大纲 | — | — | 未实现 | 未修正,阶段二 |
|
||||
| 67 | 个人 AI 助理 PPT 生成 | — | — | 未实现 | 未修正,阶段二 |
|
||||
| 68 | 企业知识发布审核列表 | — | — | 未实现 | 未修正,阶段二 |
|
||||
| 69 | 企业知识发布审核详情 | — | — | 未实现 | 未修正,阶段二 |
|
||||
| 70 | 个人 AI 助理运营/紧急审计 | — | — | 未实现 | 未修正,阶段二 |
|
||||
|
||||
## 已取消而不应补做
|
||||
|
||||
以下 Figma 清单中的“师徒关系”项目已经被业务会议否决,不应作为缺口继续开发:申请拜师、师傅池、固定师徒关系、互动计划、师傅认证、带徒福利等。当前替代方向是主管复盘闭环和后续开放问题榜。
|
||||
|
||||
## 当前优先级
|
||||
|
||||
1. **P0:主管角色路由**。本地页面存在,但线上主管账号仍可能进入员工首页。
|
||||
2. **P0:线上包追平当前源码**。员工首页、训练页和登录页存在明显视觉版本滞后。
|
||||
3. **P1:按本矩阵完成阶段一验收**。重点是员工训练、主管复盘、候选人面试、知识库和案例闭环。
|
||||
4. **P2:阶段二再做个人 AI 助理和开放问题榜**,先补 API、权限和数据模型,再做页面。
|
||||
5. **P3:量化、偏好、积分和荣誉**,等待稳定训练数据与人工校准后再实现。
|
||||
@@ -0,0 +1,34 @@
|
||||
# Figma 与线上 H5 差异矩阵
|
||||
|
||||
> 2026-07-13 基于线上 `https://peilian.njzhmj.top/h5/` 实测截图、现有 `mobile-uni` 实现与 Figma 文件 [银城员工端与个人 AI 助理设计](https://www.figma.com/design/30hFiKtieGYraOZvJPJcPd) 整理。
|
||||
|
||||
## 使用口径
|
||||
|
||||
- 线上版本是行为、接口、路由和真实数据状态的基线。
|
||||
- Figma 是视觉、信息层级和完整状态覆盖的目标基线。
|
||||
- 不以静态设计替代未实现的后端能力;所有新增状态必须对应现有接口或明确的建设中状态。
|
||||
- 本批先收敛登录页与员工训练主链路,主管端角色路由单独作为阻塞项处理。
|
||||
|
||||
## 差异矩阵
|
||||
|
||||
| 页面/流程 | 线上实测 | Figma 目标 | 当前判断 | 调整动作 | 验收口径 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 登录页 | 浅蓝灰背景、青绿色主按钮、卡片下方留白较大 | 银城红主色、紧凑表单、明确验证码行和状态反馈 | 视觉 token 未统一 | 主色统一为 `#E60012`;收紧卡片和纵向留白;保留手机号、验证码、发送中/失败/成功状态 | 390×844 无横向滚动;输入、验证码和登录按钮均可操作;错误文案不跳布局 |
|
||||
| 员工今日首页 | 首屏突出问答入口,今日安排和地图在下方;线上包体仍是蓝/绿/橙多色旧视觉 | 师傅区 → 今日安排 → 我的地图 → 成长摘要;红白轻卡片体系 | 行为已可用,线上发布包落后于当前源码/Figma | 保留真实问答和任务接口;以当前源码的员工端 token 为准,逐步替换线上旧包 | “开始训练”进入独立训练页,不在首页插入训练面板 |
|
||||
| 员工训练入口 | 首页任务按钮已有 `switchTab('/pages/user/practice/index')` | 训练中心首屏为场景模拟、开始练习、最近练过,每日三题后置 | 路由方向正确,首屏优先级需守住 | 保持独立训练页;场景卡和开始练习固定在首屏,最近练过紧随其后,每日三题后置 | 点击开始练习后进入 active 对话区;提交/结束/结果链路不回归 |
|
||||
| 训练中 | 真实对练、录音/文件兜底、SOP 求助、结束评分均已存在 | 角色对话、教练提示、结果卡分层展示 | 行为完整,视觉层级需统一 | 只调整卡片层级、按钮状态和提示区域,不改 `/start`、`/turn`、`/finish` 契约 | 开始、提交回应、求助、结束评分、失败回滚均可验证 |
|
||||
| 主管端 | 本次以主管手机号登录后仍落到员工端,未能进入主管首页 | 已有主管工作台、待复盘、复盘详情、能力与派发页面 | 角色/岗位路由是阻塞项 | 先排查线上岗位识别与路由分流,再进行主管视觉迁移 | 主管账号可稳定进入主管首页;普通员工仍被拒绝主管接口 |
|
||||
| 个人资料库/问题榜 | 线上当前入口未能从员工首页验证 | Figma 已有资料库、引用回答、问题榜和激励状态 | 属于后续建设目标,不伪造上线 | 等对应 API/入口具备后再实现;当前保留建设中或既有真实入口 | 有真实接口和权限边界后再纳入线上验收 |
|
||||
|
||||
## 本批实施边界
|
||||
|
||||
1. 登录页只改视觉 token、间距和状态表现,不改短信登录接口、认证存储和原路跳转。
|
||||
2. 员工训练页只强化入口和状态层级,不重写训练状态机,不新增后端字段。
|
||||
3. 主管端不通过前端硬编码角色解决;先以真实手机号、岗位快照和路由结果取证。
|
||||
4. Figma 的 `LXGW WenKai TC` 与线上系统字体存在实现差异。本批代码继续使用现有系统字体栈,避免未加载字体造成线上回退;如要全面采用 Figma 字体,另开字体资源与性能评估。
|
||||
|
||||
## 当前验收证据
|
||||
|
||||
- 线上登录页和员工首页截图:`/Users/yuanjiantsui/.codex/visualizations/2026/07/13/019f5984-0790-7c01-91f2-e93cca023ae0/`
|
||||
- Figma 员工训练前、主管工作台、个人资料库、问题榜截图:同一目录下的 `figma-*.png`
|
||||
- 设计资产总清单:`docs/FIGMA_DESIGN_INVENTORY.md`
|
||||
@@ -8,6 +8,8 @@
|
||||
|---|---|
|
||||
| [DEV_SETUP.md](DEV_SETUP.md) | 本地端口、账号、启动步骤、基础链路验证、移动端 H5 静态发布 |
|
||||
| [FIGMA_DESIGN_INVENTORY.md](FIGMA_DESIGN_INVENTORY.md) | Figma 页面节点索引、设计批次范围、取消项和全文件一致性审计结果 |
|
||||
| [FIGMA_DESIGN_SYSTEM_GUIDE.md](FIGMA_DESIGN_SYSTEM_GUIDE.md) | 员工端通用视觉元素、业务元素、状态映射和 LLM 组页规则 |
|
||||
| [FIGMA_ONLINE_DELTA.md](FIGMA_ONLINE_DELTA.md) | Figma 目标与线上 H5 实测差异矩阵、当前实施边界和验收口径 |
|
||||
| [DEMO_ACCEPTANCE.md](DEMO_ACCEPTANCE.md) | 一期 MVP 演示脚本、录屏兜底、MVP 演示流验收清单 |
|
||||
| [API_INTEGRATION.md](API_INTEGRATION.md) | 后端 API 对接顺序、正式试点 CSV、移动端训练记录/复盘详情、候选资料上传/审核、SOP 上传解析接口 |
|
||||
| [RUOYI_AI_INCREMENTAL_MIGRATION.md](RUOYI_AI_INCREMENTAL_MIGRATION.md) | 从 `ageerle/ruoyi-ai` 分片迁移知识库、模型能力、文档解析、Qdrant/RAG 和 chat 的执行边界 |
|
||||
|
||||
Reference in New Issue
Block a user