From 3f2458493569bc4822197592fe23bb211761008e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 23 Nov 2025 14:09:36 +0000 Subject: [PATCH 1/3] Initial plan From a6d76eac13a38626b29e149b47449b7bd5a13681 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 23 Nov 2025 14:18:32 +0000 Subject: [PATCH 2/3] Adapt SecretNote to SCQL 1.0.0b1 API changes Co-authored-by: tongke6 <124763920+tongke6@users.noreply.github.com> --- README.md | 4 +++- docs/SCQL-INTRO.md | 4 +++- .../secretnote-scql/src/modules/scql-broker/service.ts | 10 ++++++++-- .../secretnote-scql/src/modules/scql-editor/service.ts | 7 +++++++ .../secretnote-scql/src/modules/welcome/welcome.md | 4 +++- .../secretnote/scql/server/services/broker_manager.py | 6 ++++-- 6 files changed, 28 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 07e684d..5f4842e 100644 --- a/README.md +++ b/README.md @@ -49,13 +49,15 @@ SecretNote SF 现在隐语实训平台提供云端版本,开箱即用,无需 SecretNote SCQL 提供了 P2P SCQL 的产品化封装,降低了开发者配置 CCL 和编写 Query 的难度。 +**版本兼容性说明:** SecretNote 当前适配 SCQL 1.0.0b1 及以上版本。如需使用旧版本 SCQL,请参考对应的 SecretNote 历史版本。 + - 安装 [SecretNote Python 包](https://pypi.org/project/secretnote),Python 版本需在 3.10 及以上、3.12 以下 ```sh pip install secretnote ``` -- 使用 [P2P 方式](https://www.secretflow.org.cn/zh-CN/docs/scql/main/topics/deployment/how-to-deploy-p2p-cluster) 拉起 SCQL 环境,参考 [scql/examples/p2p-tutorial](https://github.com/secretflow/scql/tree/main/examples/p2p-tutorial),下载该文件夹,执行 +- 使用 [P2P 方式](https://www.secretflow.org.cn/zh-CN/docs/scql/1.0.0b1/topics/deployment/how-to-deploy-p2p-cluster) 拉起 SCQL 环境,参考 [scql/examples/p2p-tutorial](https://github.com/secretflow/scql/tree/main/examples/p2p-tutorial),下载该文件夹,执行 ```sh bash setup.sh && docker compose up -d diff --git a/docs/SCQL-INTRO.md b/docs/SCQL-INTRO.md index ce50a03..1fa3fe5 100644 --- a/docs/SCQL-INTRO.md +++ b/docs/SCQL-INTRO.md @@ -2,9 +2,11 @@ 下面演示在一台机器上使用 SCQL + SecretNote 来模拟不同参与方完成一次 SCQL Query。 +**版本兼容性说明:** 本文档适配 SCQL 1.0.0b1 及以上版本。如需使用旧版本 SCQL,请参考对应的 SecretNote 历史版本。 + ### 准备环境 -使用 docker 以 P2P 模式部署 SCQL 系统,可以参考[官网文档](https://www.secretflow.org.cn/zh-CN/docs/scql/0.5.0b2/topics/deployment/how-to-deploy-p2p-cluster)。简单起见,我们直接使用 [scql p2p examples](https://github.com/secretflow/scql/tree/main/examples/p2p-tutorial)。 +使用 docker 以 P2P 模式部署 SCQL 系统,可以参考[官网文档](https://www.secretflow.org.cn/zh-CN/docs/scql/1.0.0b1/topics/deployment/how-to-deploy-p2p-cluster)。简单起见,我们直接使用 [scql p2p examples](https://github.com/secretflow/scql/tree/main/examples/p2p-tutorial)。 ![p2p-tutorial.jpg](./images/p2p-tutorial.png) diff --git a/packages/secretnote-scql/src/modules/scql-broker/service.ts b/packages/secretnote-scql/src/modules/scql-broker/service.ts index a74b898..e64172f 100644 --- a/packages/secretnote-scql/src/modules/scql-broker/service.ts +++ b/packages/secretnote-scql/src/modules/scql-broker/service.ts @@ -1,5 +1,5 @@ // Service for interacting with backend's broker APIs only without states. -// @see https://www.secretflow.org.cn/zh-CN/docs/scql/0.9.0b1/reference/broker-api +// @see https://www.secretflow.org.cn/zh-CN/docs/scql/1.0.0b1/reference/broker-api // @see pyprojects/secretnote/secretnote/scql/server/services/broker_manager.py // The schema follows the document, best effort. @@ -133,18 +133,24 @@ export type Tensor = { shape: TensorShape; elem_type: 'PrimitiveDataType_UNDEFINED' | TableColumnDesc['dtype']; option: 'VALUE' | 'REFERENCE' | 'VARIABLE'; - status: + status?: | 'TENSORSTATUS_UNKNOWN' | 'TENSORSTATUS_PRIVATE' | 'TENSORSTATUS_SECRET' | 'TENSORSTATUS_CIPHER' | 'TENSORSTATUS_PUBLIC'; + annotation?: any; + // Legacy fields for backwards compatibility with SCQL < 1.0.0b1 int32_data?: number[]; int64_data?: number[]; float_data?: number[]; double_data?: number[]; string_data?: string[]; bool_data?: boolean[]; + // New field for SCQL >= 1.0.0b1 + ss?: { + ss?: string[]; + }; }; // scql.pb.QueryResult diff --git a/packages/secretnote-scql/src/modules/scql-editor/service.ts b/packages/secretnote-scql/src/modules/scql-editor/service.ts index fe02338..fd0ec6f 100644 --- a/packages/secretnote-scql/src/modules/scql-editor/service.ts +++ b/packages/secretnote-scql/src/modules/scql-editor/service.ts @@ -38,6 +38,13 @@ export class QueryService { getRow(row: Tensor) { let res; + + // For SCQL >= 1.0.0b1, check the new ss field first + if (row.ss?.ss && row.ss.ss.length) { + return row.ss.ss; + } + + // For backwards compatibility with SCQL < 1.0.0b1, check legacy fields ( [ 'int32_data', diff --git a/packages/secretnote-scql/src/modules/welcome/welcome.md b/packages/secretnote-scql/src/modules/welcome/welcome.md index bbf695c..68f9ddf 100644 --- a/packages/secretnote-scql/src/modules/welcome/welcome.md +++ b/packages/secretnote-scql/src/modules/welcome/welcome.md @@ -2,11 +2,13 @@ 下面演示在一台机器上使用 SCQL + SecretNote 来模拟不同参与方完成一次 SCQL Query。 +**版本兼容性说明:** SecretNote 当前适配 SCQL 1.0.0b1 及以上版本。 + --- ## 准备环境 -使用 docker 以 P2P 模式部署 SCQL 系统,可以参考[官网文档](https://www.secretflow.org.cn/zh-CN/docs/scql/0.5.0b2/topics/deployment/how-to-deploy-p2p-cluster)。简单起见,我们直接使用 [scql p2p examples](https://github.com/secretflow/scql/tree/main/examples/p2p-tutorial)。 +使用 docker 以 P2P 模式部署 SCQL 系统,可以参考[官网文档](https://www.secretflow.org.cn/zh-CN/docs/scql/1.0.0b1/topics/deployment/how-to-deploy-p2p-cluster)。简单起见,我们直接使用 [scql p2p examples](https://github.com/secretflow/scql/tree/main/examples/p2p-tutorial)。 ## 创建项目 diff --git a/pyprojects/secretnote/secretnote/scql/server/services/broker_manager.py b/pyprojects/secretnote/secretnote/scql/server/services/broker_manager.py index 082aace..e49eab4 100644 --- a/pyprojects/secretnote/secretnote/scql/server/services/broker_manager.py +++ b/pyprojects/secretnote/secretnote/scql/server/services/broker_manager.py @@ -1,6 +1,6 @@ # This is the manager that interacts with SCQL's broker, just like "broker's broker". # SCQL itself exposes a set of APIs to manage projects, tables, and column control lists (CCLs). -# @see https://www.secretflow.org.cn/zh-CN/docs/scql/0.9.0b1/reference/broker-api +# @see https://www.secretflow.org.cn/zh-CN/docs/scql/1.0.0b1/reference/broker-api # APIs here are consistent with those of SCQL's broker. from typing import Any, Dict, List, Union @@ -17,7 +17,9 @@ "db_type":"mysql","ref_table":"bob.user_stats","table_name":"tb","table_owner":"bob"} ColumnControlList{"col":{"column_name":"ID","table_name":"ta"},"constraint":"PLAINTEXT", "party_code":"alice"} -OutColumns{"elem_type":"STRING","name":"ID","option":"VALUE","shape":{"dim":[{"dim_value":"2"}, +OutColumns (SCQL >= 1.0.0b1): {"elem_type":"STRING","name":"ID","option":"VALUE","shape":{"dim":[{"dim_value":"2"}, + {"dim_value":"1"}]},"ss":{"ss":["alice","bob"]}} +OutColumns (SCQL < 1.0.0b1): {"elem_type":"STRING","name":"ID","option":"VALUE","shape":{"dim":[{"dim_value":"2"}, {"dim_value":"1"}]},"string_data":["alice","bob"]} """ Project = Dict[str, Any] From e7a1078e126796ae31ed961c12b02c014d205f5f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 23 Nov 2025 14:19:33 +0000 Subject: [PATCH 3/3] Optimize property access in getRow function Co-authored-by: tongke6 <124763920+tongke6@users.noreply.github.com> --- packages/secretnote-scql/src/modules/scql-editor/service.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/secretnote-scql/src/modules/scql-editor/service.ts b/packages/secretnote-scql/src/modules/scql-editor/service.ts index fd0ec6f..2ac1948 100644 --- a/packages/secretnote-scql/src/modules/scql-editor/service.ts +++ b/packages/secretnote-scql/src/modules/scql-editor/service.ts @@ -40,8 +40,9 @@ export class QueryService { let res; // For SCQL >= 1.0.0b1, check the new ss field first - if (row.ss?.ss && row.ss.ss.length) { - return row.ss.ss; + const ssData = row.ss?.ss; + if (ssData && ssData.length) { + return ssData; } // For backwards compatibility with SCQL < 1.0.0b1, check legacy fields