Skip to content

Latest commit

 

History

History
282 lines (229 loc) · 7.96 KB

File metadata and controls

282 lines (229 loc) · 7.96 KB

联邦求差和联邦求并功能实现指南

功能概述

本次更新为PrimiHub平台添加了联邦求差联邦求并两个新功能,包括完整的日志记录和导出能力。

已完成的工作

1. 后端开发 ✅

1.1 枚举类型更新

  • 文件:TaskTypeEnum.java
  • 新增:DIFFERENCE(6,"求差")UNION(7,"求并")

1.2 实体类创建

创建了以下实体类:

  • DataDifference.java - 联邦求差主实体
  • DataDifferenceTask.java - 联邦求差任务实体
  • DataUnion.java - 联邦求并主实体
  • DataUnionTask.java - 联邦求并任务实体

1.3 请求参数类

  • DataDifferenceReq.java - 联邦求差请求参数
  • DataUnionReq.java - 联邦求并请求参数

1.4 Controller层

创建了完整的REST API接口:

DifferenceController(联邦求差控制器):

  • POST /difference/saveDataDifference - 创建并运行求差任务
  • GET /difference/getDifferenceTaskList - 查询任务列表
  • GET /difference/getDifferenceTaskDetails - 查询任务详情
  • GET /difference/downloadDifferenceTask - 下载结果文件
  • GET /difference/delDifferenceTask - 删除任务
  • GET /difference/cancelDifferenceTask - 取消任务

UnionController(联邦求并控制器):

  • POST /union/saveDataUnion - 创建并运行求并任务
  • GET /union/getUnionTaskList - 查询任务列表
  • GET /union/getUnionTaskDetails - 查询任务详情
  • GET /union/downloadUnionTask - 下载结果文件
  • GET /union/delUnionTask - 删除任务
  • GET /union/cancelUnionTask - 取消任务

1.5 Service层

创建了Service框架实现:

  • DataDifferenceService.java - 联邦求差服务
  • DataUnionService.java - 联邦求并服务

已实现功能:

  • ✅ 日志记录功能(自动记录到计算日志表)
  • ✅ 基础框架和接口定义
  • ✅ 异常处理和日志输出

2. 前端开发 ✅

2.1 API接口文件

  • src/api/difference.js - 联邦求差API
  • src/api/union.js - 联邦求并API

包含的功能:

  • 任务创建和执行
  • 任务列表查询
  • 任务详情查询
  • 结果文件下载
  • 任务删除和取消
  • 日志导出功能

2.2 日志管理更新

更新了computeLog.vue,在计算类型筛选中新增:

  • 联邦求差
  • 联邦求并

3. 数据库设计 ✅

已创建完整的数据库建表SQL:database_schema_difference_union.sql

包含4张表:

  • data_difference - 联邦求差主表
  • data_difference_task - 联邦求差任务表
  • data_union - 联邦求并主表
  • data_union_task - 联邦求并任务表

日志功能说明 ✅

日志记录

  • 所有求差和求并任务自动记录到计算日志表
  • 日志类型标识:
    • 求差:COMPUTE_DIFFERENCE / 联邦求差
    • 求并:COMPUTE_UNION / 联邦求并

日志导出

  • 在"日志管理 > 计算日志"页面,可以按类型筛选并导出
  • 前端API已包含专用导出接口:
    • exportDifferenceLog() - 导出求差日志
    • exportUnionLog() - 导出求并日志

需要进一步实现的功能

1. 数据库配置 ⚠️

# 执行建表SQL
mysql -u用户名 -p数据库名 < database_schema_difference_union.sql

2. Repository层实现 ⚠️

需要创建以下Repository接口和实现:

  • DataDifferenceRepository.java
  • DataDifferenceTaskRepository.java
  • DataUnionRepository.java
  • DataUnionTaskRepository.java

参考现有的PSI实现:

  • DataPsiRepository.java
  • DataPsiPrRepository.java

3. Service业务逻辑完善 ⚠️

需要在Service中补充实现(已标注TODO):

DataDifferenceService.java:

// TODO: 1. 保存求差任务到数据库
// TODO: 2. 调用隐私计算引擎执行求差任务
// TODO: 3. 从数据库查询任务列表
// TODO: 4. 从数据库查询任务详情
// TODO: 5. 下载结果文件
// TODO: 6. 删除任务
// TODO: 7. 取消正在运行的任务

DataUnionService.java:

// TODO: 1. 保存求并任务到数据库
// TODO: 2. 调用隐私计算引擎执行求并任务
// TODO: 3. 从数据库查询任务列表
// TODO: 4. 从数据库查询任务详情
// TODO: 5. 下载结果文件
// TODO: 6. 删除任务
// TODO: 7. 取消正在运行的任务

4. 前端页面开发 ⚠️

建议参考PSI页面创建:

  • src/views/Difference/list.vue - 求差任务列表
  • src/views/Difference/task.vue - 创建求差任务
  • src/views/Difference/detail.vue - 求差任务详情
  • src/views/Union/list.vue - 求并任务列表
  • src/views/Union/task.vue - 创建求并任务
  • src/views/Union/detail.vue - 求并任务详情

可以直接复制PSI的页面并修改:

cp -r src/views/PSI src/views/Difference
cp -r src/views/PSI src/views/Union
# 然后修改API调用和相关字段

5. 路由配置 ⚠️

需要在路由配置中添加新页面的路由。

6. 权限配置 ⚠️

需要在权限系统中添加:

  • 联邦求差相关权限
  • 联邦求并相关权限

7. 隐私计算引擎集成 ⚠️

需要对接隐私计算引擎,实现:

  • 集合求差算法
  • 集合求并算法
  • 支持ECDH、KKRT、TEE三种实现方式

特性亮点

  1. 完整的API设计 - 参考PSI实现,接口规范统一
  2. 日志记录自动化 - 所有任务自动记录到计算日志
  3. 日志导出支持 - 可按类型筛选并导出Excel
  4. 灵活的求差方向 - 支持A-B和B-A两种方向
  5. 多种实现方式 - 支持ECDH、KKRT、TEE
  6. 完善的异常处理 - 所有接口都有异常捕获和日志记录

快速开始

1. 初始化数据库

mysql -uroot -p < database_schema_difference_union.sql

2. 编译后端

cd primihub-service
mvn clean install

3. 测试API

# 创建求差任务
curl -X POST http://localhost:8080/data/difference/saveDataDifference \
  -H "Content-Type: application/json" \
  -H "userId: 1" \
  -d '{
    "ownOrganId": "org1",
    "ownResourceId": "res1",
    "ownKeyword": "id",
    "otherOrganId": "org2",
    "otherResourceId": "res2",
    "otherKeyword": "id",
    "resultName": "test_difference",
    "resultOrganIds": "org1",
    "tag": 0,
    "differenceDirection": 0
  }'

4. 查看日志

访问"日志管理 > 计算日志"页面,选择"联邦求差"或"联邦求并"类型查看。

技术栈

  • 后端:Spring Boot + MyBatis
  • 前端:Vue 2 + Element UI
  • 数据库:MySQL
  • 隐私计算:PrimiHub引擎

文件清单

后端文件

primihub-service/
├── biz/src/main/java/com/primihub/biz/
│   ├── entity/data/
│   │   ├── po/
│   │   │   ├── DataDifference.java
│   │   │   ├── DataDifferenceTask.java
│   │   │   ├── DataUnion.java
│   │   │   └── DataUnionTask.java
│   │   ├── req/
│   │   │   ├── DataDifferenceReq.java
│   │   │   └── DataUnionReq.java
│   │   └── dataenum/
│   │       └── TaskTypeEnum.java (已更新)
│   └── service/data/
│       ├── DataDifferenceService.java
│       └── DataUnionService.java
└── application/src/main/java/com/primihub/application/controller/data/
    ├── DifferenceController.java
    └── UnionController.java

前端文件

primihub-webconsole/
├── src/
│   ├── api/
│   │   ├── difference.js
│   │   └── union.js
│   └── views/logManagement/
│       └── computeLog.vue (已更新)

数据库文件

database_schema_difference_union.sql

后续优化建议

  1. 批量操作 - 支持批量创建和删除任务
  2. 任务模板 - 保存常用任务配置为模板
  3. 结果对比 - 支持多次任务结果对比
  4. 可视化 - 添加集合运算的可视化展示
  5. 性能监控 - 添加任务执行性能监控
  6. 告警通知 - 任务完成/失败时发送通知

联系方式

如有问题,请联系开发团队或查看PrimiHub官方文档。


版本: v1.0.0 日期: 2026-01-14 作者: Claude Code