日期:2026-07-06 状态:已确认 视觉方向:Surgical Observatory / 手术观测台 适用范围:全部 Web 页面、必要的后端接口与 SQLite 数据迁移
本轮重构不只统一视觉,而是以前端体验为出发点,重新梳理 OKR 制定、审核、执行、绩效评审、面谈、确认与申诉的完整闭环。
完成后系统应具备以下特征:
DRAFT → OKR_ALIGN → EXECUTING → ASSESSING → ARCHIVED
SUPER_ADMIN 保留绕过能力。audit_correction,不得覆盖审计历史。schema_migration 前向迁移。设计关键词:
禁止以下表现:
| 用途 | 建议值 | 规则 |
|---|---|---|
| 外壳最深色 | #120d4a |
主导航轨、底部账户区 |
| 外壳基础色 | #1d166b |
上下文导航 |
| 品牌主色 | #2b1f99 |
主要操作、关键选中态 |
| 医疗青 | #3ad4d8 |
流程连线、实时状态、聚焦 |
| 页面背景 | #f5f8fa |
冷白微蓝灰 |
| 主表面 | #ffffff |
表格和主要工作区 |
| 次级表面 | #f8fafc |
表头、分组、只读区 |
| 主文字 | #18212f |
标题、主要数据 |
| 次级文字 | #5f6b7a |
说明和次要数据 |
| 边界 | #dfe7ee |
控件、区段和表格边界 |
品牌主色只承担关键动作和选中态;医疗青只承担流程、实时状态和交互焦点。警告、危险、成功继续使用语义色,不使用品牌色替代业务状态。
@element-plus/icons-vue。prefers-reduced-motion。桌面端采用选中视觉稿中的双层导航:
一级模块:
二级页面映射:
| 一级模块 | 二级页面 |
|---|---|
| 工作台 | 当前周期、我的待办、团队风险 |
| 目标与对齐 | 我的 OKR、团队 OKR、OKR 对齐、执行进度 |
| 绩效评审 | 我的绩效、待我评审、绩效沟通、绩效申诉、历史绩效 |
| 系统管理 | 考核周期、组织架构、绩效模板、考核维度、操作日志 |
通知从独立主导航项调整为系统状态线入口,保留原有通知页面和深链接。
页面顶部使用 36px 状态线,展示:
每个页面使用统一的 PageContextBar:
标题、周期、状态和主要操作不再散落于独立 hero、横幅或卡片中。
≥1280px:完整双层导航。1024–1279px:主导航轨常驻,上下文导航收起为弹出面板。<1024px:导航使用抽屉,工作台矩阵降级为纵向分组。登录后默认进入新增的工作台页面,不再直接进入周期列表。
工作台包含:
待办类型:
点击待办必须直接进入具体周期、人员和业务对象,不允许只跳到泛列表页。
新增 Pinia workspace store,统一维护:
规则:
periodId 是可分享、可刷新的最终来源。periodId 时,使用 store 中最近选择的有效周期。统一流程:
周期发布 → 上级目标 → 我的制定 → 上级审核 → 执行更新 → 进入考评
采用三段式工作台:
能力:
提交前检查:
使用列表和详情分栏:
驳回必须填写原因。通过操作需要明确展示被审核的人员和目标数量。
使用树形矩阵:
右侧检查器展示:
个人和团队 KR 使用统一数据矩阵。
点击 KR 行打开详情抽屉:
统一流程:
员工自评 → 上级终评 → 发布结果 → 面谈反馈 → 员工确认或申诉 → 归档
同一页面承载:
页面根据 workflowState 只突出当前主操作,其他历史阶段以只读方式折叠展示。
采用选中视觉稿的核心布局:
诊断规则必须基于真实数据,例如:
面谈记录必须绑定:
上级记录亮点、问题、改进建议和面谈纪要;员工提交回复后,上级可以关闭面谈。
申诉详情同时展示:
任何修正都必须填写原因并写入 audit_correction。
提供正式历史接口,一次返回最近周期结果,不再由前端逐周期调用单期结果接口。
新增或重构以下通用组件:
| 组件 | 职责 |
|---|---|
AppShell |
双层导航、状态线和响应式外壳 |
ModuleRail |
一级模块图标导航 |
ContextNav |
模块内二级页面导航 |
PageContextBar |
标题、周期、筛选和主操作 |
WorkflowRail |
OKR—绩效阶段轨道 |
SplitWorkbench |
列表、主区、详情检查器布局 |
DataMatrix |
表格、树表、评分矩阵基础 |
InspectorPanel |
右侧上下文详情 |
StickyActionBar |
总分、差异、状态和提交 |
StatusLabel |
色点与状态文字 |
MetricBar |
进度和分数构成 |
EmptyState |
无数据和下一步指引 |
ErrorState |
可恢复错误 |
SkeletonState |
页面加载状态 |
页面归入四类:
新增:
GET /api/workspace/overview?periodId={id}
响应包含:
allowedActions新增:
GET /api/okr/workbench?periodId={id}
响应包含:
workflowStateallowedActionsversion新增或扩展写接口:
所有写接口使用明确 DTO,并校验版本号。
新增:
GET /api/scores/review-queue?periodId={id}GET /api/scores/history扩展现有评分详情响应,一次返回:
workflowStateallowedActionsversion业务错误继续使用统一响应结构,并补充:
codemessagefieldErrorsdetailsconflictVersion版本冲突返回 HTTP 409。
新增 performance_score_item:
| 字段 | 说明 |
|---|---|
id |
主键 |
score_id |
对应 performance_score |
item_type |
KR 或 DIMENSION |
reference_id |
KR 或维度 ID |
name |
提交时名称快照 |
max_score |
满分或权重基准 |
score |
实际评分 |
description |
说明或评语 |
sort_order |
展示顺序 |
snapshot_json |
必要的证据快照 |
created_at |
创建时间 |
updated_at |
更新时间 |
comments_json 继续保留,作为兼容字段和历史快照。
终评分状态明确为:
SUBMITTED → PUBLISHED → CONFIRMED
面谈和申诉继续独立维护状态,但通过周期、用户和终评分建立可靠关联。
补充高频查询索引:
迁移延续现有 schema_migration。
要求:
data/backups/。comments_json 回填到 performance_score_item。迁移必须使用包含旧结构和历史数据的数据库副本进行测试。
数据流分三层:
页面不得:
写操作完成后,优先局部更新当前对象;涉及阶段、待办或权限变化时刷新工作台上下文。
使用 Playwright 覆盖:
每个阶段独立提交并保持可回退。