61 lines
5.1 KiB
Plaintext
61 lines
5.1 KiB
Plaintext
# 迭代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 |
|