Skip to content

企业业务域 ​

Java 服务按 module/<业务域>/{api,service,persistence} 纵向组织。Flyway V9__enterprise_domains.sql 增加企业域表和权限;PostgreSQL 保存业务状态,Redis 处理短期协调。响应遵循统一契约,前端客户端位于 packages/effects/api/src/modules/enterprise.ts。

租户、组织与部门 ​

接口用途权限
GET /api/v1/tenants租户列表admin 角色及 tenant:list
POST /api/v1/tenants创建租户及管理员admin 角色及 tenant:list
PUT /api/v1/tenants/{id}修改名称、状态、套餐、到期时间admin 角色及 tenant:list
GET /api/v1/organizations/current当前组织department:list
PUT /api/v1/organizations/{id}修改组织department:manage
GET /api/v1/departments部门树department:list
GET /api/v1/departments/{id}/members部门成员department:list
POST /api/v1/departments、PUT /api/v1/departments/{id}创建、修改部门department:manage
PUT、DELETE /api/v1/departments/{id}/members/{userId}加入、移除成员department:manage
DELETE /api/v1/departments/{id}删除符合条件的部门department:manage

已登录请求从签名 Access Token 获取 tenantId。MyBatis 对受保护表添加租户条件,服务层再检查业务访问。只有初始化的系统超级管理员有显式跨租户路径,普通租户管理员不能绕过。匿名 /api/v1/public/** 可用 X-Tenant-Code 选择有效租户;省略时使用 default。不存在、禁用或过期的租户会返回错误。

Java 登录和注册请求可传 tenantCode,不传时使用 default。当前前端 LoginParams 与登录表单尚未暴露此字段,因此现有页面只能登录默认租户。现在测试其他租户需直接调用 Java 认证接口并传入 tenantCode;前端切换租户还需要同步修改类型与界面。

项目与任务 ​

接口用途权限
GET /api/v1/projects、GET /api/v1/projects/{id}可访问项目列表、详情project:list
GET /api/v1/projects/{id}/activities项目动态project:list
POST /api/v1/projects创建项目,必须带 Idempotency-Keyproject:create
PUT /api/v1/projects/{id}修改项目,请求体带 versionproject:update
PUT /api/v1/projects/{id}/archive?version=N归档项目project:update
PUT、DELETE /api/v1/projects/{id}/members/{userId}加入、移除成员project:update
GET、POST /api/v1/projects/{id}/tasks任务列表、新建任务project:list / task:create
GET、PUT /api/v1/tasks/{id}任务详情、修改;修改需 versionproject:list / task:update
GET、POST /api/v1/tasks/{id}/comments评论列表、新增评论project:list
GET /api/v1/tasks/{id}/activities字段和状态变更记录project:list

项目创建者自动成为负责人和成员;普通用户只能访问自己参与的项目。任务负责人必须是项目成员。归档项目不能新增任务或变更成员;仍有未完成任务的成员不能移出。项目、任务写入和动态记录在同一事务内。

任务状态为 TODO → IN_PROGRESS → BLOCKED → IN_PROGRESS,也允许 IN_PROGRESS → DONE;TODO、IN_PROGRESS、BLOCKED 可转为 CANCELLED。DONE 与 CANCELLED 为终态。优先级为 LOW、MEDIUM、HIGH、URGENT。过期 version 和非法状态转换返回 HTTP 409。

审批、通知、审计与文件 ​

接口用途权限
GET、POST /api/v1/approvals可见审批、新建草稿已登录 / approval:create
POST /api/v1/approvals/{id}/submit提交,需 Idempotency-Keyapproval:create
POST /api/v1/approvals/{id}/approve、/reject处理当前步骤approval:action
POST /api/v1/approvals/{id}/cancel申请人取消草稿或待审批单approval:create
GET /api/v1/notifications、/unread-count个人通知及未读数已登录
PUT /api/v1/notifications/{id}/read、/read-all标记已读已登录
GET /api/v1/audit/operations请求操作元数据audit:view
POST /api/v1/files上传 multipart 字段 filefile:upload
GET /api/v1/files/{tenantId}/{filename}下载有权访问的文件已登录
DELETE /api/v1/files/{tenantId}/{filename}删除文件file:upload

参考审批流为 DRAFT → PENDING → APPROVED 或 REJECTED;申请人可取消草稿或待审批单。提交前必须选择已有负责人的部门,先由部门负责人审批,再由管理员处理。通知在业务事务提交后生成。操作审计只记录请求元数据,与项目/任务动态分开,不保存请求体。当前文件实现使用按租户隔离的本地目录。

项目创建及审批提交的 Idempotency-Key 在 Redis 占用 24 小时。重复使用返回 HTTP 409,不会重放首次响应。不同命令应使用新键;如果网络故障时不确定写入是否完成,先读取资源再决定是否重试。

前端与 Mock 的边界 ​

目前 web-antd 提供项目任务、审批、组织、租户、审计、文件和通知页面;其他 UI 应用共享 API 包,但不会自动拥有这些页面。Nitro 和浏览器内静态预览使用内存版 createStaticEnterpriseApi,用于验证路由与数据形状,不等同于 PostgreSQL 事务、Redis 协调、持久化文件或完整 Java 权限规则。验证业务行为请使用真实后端联调。

Released under the MIT License.