mirror of
https://github.com/hpd840321/craftlabs-authorization-sdk.git
synced 2026-06-09 18:10:30 +08:00
8.4 KiB
8.4 KiB
剩余缺口 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:
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:
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() 中,硬编码用户校验之前插入:
- 查询
platform_login_attempt表统计最近15分钟内该用户的失败次数 - 如果 >= 5 次,返回 429 "账户已临时锁定"
- 登录成功后清除失败记录
I14-T7: M11-F16 v-permission 扩展到全部页面(4h)
文件:
- Modify: 所有 20+ 个 Vue 页面的 CRUD 操作按钮
为每个页面的 新建/编辑/删除 按钮添加 v-permission 指令,权限码按模块命名:
customer:rw/customer:deleteproject:rw/project:deletecontract:rwdelivery:rwlicense:sn:rw/license:sn:batch-importcallback:processintegration:config:rwdevice:rwtodo:processreport:view/report:exportaudit: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 侧无对应实现。需要:
- 在
native/craft-core/中新增 JNI 桥接模块 - 实现
Java_cn_craftlabs_auth_internal_NativeBridge_nativeInitialize等 8 个 JNI 函数 - 每个 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 | 视需求 |
依赖关系图
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 |