10 KiB
岗位绩效配置本地验收(2026-10-28)
本次实现仅位于隔离工作树 gongxiangp2-salary-config-20261028,基于 8929a70f75f7959e859c5c56dc50a7747c54927b。未提交、推送或发布,未连接生产数据库执行写入。
已实现
- 后台配置下为人员薪资配置、岗位绩效配置两个平级入口。人员在稳定岗位 ID 下维护,薪资明细不再使用调研月度岗位分配作为人员归属;原调研分配未修改。
- 三个初始方案使用确认的工作簿结构,包含全部零权重指标;编导归 AI 策划入口,技术设计师有独立第五入口。
- 岗位、维度、KPI 整表维护;岗位和人员软删除、有版本冲突保护与审计。岗位有在岗人员时不能删除。
- 维度和 KPI 权重分别精确校验至 0.01%,必须各合计 100%;不自动归一化。空岗位可保存。
- 最新配置与人员关联适用于所有月份。单次查询在 RepeatableRead 快照内读取岗位配置、基础档案及已提交调研,避免不同版本的权重混用。
- 同人员同来源调研多份取均值,按两层权重计算,最终保留两位小数;正权重缺失阻断总分,零权重不阻断。未接入来源保留“——”。
- 岗位配置导出包含已保存的维度/KPI、两层权重、综合占比、说明和来源。薪资模板导出为五入口空白模板,有多个配置岗位时分别建表;两类导出均不包含人员工资或调研响应。
- 所有接口重新查数据库权限;四个指定账号仅可读/导出,只有当前超管可写;成功及失败响应均为 private, no-store。
本地数据库
仅对 127.0.0.1:55439/salary_isolated_20261023 执行新迁移与初始化。操作前保存私有备份 .private/salary-before-position-config.dump。
迁移 20261028090000_salary_position_configuration 已执行并在本地迁移历史标记。初始化 3 个岗位,按稳定人员 ID 和已核实分配关联现有 7 人,无歧义记录。再次初始化返回 initialized=false,未覆盖配置;软删除岗位初始化键仍保留,不自动重建。
七人基础信息及三项工资的 SHA256 校验值在关联岗位前后相同。美术流程积分服务未修改;9 月与10月确认点位回归通过,10月不启用测试回退。
另建仅合成数据的 salary_positions_contract_20261028,通过33项真实数据库断言:CRUD、同名/重复人员拒绝、岗位删除保护、转岗保留工资、并发更新仅一项成功、软删除、审计及数据库实时权限撤销。该测试库不含真实人员/工资。
验证证据
- 17 个相关测试文件,168 项测试通过,含新接口权限、伪造旧超管会话、并发草稿保护、精确权重、动态分表、历史月重算、来源均值、导出重读及原薪资回归。
- TypeScript 检查通过;生产构建通过(既有图片优化与浏览器数据库提示保留)。
- 浏览器本地操作验证:新增带维度/KPI岗位、保存、刷新持久化、删除确认及软删除;临时验收岗位已删除,仅保留审计。
- 实际下载并重读岗位 Excel,3 张可见工作表,无公式。自动化重读另检查空薪资行、冻结、列头与外链。
- 桌面与390px手机审计:document.scrollWidth 等于视口宽度;薪资宽表在348px容器内横滚;纵向表单、焦点、错误定位、未保存关闭提醒和加载反馈可用。
- Impeccable 静态检测无发现。独立审阅要求补齐权重错误定位及过期表面说明;两项已修复并回归。截图及详细日志保存在忽略的
.private/,不进入代码仓库。
最终独立复核结论:权重错误摘要、聚焦滚动、字段关联及 KPI 分组错误均为 resolved;DESIGN.md 和设计记录更新为 resolved。remaining=clear,无待处理项。
曾误用当前 Jest 不支持的路径筛选选项而运行全库测试,暴露现有无关测试失败;最终采用显式 --runTestsByPath 验证本次相关17个文件。未将无关失败宣称为全库通过。
本地入口
http://localhost:4321/workspaces/organization/performance-review?view=configuration&config=performance&month=2026-10
开发服务使用独立依赖目录;免扣仍读取既有权威看板来源,未把本地旧免扣文件作为替代。没有增加奖金、提成、评分档位、月度结算或人工评分。
追加:人员配置岗位操作与导出
人员薪资配置新增就地“新增岗位”“删除岗位”入口,复用原有稳定岗位 ID、版本控制、软删除审计及人员删除保护。新岗位可先建立空绩效方案;新建后自动选中,保留月份。删除成功返回全部人员并将焦点移至仍存在的人员配置标题。
“导出当前岗位人员”“导出全部人员”输出已保存的岗位与七项基础字段,Excel 每个岗位一张表,另按需列出未分配人员;空岗位输出明确空表。金额导出为两位小数数值,文本按纯文本写入,不导出内部 ID、版本、审计或调研响应。原“导出薪资模板”保持空白。新增导出接口独立校验当前数据库权限,事务内再次验权,并通过 RepeatableRead 同时读取岗位及人员;所有响应 private, no-store。
追加验证:12 个相关测试文件共118项通过,含新增岗位失败保留草稿、有人员禁止删除、删除409、导出重复点击保护与失败重试、四指定账号导出、撤权拒绝、参数校验及Excel重读;补充删除后焦点断言后,该组件10项测试再次通过。类型检查及最终构建通过。实际本地下载文件重读为3个可见工作表、7人、0公式、0隐藏表;桌面和390px手机操作及表单已审计。临时“本地岗位入口验收”和“本地岗位焦点验收”仅在隔离本地创建,验证后软删除并保留审计,正式三岗与人员档案不变。独立复核要求的删除后稳定焦点恢复最终为 resolved,remaining=clear。本次仍未提交、推送、部署或写入生产。
追加:人员配置公共岗位工具栏
人员页顶部公共操作栏按“岗位选择、导出当前岗位人员、导出全部人员、新增岗位”排列,与下方岗位人员内容使用独立语义区域。“新增岗位”创建两个配置入口共用的岗位;下方保留岗位名称、人数、人员列表、新增人员及条件显示的删除岗位。全部人员和未分配视图不显示删除岗位。
岗位选择包含全部人员、现有岗位、未分配,以路由参数驱动并保留月份;与左侧选中状态、刷新及浏览器前进后退同步,默认仍为全部人员。新增成功后选中新岗位,沿用原有接口、导出、权限、版本与删除保护,没有数据库结构变更。人员弹窗关闭后恢复到仍存在的触发按钮,避免键盘焦点落到页面主体。
本轮验证:12个相关测试文件共121项通过,类型检查、构建及差异空白检查通过。构建退出码0,日志仍有项目既有的图片Lint、Redis未连接与动态路由预渲染提示。真实本地浏览器验证岗位切换、刷新、前进后退、月份保留、当前岗位导出、新增人员默认岗位、有人员禁止删除,以及岗位/人员弹窗焦点恢复;未修改实际人员档案。权限、冲突、失败重试及导出内容通过相关回归测试覆盖。
桌面1280×900及手机390×844审计通过,页面宽度分别为1280与390,手机选择器350px、各公共按钮至少44px高。最终手机截图曾命中工作壳200ms断点过渡帧,等待稳定布局后重新核验,无残留侧栏间距或横向溢出;独立复核最终verdict=resolved、remaining=clear。截图保存在本地私有目录 .private/ui/personnel-toolbar-desktop.png 与 .private/ui/personnel-toolbar-mobile.png。
本轮仅本地改动与展示,未提交、推送、部署或写入生产;没有执行迁移或初始化。
追加:岗位绩效配置岗位子导航
“岗位绩效配置”下方展开共享岗位,顺序与顶部选择器相同,仅显示名称;没有全部人员或未分配项。顶部选择器与子导航都通过config=performance&position=稳定ID切换,保持月份,左侧选中态和右侧方案使用同一有效岗位。缺省或无效参数通过replace选中首个有效岗位,空列表保留现有空状态。新增保存后选中返回的岗位ID,改名通过共享配置刷新,删除当前岗位后进入剩余首岗或空状态。人员配置未分配项补齐config判定,避免无效绩效参数错误高亮人员项。共用岗位弹窗在自动聚焦前记录触发控件,关闭时恢复焦点;删除后聚焦仍存在的岗位标题。
验证:13个相关测试文件共135项通过,类型检查、构建及差异空白检查通过。新增覆盖子导航顺序、无额外选项、默认/非法参数、加载/失败不重写路由、选择器路由更新、动态改名、新增选择、删除剩余首岗/空状态、焦点恢复;既有权限、导出及人员配置回归通过。构建退出码0,保留项目既有Lint、Redis缺失及动态预渲染提示。
本地浏览器实际验证子导航点击、选择器切换、刷新、前进后退、九月参数保留、无效岗位自动选首岗、键盘Enter导航及弹窗关闭焦点。合成临时岗位“本地导航验收岗位(长名称测试)”新增后自动选中,改名后两处导航同步;清理时软删除,保留审计,正式三岗与人员档案不变。当前岗位导出首次读取失败后重试200并显示生成成功。
桌面1280×1000和手机390×844界面审计通过,手机岗位两列,普通触控入口44px高、长名称56px高,页面宽390;绩效表仅区域内部横向滚动(区域348px、内容920px)。独立复核material_fixes=clear。最终截图位于.private/ui/performance-nav-desktop.png、performance-nav-mobile.png,长名称验收截图为同目录performance-nav-long-desktop.png、performance-nav-long-mobile.png。本轮没有数据库结构变更、迁移或初始化,未提交、推送、部署或写入生产。