feat: establish AIOA identity and organization baseline
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# 工程决策记录
|
||||
|
||||
## ADR-001:先交付纵向闭环
|
||||
|
||||
首个里程碑围绕请假审批实现端到端能力,不按技术层横向建设全部平台组件。
|
||||
|
||||
## ADR-002:模块化单体
|
||||
|
||||
核心后端以单部署单元运行;模块拥有自己的数据表,通过应用接口与领域事件协作。
|
||||
|
||||
## ADR-003:本地环境最小化
|
||||
|
||||
首期本地依赖为 PostgreSQL、Keycloak、Redis 和 MinIO。Kafka、OpenSearch、APISIX、Vault 和 Kubernetes 在出现对应验收需求时接入。
|
||||
|
||||
## ADR-004:契约优先
|
||||
|
||||
移动端和 AI 服务通过 OpenAPI 与 Kotlin 后端集成。AI 只返回结构化建议或工具调用请求,业务执行权始终属于 Kotlin 后端。
|
||||
|
||||
## ADR-005:环境基线
|
||||
|
||||
项目使用 JDK 21、Python 3.11+ 和与主机架构一致的 Flutter stable。生产依赖和镜像禁止使用浮动 `latest` 标签;发布生产环境前由 CI 将已验证镜像解析并固定到真实摘要。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 实施路线
|
||||
|
||||
## M0:工程基线
|
||||
|
||||
- [x] 仓库、目录、环境和编码约定
|
||||
- [x] 本地基础依赖配置
|
||||
- [x] OpenAPI 基础契约
|
||||
- [x] Kotlin 后端 Wrapper、测试和构建入口
|
||||
- [x] Trace ID、统一异常和数据库基础迁移
|
||||
- [ ] GitLab CI 格式检查、测试和构建流水线
|
||||
|
||||
## M1:身份与组织
|
||||
|
||||
- [x] Keycloak Realm、移动客户端和开发测试身份
|
||||
- [x] 当前用户 OA 数据查询
|
||||
- [x] 租户、部门、人员、岗位、任职关系和角色基础模型
|
||||
- [x] 统一鉴权、错误结构、Trace ID 和审计基础
|
||||
- [x] Keycloak 与后端容器端到端验证
|
||||
- [ ] 设备注册、撤销与远程注销
|
||||
- [ ] 数据范围与工具权限
|
||||
|
||||
## M2:请假审批闭环
|
||||
|
||||
- 表单草稿和版本
|
||||
- Flowable 流程发布与执行
|
||||
- 发起、待办、批准、驳回、撤回和时间线
|
||||
- 附件、通知、弱网恢复和幂等处理
|
||||
|
||||
## M3:AI 最小闭环
|
||||
|
||||
- 自然语言生成请假草稿
|
||||
- 查询本人流程进度
|
||||
- 确认卡片、工具鉴权和 AI 审计
|
||||
|
||||
## Definition of Done
|
||||
|
||||
每项功能必须同时具备:权限校验、审计、自动化测试、契约更新、错误处理和最小可观测性。
|
||||
@@ -0,0 +1,52 @@
|
||||
# MVP 产品范围
|
||||
|
||||
## 1. 目标
|
||||
|
||||
用一个可运行的请假审批闭环验证移动端、身份、组织、权限、Flowable、审计和 AI 工具调用边界。
|
||||
|
||||
## 2. 用户角色
|
||||
|
||||
| 角色 | 核心能力 |
|
||||
|---|---|
|
||||
| 员工 | 创建和查看本人申请;撤回满足条件的申请 |
|
||||
| 部门主管 | 查看并处理分配给自己的审批任务 |
|
||||
| OA 管理员 | 管理组织基础数据、查看流程定义和审计记录 |
|
||||
|
||||
## 3. 主流程
|
||||
|
||||
1. 员工登录并创建请假草稿。
|
||||
2. 员工填写类型、起止时间、原因和附件。
|
||||
3. 服务端校验数据、权限和幂等键后发起流程。
|
||||
4. 部门主管收到待办并批准或驳回。
|
||||
5. 员工查看状态、审批意见和时间线。
|
||||
6. 每个关键动作写入不可由普通管理员修改的审计记录。
|
||||
|
||||
## 4. 业务规则
|
||||
|
||||
- 结束时间必须晚于开始时间。
|
||||
- 首期请假类型为事假、病假和年假。
|
||||
- 申请人不能审批自己的申请。
|
||||
- 只有当前任务处理人可以批准或驳回。
|
||||
- 已结束流程不能撤回;审批前允许申请人撤回。
|
||||
- 所有写请求必须携带 `Idempotency-Key`。
|
||||
- 状态更新必须使用版本号防止并发覆盖。
|
||||
- 流程启动后固定引用已发布的流程版本。
|
||||
|
||||
## 5. AI 能力
|
||||
|
||||
首期只提供:
|
||||
|
||||
- 将自然语言解析为请假单草稿。
|
||||
- 查询当前用户请假申请的流程进度。
|
||||
|
||||
AI 不直接写数据库或调用 Flowable。任何发起申请的动作都必须由 Kotlin 后端重新鉴权、校验,并由用户确认。
|
||||
|
||||
## 6. 验收标准
|
||||
|
||||
- 员工能够在移动端完成申请发起并看到状态变化。
|
||||
- 主管能够收到并处理待办。
|
||||
- 越权读取和越权审批返回明确的 403 错误。
|
||||
- 同一幂等键重复提交不会产生两条申请或两个流程实例。
|
||||
- 断网草稿能够恢复,失败提交可安全重试。
|
||||
- 每次写操作都能通过 Trace ID 查询对应审计记录。
|
||||
- AI 生成的草稿在用户确认前不会触发业务写操作。
|
||||
@@ -0,0 +1,17 @@
|
||||
# MVP 权限矩阵
|
||||
|
||||
| 资源 / 操作 | 员工 | 部门主管 | OA 管理员 |
|
||||
|---|---:|---:|---:|
|
||||
| 查看本人资料 | 允许 | 允许 | 允许 |
|
||||
| 查看组织通讯录 | 授权范围 | 本部门 | 全组织 |
|
||||
| 创建请假申请 | 允许 | 允许 | 允许 |
|
||||
| 查看本人申请 | 允许 | 允许 | 允许 |
|
||||
| 查看部门成员申请 | 禁止 | 仅待办及授权范围 | 全组织 |
|
||||
| 审批申请 | 禁止 | 仅本人当前任务 | 按显式授权 |
|
||||
| 撤回申请 | 本人且流程未结束 | 本人且流程未结束 | 禁止代撤回 |
|
||||
| 管理组织数据 | 禁止 | 禁止 | 允许 |
|
||||
| 查看审计 | 禁止 | 禁止 | 脱敏查询 |
|
||||
| AI 填写申请草稿 | 允许 | 允许 | 允许 |
|
||||
| AI 发起申请 | 用户确认后 | 用户确认后 | 用户确认后 |
|
||||
|
||||
后端授权模型为 RBAC + 数据范围 + ABAC。表格是产品规则,不替代服务端逐资源鉴权。
|
||||
Reference in New Issue
Block a user