hr-system/.tmp_tb.txt

61 lines
5.1 KiB
Plaintext
Raw 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)
- 版本:v1.0(迭代1-总体设计配套文档)
- 状态:提交审核
- 基线:`docs/01-design/architecture.md`(架构)+ `database-design.md`(43 表)+ `api-design.md`(端点清单)+ `ui-design.md`(页面结构)
- 需求基线:`docs/00-requirement/requirement-spec.md`(SRS v2)+ `iteration1-function-detail.md`(F01~F15,81 条验收项)
## 1. 技术可行性说明
### 1.1 技术栈成熟度(ocai 规范)
| 能力诉求 | ocai 设施 | 成熟度结论 |
|---|---|---|
| 声明式 CRUD 页面 | json/*.json + xls2ui 自动生成 DataViewer/Form/Tree | 成熟(产线既有模式);迭代1约 20 个 CRUD 页面零手写 |
| 组织树/架构图 | Tree widget + org_unit parent_id 自引用 + as_of 历史查询 | 可行;历史架构靠 org_unit_change 时间轴回放/有效期区间过滤 |
| 自定义字段(花名册/组织) | EAV 双表 + field_def 元数据驱动表单渲染 | 可行;列表页采用"主表分页+值表批量拼装"规避 EAV 性能问题 |
| 审批引擎 | flow_def/node_def JSON 配置 + flow_instance/task 状态机 | 可行;迭代1仅串行节点 + any/all 通过规则,不做并行分支(满足 F10 验收) |
| 审批通过自动回写 | biz_type+biz_id 关联 + ServerEnv 注册回调 hook | 可行;模块宿主无关原则下经 load_xxx() 注册函数互调 |
| 批量导入导出 | ahserver 后台任务 + openpyxl + files/ 结果文件 | 可行;100 人量级同步/准同步处理即可 |
| 数据范围权限 | rbac 路径级 + sys_data_scope(组织/字段双维度)查询叠加 | 可行;复用 rbac-permission-initialization-pattern |
| 脱敏/审计 | roster_field_def.sensitive + sys_audit_log 前后 JSON | 可行;替代 staff-mgr 硬编码 MaskUtil |
| 图表报表 | bricks Chart widgets(bricks-chart-widgets 技能) | 可行;聚合 SQL 只读查询 |
| 提醒推送 | cron 扫描 remind_scan + sys_message 站内消息 | 可行;短信/邮件通道预留 send_channel 字段 |
### 1.2 规模与性能
100 人账号、单实例部署(nginx + ahserver + MySQL + Redis)。最大表量级:花名册 100 行、字段值 ≤100×100=1 万行、审计日志年级 ≤10 万行。全部查询在索引覆盖下远低于 500ms 指标;组织树/主数据全量加载无分页压力。导入导出 100 人 × 50 字段 openpyxl 秒级完成。
### 1.3 主要风险与对策
| 风险 | 等级 | 对策 |
|---|---|---|
| EAV 自定义字段在列表页的筛选/排序复杂度 | 中 | 迭代1筛选支持"主表字段 + 至多 3 个自定义字段等值匹配",排序仅主表字段;超出部分作为已知限制写入 UAT 说明 |
| 审批引擎配置化过度导致返工 | 中 | 迭代1锁定"串行节点、any/all、字段权限、抄送"能力边界;并行/条件分支留 flow_node_def JSON 扩展位 |
| staff-mgr 旧数据语义差异(status/加密算法) | 中 | 迁移脚本内置映射表 + 核对报告 + UAT 双库比对(见 database-design.md §7) |
| 6 模块并行开发契约漂移 | 中 | 本文 T01 先行冻结表定义 models JSON 与 api-design 端点签名,变更走设计评审 |
| 提醒场景字段依赖(健康证/社保等花名册字段未建) | 低 | init/data.json 预置 REMIND_SCENE 对应字段定义,remind_scan 按 field_def 取数 |
### 1.4 已裁决口径(对 baseline-decision 遗留问题)
- Q1 双口径:统一 ocai(本设计全套)。
- Q6 删除语义:迭代1员工/组织不做物理删除与逻辑删除标记,统一走停用/离职流程(database-design.md §1.3、api-design.md §4)。
- 其余 Q2~Q5/Q7 以本设计为评审结论:自定义字段排序限主表字段(1.3)、审批引擎能力边界(1.3)、迁移幂等策略(db §7)。
## 2. 开发任务拆解(T01~T24,契约先行)
> 依赖关系:T01~T02 为契约冻结阶段,全量先行;其后按模块并行。工作量单位:人日(估算,供 PM 排期)。
### 阶段0 契约与脚手架
| 编号 | 任务 | 内容/产出 | 依赖 | 估时 |
|---|---|---|---|---|
| T01 | 数据契约冻结 | 6 模块仓库建仓(hr_org/hr_roster/hr_flow/hr_contract/hr_report,hr-system 复用既有空仓);43 张 models/*.json 全量提交;json2ddl 生成 DDL 验证 | — | 4 |
| T02 | 应用脚手架 | hr-web 应用仓(app/hr_web.py、conf/config.json 含 processors/indexes/session、build.sh、.env);appbase/rbac 加载验证;登录走通 | T01 | 2 |
### 阶段1 主数据与底座(可并行)
| 编号 | 任务 | 内容/产出 | 依赖 | 估时 |
|---|---|---|---|---|
| T03 | hr-org 组织管理 | org_unit CRUD/树/停用/移动、org_field_def 自定义字段、org_unit_change 时间轴、org_tree/org_import 端点、org_tree.ui/org_chart.ui(F01) | T01,T02 | 5 |
| T04 | hr-org 职位职级 | org_job/position/sequence/grade_level/grade_rank CRUD + 导入导出 + options 端点(F02) | T03 | 3 |
| T05 | hr-roster 字段体系 | roster_field_group/field_def/type_rule/empno_rule 配置页与端点、工号生成器(F03 搭建类验收 1/2/3/6) | T01,T02 | 4 |