mirror of
https://github.com/hpd840321/craftlabs-authorization-sdk.git
synced 2026-06-09 01:50:30 +08:00
docs: add remaining gaps WBS execution plan (P0/P1/P2 + SDK JNI)
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
# 剩余缺口 WBS 任务拆解与排期计划
|
||||
|
||||
> **基于**:PRD vs 代码实现状态完整审计(2026-05-25)
|
||||
> **范围**:全部 ⚠️ 部分实现 + ❌ 未实现 功能点
|
||||
> **涉及**:平台后端/前端 + 客户端 SDK
|
||||
|
||||
---
|
||||
|
||||
## 迭代路线图
|
||||
|
||||
| 迭代 | 周期 | 聚焦 | 任务数 | 估计工时 |
|
||||
|------|------|------|--------|---------|
|
||||
| **I14** | T0+1W | P0 缺口修复 + 审计修复 | 7 | 12h |
|
||||
| **I15** | T0+2W | P1 增强(M2/M3/M4) | 6 | 14h |
|
||||
| **I16** | T0+3W | P1 增强(M5/M6/M8/M11) | 8 | 16h |
|
||||
| **I17** | T0+4W | SDK JNI 桥接 + 单元测试 | 3 | 16h |
|
||||
| **V2.1** | T0+6W | P2 功能 + 其他语言封装 | 8 | 20h |
|
||||
|
||||
---
|
||||
|
||||
## 迭代 I14:P0 缺口修复(12h)
|
||||
|
||||
### I14-T1: M1-F06 项目干系人(2h)
|
||||
|
||||
**文件:**
|
||||
- Create: `services/.../db/migration/V17__project_stakeholder.sql`
|
||||
- Create: `services/.../persistence/project/PlatformProjectStakeholder.java`
|
||||
- Create: `services/.../persistence/project/PlatformProjectStakeholderMapper.java`
|
||||
- Create: `services/.../web/dto/StakeholderRequest.java`
|
||||
- Create: `services/.../web/dto/StakeholderResponse.java`
|
||||
- Modify: `services/.../project/ProjectController.java`
|
||||
- Modify: `services/.../service/ProjectService.java`
|
||||
- Create: `web/.../views/ProjectStakeholderDialog.vue`
|
||||
- Modify: `web/.../views/ProjectsView.vue`
|
||||
|
||||
**DB:**
|
||||
```sql
|
||||
CREATE TABLE platform_project_stakeholder (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
project_id BIGINT NOT NULL REFERENCES platform_project(id),
|
||||
contact_name VARCHAR(128) NOT NULL,
|
||||
contact_role VARCHAR(64),
|
||||
phone VARCHAR(32),
|
||||
email VARCHAR(128),
|
||||
is_internal BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
```
|
||||
|
||||
**工作量:** 后端 2h + 前端 1h
|
||||
|
||||
---
|
||||
|
||||
### I14-T2: M2-F01 合同日期字段(1h)
|
||||
|
||||
**文件:**
|
||||
- Create: `services/.../db/migration/V18__contract_date_fields.sql`
|
||||
- Modify: `services/.../persistence/contract/PlatformContract.java`
|
||||
- Modify: `services/.../web/dto/ContractCreateRequest.java`
|
||||
- Modify: `services/.../web/dto/ContractUpdateRequest.java`
|
||||
- Modify: `services/.../web/dto/ContractResponse.java`
|
||||
- Modify: `services/.../service/ContractService.java`
|
||||
- Modify: `services/.../contracts/ContractController.java`
|
||||
- Modify: `web/.../views/ContractWizardView.vue`
|
||||
|
||||
**DB:**
|
||||
```sql
|
||||
ALTER TABLE platform_contract
|
||||
ADD COLUMN signing_date DATE,
|
||||
ADD COLUMN effective_date DATE,
|
||||
ADD COLUMN end_date DATE;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### I14-T3: M2-F04 行项 amount 字段 UI 补全(0.5h)
|
||||
|
||||
**文件:**
|
||||
- Modify: `web/.../views/ContractDetailView.vue`(添加 amount字段到行项对话框)
|
||||
- Modify: `web/.../views/ContractWizardView.vue`(添加 amount到行项表)
|
||||
|
||||
---
|
||||
|
||||
### I14-T4: M4-F05 激活原因码分类(1.5h)
|
||||
|
||||
**文件:**
|
||||
- Modify: `services/.../api/web/dto/LicenseSnStatusPatchRequest.java`
|
||||
- Modify: `services/.../api/service/LicenseSnService.java`
|
||||
- Modify: `web/.../views/LicenseSnDetailView.vue`
|
||||
|
||||
在状态变更对话框中增加「原因码」下拉字段:ACTIVATION_SUCCESS / ACTIVATION_FAILED / MANUAL_CHANGE / EXPIRED
|
||||
|
||||
---
|
||||
|
||||
### I14-T5: M10-F02 审计 userId 筛选(1h)
|
||||
|
||||
**文件:**
|
||||
- Modify: `services/.../api/service/AuditService.java`(searchAuditEvents加userId参数)
|
||||
- Modify: `services/.../api/audit/AuditController.java`
|
||||
|
||||
---
|
||||
|
||||
### I14-T6: M11-F05 登录锁定逻辑接入(2h)
|
||||
|
||||
**文件:**
|
||||
- Modify: `services/.../api/auth/AuthController.java`
|
||||
|
||||
在 `AuthController.login()` 中,硬编码用户校验之前插入:
|
||||
1. 查询 `platform_login_attempt` 表统计最近15分钟内该用户的失败次数
|
||||
2. 如果 >= 5 次,返回 429 "账户已临时锁定"
|
||||
3. 登录成功后清除失败记录
|
||||
|
||||
---
|
||||
|
||||
### I14-T7: M11-F16 v-permission 扩展到全部页面(4h)
|
||||
|
||||
**文件:**
|
||||
- Modify: 所有 20+ 个 Vue 页面的 CRUD 操作按钮
|
||||
|
||||
为每个页面的 新建/编辑/删除 按钮添加 `v-permission` 指令,权限码按模块命名:
|
||||
- `customer:rw` / `customer:delete`
|
||||
- `project:rw` / `project:delete`
|
||||
- `contract:rw`
|
||||
- `delivery:rw`
|
||||
- `license:sn:rw` / `license:sn:batch-import`
|
||||
- `callback:process`
|
||||
- `integration:config:rw`
|
||||
- `device:rw`
|
||||
- `todo:process`
|
||||
- `report:view` / `report:export`
|
||||
- `audit:search` / `audit:export`
|
||||
|
||||
---
|
||||
|
||||
## 迭代 I15:P1 增强(M2/M3/M4)(14h)
|
||||
|
||||
### I15-T1: M2-F06 合同与订单关联(2h)
|
||||
|
||||
**文件:**
|
||||
- Create: `services/.../db/migration/V19__order_linking.sql`
|
||||
- Modify: `services/.../persistence/contract/PlatformContract.java`
|
||||
- Modify: `web/.../views/ContractDetailView.vue`
|
||||
|
||||
### I15-T2: M2-F08 SKU 规则映射(3h)
|
||||
|
||||
**文件:**
|
||||
- Create: `services/.../db/migration/V20__sku_mapping.sql`
|
||||
- Create: `services/.../api/persistence/integration/PlatformSkuMapping.java`
|
||||
- Modify: `services/.../api/service/IntegrationCatalogService.java`
|
||||
- Create: `web/.../views/IntegrationSkuMappingView.vue`
|
||||
|
||||
### I15-T3: M3-F06 现场环境信息(1.5h)
|
||||
|
||||
**文件:**
|
||||
- Create: V21 migration for field_env_info on platform_delivery_batch
|
||||
- Modify: DeliveryBatchDetailView.vue 增加字段
|
||||
|
||||
### I15-T4: M3-F07 交付-SN 门禁逻辑(2h)
|
||||
|
||||
**文件:**
|
||||
- Modify: `services/.../service/LicenseSnService.java`
|
||||
- SN 创建/绑定时,校验 `platform_delivery_batch.status = DELIVERED`
|
||||
|
||||
### I15-T5: M4-F06 比特控制台链接(1.5h)
|
||||
|
||||
**文件:**
|
||||
- Modify: `web/.../views/LicenseSnDetailView.vue`
|
||||
- 从 `platform_integration_environment.bitanswer_base_url` 构建控制台链接
|
||||
|
||||
### I15-T6: M4-F07/F08/F09 批量操作/需求单/标签(4h)
|
||||
|
||||
**文件:**
|
||||
- 批量绑定额外对话框
|
||||
- 授权需求单视图
|
||||
- SN 标签字段
|
||||
|
||||
---
|
||||
|
||||
## 迭代 I16:P1 增强(M5/M6/M8/M11)(16h)
|
||||
|
||||
### I16-T1: M5-F06 失败原因标注(1.5h)
|
||||
|
||||
### I16-T2: M5-F07 批量重试(2h)
|
||||
|
||||
### I16-T3: M6-F04 特征映射管理(3h)
|
||||
|
||||
### I16-T4: M8-F03/F04 邮件/企微通知 + 模板(3h)
|
||||
|
||||
### I16-T5: M11-F08/F11/F12 密码重置/并发会话/强制下线(4h)
|
||||
|
||||
### I16-T6: M11-F18/F20/F21 数据属主/系统参数/敏感操作审计(2.5h)
|
||||
|
||||
---
|
||||
|
||||
## 迭代 I17:SDK JNI 桥接(16h)
|
||||
|
||||
### I17-T1: Rust JNI bridge.cpp 实现(8h)
|
||||
|
||||
**关键修复:** NativeBridge.java 引用的 JNI 函数在 Rust 侧无对应实现。需要:
|
||||
1. 在 `native/craft-core/` 中新增 JNI 桥接模块
|
||||
2. 实现 `Java_cn_craftlabs_auth_internal_NativeBridge_nativeInitialize` 等 8 个 JNI 函数
|
||||
3. 每个 JNI 函数调用 Rust C ABI 对应的 `craft_*` 函数
|
||||
|
||||
### I17-T2: Java SDK 单元测试(4h)
|
||||
|
||||
为 BitAnswerProvider 和 SelfHostedAuthProvider 编写集成测试:
|
||||
- 配置解析测试
|
||||
- Provider 初始化/激活/校验测试(Mock 模式)
|
||||
|
||||
### I17-T3: 端到端集成测试(4h)
|
||||
|
||||
- Rust 核心库编译 + Java SDK 调用验证
|
||||
- 完整激活 → 校验 → 心跳链路
|
||||
|
||||
---
|
||||
|
||||
## V2.1:P2 功能 + 多语言封装(20h)
|
||||
|
||||
| 任务 | 工时 | 说明 |
|
||||
|------|------|------|
|
||||
| M1-F07 客户/项目冻结 | 1.5h | |
|
||||
| M1-F08 客户合并 | 2h | |
|
||||
| M1-F09 CRM 同步 | 3h | 外部依赖 |
|
||||
| M5-F10 模拟投递 | 1.5h | 仅测试环境 |
|
||||
| M6-F08/F09 版本矩阵/影响分析 | 3h | |
|
||||
| M9-F06 订阅报表 | 2h | |
|
||||
| M10-F04 留存策略 | 1h | |
|
||||
| M11-F09/F10 SSO/MFA | 4h | 外部依赖 |
|
||||
| C#/Python SDK 封装(选1个) | 8h | 视需求 |
|
||||
|
||||
---
|
||||
|
||||
## 依赖关系图
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph I14["I14: P0修复"]
|
||||
T1[I14-T1: 项目干系人]
|
||||
T2[I14-T2: 合同日期]
|
||||
T3[I14-T3: amount UI]
|
||||
T4[I14-T4: 激活原因码]
|
||||
T5[I14-T5: 审计筛选]
|
||||
T6[I14-T6: 登录锁定]
|
||||
T7[I14-T7: v-permission扩展]
|
||||
end
|
||||
subgraph I15["I15: P1增强"]
|
||||
T8[I15-T1: 订单关联]
|
||||
T9[I15-T2: SKU映射]
|
||||
T10[I15-T3: 环境信息]
|
||||
T11[I15-T4: 交付门禁]
|
||||
T12[I15-T5: 比特链接]
|
||||
T13[I15-T6: 批量操作]
|
||||
end
|
||||
subgraph I16["I16: P1增强"]
|
||||
T14[I16-T1~T6]
|
||||
end
|
||||
subgraph I17["I17: SDK JNI"]
|
||||
T15[I17-T1: JNI bridge]
|
||||
T16[I17-T2: 单元测试]
|
||||
T17[I17-T3: 端到端测试]
|
||||
end
|
||||
subgraph V21["V2.1: P2+封装"]
|
||||
T18[V2.1: P2/封装]
|
||||
end
|
||||
I14 --> I15 --> I16
|
||||
I17 -.->|可并行| I16
|
||||
I15 --> V21
|
||||
I16 --> V21
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 工作量汇总
|
||||
|
||||
| 迭代 | 聚焦 | 任务数 | 工时 | 交付物 |
|
||||
|------|------|--------|------|--------|
|
||||
| **I14** | P0 缺口修复 | 7 | 12h | 干系人/合同日期/登录锁定/v-permission |
|
||||
| **I15** | M2/M3/M4 P1 增强 | 6 | 14h | 订单/SKU/环境/门禁/批量 |
|
||||
| **I16** | M5/M6/M8/M11 P1 增强 | 6 | 16h | 通知/特征映射/通知/安全 |
|
||||
| **I17** | SDK JNI 桥接 | 3 | 16h | JNI bridge/测试 |
|
||||
| **V2.1** | P2 + 多语言封装 | 8 | 20h | 冻结/合并/SSO/封装 |
|
||||
| **总计** | | **30** | **78h** | |
|
||||
Reference in New Issue
Block a user