hr-system/docs/01-design/iteration1-task-breakdown.md

115 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 一期批次1总体设计 —— 技术可行性与开发任务拆解hr-web
- 版本v2.0批次1设计定稿v2.0 变更:对齐 SRS v3.1 —— 范围扩入编制(F16)/项目式(F17)、新增降级项任务、部署任务与开放接口桩任务;任务编号 T01~T27可直接用于 develop 角色创建开发任务)
- 状态:**设计定稿批次1评审修订版**
- 基线:`docs/01-design/architecture.md`(架构)+ `database-design.md`49 表)+ `api-design.md`(端点清单)+ `ui-design.md`(页面结构)
- 需求基线:`docs/00-requirement/requirement-spec.md`SRS v3.1+ `iteration1-function-detail.md`F01~F1581 条)+ approved-features.mdFEAT-B1-01~12
## 1. 技术可行性说明
### 1.1 技术栈成熟度ocai 规范)
| 能力诉求 | ocai 设施 | 成熟度结论 |
|---|---|---|
| 声明式 CRUD 页面 | json/*.json + xls2ui 自动生成 DataViewer/Form/Tree | 成熟产线既有模式批次1约 25 个 CRUD 页面零手写 |
| 组织树/架构图 | Tree widget + org_unit parent_id 自引用 + as_of 历史查询 | 可行;历史架构按 effective_date/expire_date + org_unit_change 回放 |
| 自定义字段(花名册/组织) | EAV 双表 + field_def 元数据驱动表单渲染 | 可行;列表页"主表分页+值表批量拼装"规避 EAV 性能问题 |
| 审批引擎 | flow_def/node_def JSON 配置 + flow_instance/task 状态机 | 可行;一期仅串行节点 + any/all 通过规则,不做并行分支(满足 F10 验收);四类人事流程模板 init/data.json 预置 |
| 审批通过自动回写 | biz_type+biz_id 关联 + ServerEnv 注册回调 hook | 可行roster_writeback 唯一入口,回写后联动 headcount_check 与 timeline |
| 批量导入导出 | ahserver 后台任务 + openpyxl + files/ 结果文件 | 可行500 行 ≤30s 指标NFR-1在 100 人量级轻松满足 |
| 数据范围权限 | rbac 路径级 + sys_data_scope组织/字段双维度)查询叠加 | 可行;查询/报表/导出三处强制叠加 |
| 脱敏/审计 | roster_field_def.sensitive + sys_audit_log 前后 JSON | 可行 |
| 图表报表 | bricks Chart widgets | 可行;聚合 SQL 只读查询≤3s 指标满足 |
| 提醒推送 | cron 扫描 remind_scan + sys_message 站内消息 | 可行≥6 场景;短信/邮件 send_channel 预留 |
| 编制实时计数 | 异动事件触发重算 + headcount_snapshot 快照 | 可行100 人规模事件内同步重算满足"1 分钟内刷新" |
| 项目式组织 | org_project 自引用 + org_project_post 关联表 | 可行;横向职务复用 org_job(job_category=horizontal) |
| 入职登记链接/二维码 | token + tmpl 页面 + qrcode 图片生成files/ | 可行;内网 token 鉴权免登录 |
| 合同文本生成 | openpyxl/python-docx 模板占位符替换 | 可行;一期 docx/pdf 打印下载,电子签二期 |
### 1.2 规模与性能
100 人账号、单实例部署ahserver:9182 + MariaDB(hrs) + Redis。最大表量级花名册 2000 行(含离职)、字段值 ≤2000×100=20 万行、审计日志年级 ≤10 万行、编制快照 365×细分项数。全部查询在索引覆盖下远低于 500ms 指标。
### 1.3 主要风险与对策
| 风险 | 等级 | 对策 |
|---|---|---|
| EAV 自定义字段在列表页的筛选/排序复杂度 | 中 | 筛选支持"主表字段 + 至多 3 个自定义字段等值匹配",排序仅主表字段;已知限制写入 UAT 说明 |
| 审批引擎配置化过度导致返工 | 中 | 锁定"串行节点、any/all、字段权限、抄送"能力边界;并行/条件分支留 flow_node_def JSON 扩展位 |
| staff-mgr 旧数据语义差异status/加密算法) | 中 | 迁移脚本内置映射表 + 核对报告 + UAT 双库比对;迁移范围待 PM 确认SRS Q3脚本支持 --scope 参数 |
| 6 模块并行开发契约漂移 | 中 | T01 先行冻结表定义 models JSON 与 api-design 端点签名,变更走设计评审 |
| 提醒场景字段依赖(健康证/社保等花名册字段未建) | 低 | init/data.json 预置 REMIND_SCENE 对应字段定义remind_scan 按 field_def 取数 |
| 编制占编范围条件表达力 | 低 | scope_json 采用 {conds:[{field,op,value}]} 结构,支持等值/包含;复杂表达式二期扩展 |
### 1.4 降级项任务落点SRS §9批次1相关
| 降级项 | 一期落点任务 |
|---|---|
| D1 身份证读卡→手工录入 | T06证件字段组/T13入职表单证件分组/T15档案证件展示脱敏 |
| 扫码入职→内网登记链接/二维码 | T13entry_register 页面+token+二维码) |
| D3 钉钉交接→占位项 | T17交接项 dingtalk_resource 类型手工登记) |
| D4 电子签→模板文本+桩 | T19contract_text_gen + esign_stub |
| D9 短信→站内兜底 | T16send_channel=sitesms/email 枚举预留) |
| 考勤/绩效/工资条桩位 | T10attendance_* 表单桩)/T21工作台桩位卡片 |
| API 开放接口预留 | T26sys_openapp 表 + /openapi/v1/ping 桩) |
## 2. 开发任务拆解T01~T27契约先行
> 依赖关系T01~T02 为契约冻结阶段,全量先行;其后按模块并行。工作量单位:人日(估算,供 PM 排期。每个任务含验收对照F#/FEAT 编号develop 角色可直接按任务建卡。
### 阶段0 契约与脚手架
| 编号 | 任务 | 内容/产出 | 验收对照 | 依赖 | 估时 |
|---|---|---|---|---|---|
| T01 | 数据契约冻结 | 6 模块仓库建仓hr_org/hr_roster/hr_flow/hr_contract/hr_reporthr-system 复用既有仓);**49 张** models/*.json 全量提交json2ddl 生成 DDL 导入 hrs 库验证init/data.json 字典(含 HEADCOUNT_CYCLE/PROJECT_STATUS/ID_SOURCE 等新增字典) | database-design §4 全表 | — | 5 |
| T02 | 应用脚手架 | hr-web 应用仓app/hr_web.py、conf/config.json 含 processors/indexes/session/databases.hrs、build.sh、systemd unitappbase/rbac 加载验证;登录走通;内置 admin+四角色初始化 | SRS §5.2-4 | T01 | 2 |
### 阶段1 主数据与底座(可并行)
| 编号 | 任务 | 内容/产出 | 验收对照 | 依赖 | 估时 |
|---|---|---|---|---|---|
| T03 | hr-org 组织管理 | org_unit CRUD/树/停用/移动(子树+员工联动、org_field_def 自定义字段、org_unit_change 时间轴、org_import≥200行、org_tree.ui/org_chart.uias_of+导出)、合同公司 company CRUD | F01 全 6 项 + FEAT-B1-02 | T01,T02 | 5 |
| T04 | hr-org 职位职级 | org_job(含 job_category 横向位)/position/sequence/grade_level/grade_rank CRUD + 停用启用联动 + 导入导出 + options 端点 | F02 全 5 项 + FEAT-B1-03 | T03 | 3 |
| T05 | hr-roster 字段体系 | roster_field_group/field_def/type_rule/empno_rule 配置页与端点、工号生成器(多规则+冲突报错、field_config.ui 拖拽排序 | F03 验收 1/3/6 | T01,T02 | 4 |
| T06 | hr-roster 花名册主体 | roster_employee CRUD**含证件字段组手工录入 D1**、EAV 值表读写、roster_list/employee_detail/timeline、脱敏与字段可见、自助修改+审核、复职 prev_employee_id 关联 | F03 验收 2/4/5/7 + F04-4/5 + SRS §2.2-4 | T05,T03,T04 | 6 |
| T07 | hr-roster 导入导出 | roster_import新增/修改≥500 行含更新匹配)、模板生成(按字段定义+类型规则、roster_export字段/顺序/as_of强制数据范围 | F03 验收 8 | T06 | 3 |
| T08 | hr-system 权限底座 | 角色/管理员/数据范围sys_data_scope 双维度叠加、get_data_scope 注册、各模块查询/报表/导出叠加、role_admin.ui/data_scope.ui | F11 全 4 项 + SRS §2.2-1/2/3 | T02 | 4 |
| T09 | hr-system 审计底座 | write_audit_log全量写操作含导入导出/审批/登录,前后值+IP+ audit_log_list.ui 详情对比 | F12 全 4 项 + SRS §2.2-5 | T02 | 2 |
### 阶段2 审批引擎(关键路径)
| 编号 | 任务 | 内容/产出 | 验收对照 | 依赖 | 估时 |
|---|---|---|---|---|---|
| T10 | hr-flow 引擎核心 | flow_form_def/flow_def/flow_node_def/flow_role 配置(含考勤桩位 attendance_*、flow_start 状态机、task 生成与流转、flow_match、回调 hook 机制、init 预置人事四类流程模板 | F10 验收 1/2/3 + FEAT-B1-01 ①②③ | T02,T08 | 6 |
| T11 | hr-flow 审批界面 | todo/done/mine/received 列表、inst_detail 动态表单渲染节点字段权限、approve/reject/forward/withdraw、inst_print A4 | F10 验收 6/7 + F14-4 | T10 | 4 |
| T12 | hr-flow 查询导出 | inst_query/inst_export、审批角色数据范围生效验证 | F10 验收 3/6 + FEAT-B1-01 ④ | T10,T08 | 2 |
### 阶段3 入转调离与合同(依赖 T10 回调,可部分并行)
| 编号 | 任务 | 内容/产出 | 验收对照 | 依赖 | 估时 |
|---|---|---|---|---|---|
| T13 | 入职管理 | entry_approval含证件手工录入/entry_manual批量/**登记表邀请token+二维码+entry_register.tmpl扫码入职降级**/entry_register_submit/黑名单校验与高亮/入职通知/复职匹配 | F04 全 7 项 + FEAT-B1-05 | T10,T06 | 6 |
| T14 | 转正管理 | regular_apply自助/代发)/regular_manual/回写花名册(状态+转正日期)/转正提醒接入probation_end_date 提前 7 天可配) | F05 全 4 项 + FEAT-B1-06 转正 | T10,T06,T16 | 3 |
| T15 | 调动管理 | transfer_apply批量 ≥20 人明细)/transfer_cancel/回写档案+时间轴/调动查询(状态/类型/日期)/编制联动提醒接入 | F06 全 4 项 + FEAT-B1-06 调动 | T10,T06 | 4 |
| T16 | 提醒引擎 | sys_remind_rule≥6 场景)/care_config生日/周年文案)/remind_scan转正/合同/生日/周年/退休/离职生效扫描)+ sys_messagesend_channel=sitesms/email 预留 D9 | F15 提醒类验收 1/4/5 | T02 | 3 |
| T17 | 离职管理 | leave_apply/leave_manual/交接项(**含 dingtalk_resource 占位手工登记 D3**/到期自动生效leave_effect/离职证明 PDF 生成下载/一键黑名单/离职员工信息存储可查可改 | F07 全 7 项 + FEAT-B1-07 | T10,T06,T16 | 5 |
| T18 | 兼岗管理 | concurrent_apply/兼岗记录维护/审批通过自动同步(状态 active供薪酬引用 | F08 全 3 项 + FEAT-B1-04 兼岗 | T10,T06 | 2 |
| T19 | 合同台账 | contract_type/template/info CRUD + 批量导入 + 合同审批(新签/续签/变更/终止)+ **contract_text_gen 模板生成文本D4 打印下载)** + 到期提醒规则(误差 ≤1 天)+ esign_stub/esign_status 预留 | F09 全 6 项 + FEAT-B1-08 | T10,T06,T16 | 4 |
### 阶段4 编制/项目式/报表/工作台/服务与收尾
| 编号 | 任务 | 内容/产出 | 验收对照 | 依赖 | 估时 |
|---|---|---|---|---|---|
| T20 | 编制管理 | headcount_scheme/item CRUD + scope_json 占编范围编辑器 + headcount_check 异动联动(提醒不硬拦截)+ snapshot 快照/历史回溯 + headcount_board/config.ui | F16 全 6 项 + FEAT-B1-10 | T06,T13~T18 | 4 |
| T21 | 项目式组织 | org_project/org_project_post CRUD + project_tree.ui + 横向职务(job_category=horizontal)维护与 options + 到期自动标识 | F17 全 3 项 + FEAT-B1-11 | T04,T06 | 3 |
| T22 | 人事报表 | roster/entry/regular/transfer/leave 五类分析端点(维度可配置)+ report_board.ui 图表 + report_export与页面一致+ 全程数据范围 | F13 全 6 项 + FEAT-B1-12 | T06,T13~T18 | 4 |
| T23 | 工作台 | workbench_employee/manager/admin 聚合端点与三页面(**工资条/绩效/考勤桩位卡片**+ 消息铃铛 | F14 全 5 项 + FEAT-B1-09 工作台 | T10,T11,T16 | 3 |
| T24 | 员工服务 | 公告/政策发布与查询(查阅范围/下载权限、关怀文案配置、message_list | F15 服务类验收 1~3 + FEAT-B1-09 服务 | T16 | 2 |
| T25 | staff-mgr 迁移 | migrate_staff_mgr.py映射/解密重加密/幂等/--scope 参数/核对报告总数+抽样、UAT 双库比对、切换演练 | NFR-8 + SRS §11-Q3 参数化 | T06,T09 | 3 |
| T26 | API 开放预留与部署 | sys_openapp 表 + /openapi/v1/ping 桩端点部署脚本systemd/备份 crontab/监控探活脚本9182 端口测试+生产HTTPS 升级路径文档 | FEAT-B1-01 ⑦ + SRS §8 + NFR-3/5 | T02 | 3 |
| T27 | 集成联调与验收 | F01~F17 共 **90 条**验收项端到端回归;性能抽测(列表 ≤500ms/报表 ≤3s/导入 500 行 ≤30s权限与脱敏抽测SRS §10-2load_path 全路径注册核查;降级项 D1/D3/D4/D9/扫码登记 专项验证 | SRS §10 验收总纲 | 全部 | 5 |
**合计估算:约 92 人日**(不含 PM 排期缓冲。关键路径T01→T02→T10→T11→T13/T15/T17→T20/T22→T27。
## 3. 交付与验收定义
- 每个 T 任务交付模块仓代码models/json/wwwroot/init/scripts/skill/SKILL.md+ 对应功能验收项自测记录。
- 契约变更(表结构/端点签名)必须回改 docs/01-design 四份文档并评审。
- T27 通过标准90 条验收项全部通过P0FEAT-B1-01~05100% 通过;降级项按 SRS §9 验证桩位与降级方案生效D1 手工录入+脱敏、D3 交接占位、D4 模板文本+NOT_ENABLED 桩、D9 站内兜底、扫码登记内网闭环);性能/权限/脱敏抽测记录齐备SRS §10
- 批次1完成即满足批次2薪酬进入条件花名册/组织/流程/报表基线 + 权限日志基线 + 消息通道SRS §1.4)。