Bladeren bron

修改查询接口参数

duyong 2 weken geleden
bovenliggende
commit
c2143b56c2
5 gewijzigde bestanden met toevoegingen van 20 en 1941 verwijderingen
  1. 0 748
      ACTIVITY_PLAN_USAGE.md
  2. 0 479
      ADVANCED_QUERY_MIGRATION.md
  3. 0 430
      ADVANCED_QUERY_USAGE.md
  4. 0 266
      API_CHANGE_SUMMARY.md
  5. 20 18
      model.go

+ 0 - 748
ACTIVITY_PLAN_USAGE.md

@@ -1,748 +0,0 @@
-# Activity 和 Plan SDK 使用指南
-
-## 概述
-
-bdata SDK 现已支持 Activity(活动)和 Plan(计划)服务的接口调用。
-
-## 新增服务类型
-
-```go
-const (
-    ServiceTypePerson   ServiceType = "person"
-    ServiceTypeResource ServiceType = "resource"
-    ServiceTypeActivity ServiceType = "activity"  // 新增
-    ServiceTypePlan     ServiceType = "plan"      // 新增
-)
-```
-
-## 默认 BaseURL
-
-```go
-const (
-    DefaultActivityBaseURL = "http://10.0.0.210:30684/mbrms/api"
-    DefaultPlanBaseURL     = "http://10.0.0.210:30684/mbrms/api"
-)
-```
-
----
-
-## Activity(活动)使用示例
-
-### 1. 创建客户端
-
-```go
-import "managesdk"
-
-// 使用默认 BaseURL
-client := managesdk.NewClient(managesdk.Config{
-    Type:    managesdk.ServiceTypeActivity,
-    Timeout: 10,
-})
-
-// 或者自定义 BaseURL
-client := managesdk.NewClient(managesdk.Config{
-    Type:    managesdk.ServiceTypeActivity,
-    BaseURL: "http://localhost:8080/mbrms/api",
-    Timeout: 10,
-})
-```
-
-### 2. 保存活动
-
-```go
-params := managesdk.SaveActivityParams{
-    Name:        "测试活动",
-    Description: "这是一个测试活动",
-    ActorID:     "user-001",
-    BusinessType: []string{"mbact", "daily"},
-    ExtendProperties: map[string]any{
-        "categoryId":   "cat-001",
-        "categoryName": "研发",
-        "deptId":       "dept-001",
-        "deptName":     "技术部",
-        "priority":     1,
-        "progress":     50,
-        "duration":     4.5,
-        "onPlan":       1,
-        "year":         2026,
-        "week":         21,
-    },
-    TenantID:         "tenant-001",
-    CreateUserID:     "user-001",
-    UpdateUserID:     "user-001",
-    OperatorUserName: "测试用户",
-}
-
-id, err := client.Manage().Save(params)
-if err != nil {
-    log.Fatalf("保存活动失败: %v", err)
-}
-fmt.Printf("活动ID: %s\n", id)
-```
-
-### 3. 查询活动列表
-
-```go
-params := managesdk.QueryActivitiesParams{
-    Name:     "测试",
-    ActorID:  "user-001",
-    TenantID: "tenant-001",
-    PageNo:   1,
-    PageSize: 10,
-}
-
-result, err := client.Manage().Query(params)
-if err != nil {
-    log.Fatalf("查询活动列表失败: %v", err)
-}
-
-fmt.Printf("总数: %d\n", result.TotalCount)
-for _, activity := range result.Infos {
-    fmt.Printf("活动: %+v\n", activity)
-}
-```
-
-### 4. 按扩展属性查询
-
-```go
-params := managesdk.QueryActivitiesParams{
-    TenantID: "tenant-001",
-    AdvancedQuery: managesdk.AndQuery(
-        managesdk.AndGroup(
-            managesdk.Equal("priority", 1),
-            managesdk.GreaterThan("progress", 50),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-
-result, err := client.Manage().Query(params)
-if err != nil {
-    log.Fatalf("查询失败: %v", err)
-}
-```
-
-### 5. 获取活动详情
-
-```go
-params := managesdk.GetActivityParams{
-    ID: "activity-id-123",
-}
-
-activity, err := client.Manage().Get(params)
-if err != nil {
-    log.Fatalf("获取活动详情失败: %v", err)
-}
-fmt.Printf("活动详情: %+v\n", activity)
-```
-
-### 6. 删除活动
-
-```go
-// 删除部分业务类型
-params := managesdk.DeleteActivityParams{
-    ID:               "activity-id-123",
-    BusinessType:     []string{"daily"},
-    DeleteWhole:      false,
-    DeleteUserID:     "user-001",
-    OperatorUserName: "测试用户",
-}
-
-err := client.Manage().Delete(params)
-if err != nil {
-    log.Fatalf("删除失败: %v", err)
-}
-
-// 删除整条记录
-params := managesdk.DeleteActivityParams{
-    ID:               "activity-id-123",
-    BusinessType:     []string{"mbact"},
-    DeleteWhole:      true,
-    DeleteUserID:     "user-001",
-    OperatorUserName: "测试用户",
-}
-
-err := client.Manage().Delete(params)
-```
-
-### 7. 获取预定义字段
-
-```go
-fields, err := client.Manage().PredefinedFields()
-if err != nil {
-    log.Fatalf("获取预定义字段失败: %v", err)
-}
-
-for _, field := range fields {
-    fmt.Printf("字段: %+v\n", field)
-}
-```
-
----
-
-## Plan(计划)使用示例
-
-### 1. 创建客户端
-
-```go
-import "managesdk"
-
-// 使用默认 BaseURL
-client := managesdk.NewClient(managesdk.Config{
-    Type:    managesdk.ServiceTypePlan,
-    Timeout: 10,
-})
-
-// 或者自定义 BaseURL
-client := managesdk.NewClient(managesdk.Config{
-    Type:    managesdk.ServiceTypePlan,
-    BaseURL: "http://localhost:8080/mbrms/api",
-    Timeout: 10,
-})
-```
-
-### 2. 保存计划
-
-```go
-params := managesdk.SavePlanParams{
-    PlanType:    "短期活动",
-    Name:        "测试计划",
-    Description: "这是一个测试计划",
-    ActorID:     "user-001",
-    State:       "进行中",
-    BusinessType: []string{"mbact", "project"},
-    ExtendProperties: map[string]any{
-        "no":                  32,
-        "level":               3,
-        "matterType":          2,
-        "projectId":           "9b92a7e75abc4d56bc5f5120df89a76c",
-        "storyPoints":         5,
-        "estimatedWork":       80,
-        "actualCompleteness":  50,
-    },
-    StartTime:        "2026-05-20T09:00:00Z",
-    EndTime:          "2026-05-25T18:00:00Z",
-    TenantID:         "tenant-001",
-    CreateUserID:     "user-001",
-    UpdateUserID:     "user-001",
-    OperatorUserName: "测试用户",
-}
-
-id, err := client.Manage().Save(params)
-if err != nil {
-    log.Fatalf("保存计划失败: %v", err)
-}
-fmt.Printf("计划ID: %s\n", id)
-```
-
-### 3. 查询计划列表
-
-```go
-params := managesdk.QueryPlansParams{
-    PlanType: "短期活动",
-    Name:     "测试",
-    ActorID:  "user-001",
-    State:    "进行中",
-    TenantID: "tenant-001",
-    PageNo:   1,
-    PageSize: 10,
-}
-
-result, err := client.Manage().Query(params)
-if err != nil {
-    log.Fatalf("查询计划列表失败: %v", err)
-}
-
-fmt.Printf("总数: %d\n", result.TotalCount)
-for _, plan := range result.Infos {
-    fmt.Printf("计划: %+v\n", plan)
-}
-```
-
-### 4. 按扩展属性查询
-
-```go
-params := managesdk.QueryPlansParams{
-    TenantID: "tenant-001",
-    AdvancedQuery: managesdk.AndQuery(
-        managesdk.AndGroup(
-            managesdk.Equal("level", 1),
-            managesdk.GreaterThan("estimatedWork", 50),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-
-result, err := client.Manage().Query(params)
-if err != nil {
-    log.Fatalf("查询失败: %v", err)
-}
-```
-
-### 5. 获取计划详情
-
-```go
-params := managesdk.GetPlanParams{
-    ID: "plan-id-123",
-}
-
-plan, err := client.Manage().Get(params)
-if err != nil {
-    log.Fatalf("获取计划详情失败: %v", err)
-}
-fmt.Printf("计划详情: %+v\n", plan)
-```
-
-### 6. 删除计划
-
-```go
-// 删除部分业务类型
-params := managesdk.DeletePlanParams{
-    ID:               "plan-id-123",
-    BusinessType:     []string{"project"},
-    DeleteWhole:      false,
-    DeleteUserID:     "user-001",
-    OperatorUserName: "测试用户",
-}
-
-err := client.Manage().Delete(params)
-if err != nil {
-    log.Fatalf("删除失败: %v", err)
-}
-
-// 删除整条记录
-params := managesdk.DeletePlanParams{
-    ID:               "plan-id-123",
-    BusinessType:     []string{"mbact"},
-    DeleteWhole:      true,
-    DeleteUserID:     "user-001",
-    OperatorUserName: "测试用户",
-}
-
-err := client.Manage().Delete(params)
-```
-
-### 7. 获取预定义字段
-
-```go
-fields, err := client.Manage().PredefinedFields()
-if err != nil {
-    log.Fatalf("获取预定义字段失败: %v", err)
-}
-
-for _, field := range fields {
-    fmt.Printf("字段: %+v\n", field)
-}
-```
-
----
-
-## 完整示例
-
-### Activity 完整示例
-
-```go
-package main
-
-import (
-    "fmt"
-    "log"
-    "managesdk"
-)
-
-func main() {
-    // 创建客户端
-    client := managesdk.NewClient(managesdk.Config{
-        Type:    managesdk.ServiceTypeActivity,
-        BaseURL: "http://localhost:8080/mbrms/api",
-        Timeout: 10,
-    })
-
-    // 1. 保存活动
-    saveParams := managesdk.SaveActivityParams{
-        Name:        "日常工作活动",
-        Description: "完成项目需求文档编写",
-        ActorID:     "user-001",
-        BusinessType: []string{"mbact", "daily"},
-        ExtendProperties: map[string]any{
-            "categoryName": "研发",
-            "deptName":     "技术部",
-            "memberName":   "张三",
-            "priority":     1,
-            "progress":     50,
-            "duration":     4.5,
-            "onPlan":       1,
-            "year":         2026,
-            "week":         21,
-        },
-        TenantID:         "tenant-001",
-        CreateUserID:     "user-001",
-        UpdateUserID:     "user-001",
-        OperatorUserName: "测试用户",
-    }
-
-    activityID, err := client.Manage().Save(saveParams)
-    if err != nil {
-        log.Fatalf("保存活动失败: %v", err)
-    }
-    fmt.Printf("创建活动成功,ID: %s\n", activityID)
-
-    // 2. 查询活动列表
-    queryParams := managesdk.QueryActivitiesParams{
-        TenantID: "tenant-001",
-        AdvancedQuery: managesdk.AndQuery(
-            managesdk.AndGroup(
-                managesdk.Equal("priority", 1),
-            ),
-        ),
-        PageNo:   1,
-        PageSize: 10,
-    }
-
-    result, err := client.Manage().Query(queryParams)
-    if err != nil {
-        log.Fatalf("查询活动列表失败: %v", err)
-    }
-    fmt.Printf("查询到 %d 条活动\n", result.TotalCount)
-
-    // 3. 获取活动详情
-    getParams := managesdk.GetActivityParams{
-        ID: activityID,
-    }
-
-    activity, err := client.Manage().Get(getParams)
-    if err != nil {
-        log.Fatalf("获取活动详情失败: %v", err)
-    }
-    fmt.Printf("活动详情: %+v\n", activity)
-
-    // 4. 获取预定义字段
-    fields, err := client.Manage().PredefinedFields()
-    if err != nil {
-        log.Fatalf("获取预定义字段失败: %v", err)
-    }
-    fmt.Printf("预定义字段数量: %d\n", len(fields))
-}
-```
-
-### Plan 完整示例
-
-```go
-package main
-
-import (
-    "fmt"
-    "log"
-    "managesdk"
-)
-
-func main() {
-    // 创建客户端
-    client := managesdk.NewClient(managesdk.Config{
-        Type:    managesdk.ServiceTypePlan,
-        BaseURL: "http://localhost:8080/mbrms/api",
-        Timeout: 10,
-    })
-
-    // 1. 保存计划
-    saveParams := managesdk.SavePlanParams{
-        PlanType:    "短期活动",
-        Name:        "项目开发计划",
-        Description: "完成项目开发任务",
-        ActorID:     "user-001",
-        State:       "进行中",
-        BusinessType: []string{"mbact", "project"},
-        ExtendProperties: map[string]any{
-            "no":                 32,
-            "level":              1,
-            "matterType":         1,
-            "projectId":          "9b92a7e75abc4d56bc5f5120df89a76c",
-            "storyPoints":        5,
-            "estimatedWork":      80,
-            "actualCompleteness": 50,
-        },
-        StartTime:        "2026-05-20T09:00:00Z",
-        EndTime:          "2026-05-25T18:00:00Z",
-        TenantID:         "tenant-001",
-        CreateUserID:     "user-001",
-        UpdateUserID:     "user-001",
-        OperatorUserName: "测试用户",
-    }
-
-    planID, err := client.Manage().Save(saveParams)
-    if err != nil {
-        log.Fatalf("保存计划失败: %v", err)
-    }
-    fmt.Printf("创建计划成功,ID: %s\n", planID)
-
-    // 2. 查询计划列表
-    queryParams := managesdk.QueryPlansParams{
-        State:    "进行中",
-        TenantID: "tenant-001",
-        AdvancedQuery: managesdk.AndQuery(
-            managesdk.AndGroup(
-                managesdk.Equal("level", 1),
-            ),
-        ),
-        PageNo:   1,
-        PageSize: 10,
-    }
-
-    result, err := client.Manage().Query(queryParams)
-    if err != nil {
-        log.Fatalf("查询计划列表失败: %v", err)
-    }
-    fmt.Printf("查询到 %d 条计划\n", result.TotalCount)
-
-    // 3. 获取计划详情
-    getParams := managesdk.GetPlanParams{
-        ID: planID,
-    }
-
-    plan, err := client.Manage().Get(getParams)
-    if err != nil {
-        log.Fatalf("获取计划详情失败: %v", err)
-    }
-    fmt.Printf("计划详情: %+v\n", plan)
-
-    // 4. 获取预定义字段
-    fields, err := client.Manage().PredefinedFields()
-    if err != nil {
-        log.Fatalf("获取预定义字段失败: %v", err)
-    }
-    fmt.Printf("预定义字段数量: %d\n", len(fields))
-}
-```
-
----
-
-## 扩展属性查询说明
-
-### 使用 AdvancedQuery 进行查询
-
-SDK 提供了强大的高级查询功能,通过 `AdvancedQuery` 参数可以构建复杂的查询条件。
-
-### 基本查询操作符
-
-```go
-// 等于
-managesdk.Equal("priority", 1)
-
-// 不等于
-managesdk.NotEqual("priority", 1)
-
-// 大于
-managesdk.GreaterThan("progress", 50)
-
-// 大于等于
-managesdk.GreaterEqual("progress", 50)
-
-// 小于
-managesdk.LessThan("progress", 100)
-
-// 小于等于
-managesdk.LessEqual("progress", 100)
-
-// 模糊查询
-managesdk.Like("deptName", "%技术%")
-
-// 不包含
-managesdk.NotLike("deptName", "%销售%")
-
-// 以...开头
-managesdk.StartsWith("memberName", "张")
-
-// 以...结尾
-managesdk.EndsWith("memberName", "三")
-
-// 为空
-managesdk.IsNull("remark")
-
-// 不为空
-managesdk.IsNotNull("remark")
-
-// IN 查询
-managesdk.In("complex", []int{2, 3})
-
-// NOT IN 查询
-managesdk.NotIn("complex", []int{1})
-```
-
-### 简单查询示例
-
-```go
-// 单个条件
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-    ),
-)
-
-// 多个 AND 条件
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.GreaterThan("progress", 50),
-        managesdk.Equal("deptName", "技术部"),
-    ),
-)
-
-// 多个 OR 条件
-AdvancedQuery: managesdk.OrQuery(
-    managesdk.OrGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.Equal("priority", 2),
-    ),
-)
-```
-
-### 复杂查询示例
-
-```go
-// 组合查询:(priority = 1 AND progress > 50) OR (priority = 2 AND progress > 80)
-AdvancedQuery: managesdk.OrQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.GreaterThan("progress", 50),
-    ),
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 2),
-        managesdk.GreaterThan("progress", 80),
-    ),
-)
-
-// 范围查询:duration BETWEEN 2.0 AND 8.0
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.GreaterEqual("duration", 2.0),
-        managesdk.LessEqual("duration", 8.0),
-    ),
-)
-
-// IN 查询:complex IN (2, 3)
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.In("complex", []int{2, 3}),
-    ),
-)
-
-// 字符串模糊查询
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Like("memberName", "%张%"),
-        managesdk.Equal("deptName", "技术部"),
-    ),
-)
-```
-
-### 嵌套条件组
-
-```go
-// 复杂嵌套:(priority = 1 AND (progress > 50 OR duration > 4))
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.NewNestedConditionGroup(
-            managesdk.OrGroup(
-                managesdk.GreaterThan("progress", 50),
-                managesdk.GreaterThan("duration", 4),
-            ),
-        ),
-    ),
-)
-```
-
-### 完整查询示例
-
-```go
-// Activity 查询示例
-params := managesdk.QueryActivitiesParams{
-    Name:     "项目",  // 基础字段查询
-    TenantID: "tenant-001",
-    AdvancedQuery: managesdk.AndQuery(
-        managesdk.AndGroup(
-            managesdk.Equal("priority", 1),
-            managesdk.GreaterThan("progress", 50),
-            managesdk.Like("categoryName", "%研发%"),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-
-// Plan 查询示例
-params := managesdk.QueryPlansParams{
-    State:    "进行中",
-    TenantID: "tenant-001",
-    AdvancedQuery: managesdk.OrQuery(
-        managesdk.AndGroup(
-            managesdk.Equal("level", 1),
-            managesdk.GreaterThan("estimatedWork", 50),
-        ),
-        managesdk.AndGroup(
-            managesdk.Equal("level", 2),
-            managesdk.GreaterThan("estimatedWork", 100),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
----
-
-## API 路径映射
-
-| 服务类型 | API 路径前缀 |
-|---------|-------------|
-| Activity | `/v1/activity` |
-| Plan | `/v1/plan` |
-
-### 接口列表
-
-| 方法 | 路径 | 说明 |
-|------|------|------|
-| POST | `/v1/activity/save` | 保存活动 |
-| POST | `/v1/activity/query` | 查询活动列表 |
-| POST | `/v1/activity/get` | 获取活动详情 |
-| POST | `/v1/activity/delete` | 删除活动 |
-| GET | `/v1/activity/predefined-fields` | 获取预定义字段 |
-| POST | `/v1/plan/save` | 保存计划 |
-| POST | `/v1/plan/query` | 查询计划列表 |
-| POST | `/v1/plan/get` | 获取计划详情 |
-| POST | `/v1/plan/delete` | 删除计划 |
-| GET | `/v1/plan/predefined-fields` | 获取预定义字段 |
-
----
-
-## 注意事项
-
-1. **扩展属性类型**
-   - Activity 数值字段:priority, progress, duration, onPlan, year, week, stage, complex
-   - Plan 数值字段:no, level, matterType, storyPoints, estimatedWork, actualCompleteness
-   - 数值字段查询时需要使用 `::numeric` 转换
-
-2. **参数类型**
-   - 使用 `AdvancedQuery` 进行扩展属性查询
-   - 支持丰富的查询操作符:等于、不等于、大于、小于、模糊查询、IN、范围查询等
-   - 支持 AND/OR 逻辑组合
-   - 支持嵌套条件组
-
-3. **业务类型**
-   - BusinessType 是字符串数组
-   - 删除时可以指定删除部分业务类型或整条记录
-
-4. **BaseURL**
-   - Activity 和 Plan 使用相同的 BaseURL(都在 mbrms 服务下)
-   - 可以通过 Config.BaseURL 自定义
-
----
-
-## 相关文档
-
-- bdata SDK README: `README.md`
-- Activity 测试用例: `ActivityManage/http_test/activity.http`
-- Plan 测试用例: `ActivityManage/http_test/plan.http`
-- 数据类型说明: `ActivityManage/http_test/DATA_TYPES.md`

+ 0 - 479
ADVANCED_QUERY_MIGRATION.md

@@ -1,479 +0,0 @@
-# ExtendPropertyValues 迁移到 AdvancedQuery 说明
-
-## 变更时间
-2026-05-21
-
-## 变更原因
-为了提供更强大、更易用的查询功能,将原有的 `ExtendPropertyValues` 参数替换为 `AdvancedQuery` 参数。底层服务会将 `AdvancedQueryParams` 解析为 `ExtendPropertyValues`。
-
----
-
-## 变更内容
-
-### 1. QueryActivitiesParams 变更
-
-#### 修改前
-```go
-type QueryActivitiesParams struct {
-    Name                 string           `json:"name,omitempty"`
-    ActorID              string           `json:"actorId,omitempty"`
-    BusinessType         []string         `json:"businessType,omitempty"`
-    ExtendPropertyValues map[string][]any `json:"extendPropertyValues,omitempty"`  // 旧参数
-    CreateUserID         string           `json:"createUserId,omitempty"`
-    TenantID             string           `json:"tenantId"`
-    PageNo               int              `json:"pageNo"`
-    PageSize             int              `json:"pageSize"`
-}
-```
-
-#### 修改后
-```go
-type QueryActivitiesParams struct {
-    Name          string               `json:"name,omitempty"`
-    ActorID       string               `json:"actorId,omitempty"`
-    BusinessType  []string             `json:"businessType,omitempty"`
-    AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`  // 新参数
-    CreateUserID  string               `json:"createUserId,omitempty"`
-    TenantID      string               `json:"tenantId"`
-    PageNo        int                  `json:"pageNo"`
-    PageSize      int                  `json:"pageSize"`
-}
-```
-
-### 2. QueryPlansParams 变更
-
-#### 修改前
-```go
-type QueryPlansParams struct {
-    PlanType             string           `json:"planType,omitempty"`
-    Name                 string           `json:"name,omitempty"`
-    ActorID              string           `json:"actorId,omitempty"`
-    State                string           `json:"state,omitempty"`
-    BusinessType         []string         `json:"businessType,omitempty"`
-    ExtendPropertyValues map[string][]any `json:"extendPropertyValues,omitempty"`  // 旧参数
-    CreateUserID         string           `json:"createUserId,omitempty"`
-    TenantID             string           `json:"tenantId"`
-    PageNo               int              `json:"pageNo"`
-    PageSize             int              `json:"pageSize"`
-}
-```
-
-#### 修改后
-```go
-type QueryPlansParams struct {
-    PlanType      string               `json:"planType,omitempty"`
-    Name          string               `json:"name,omitempty"`
-    ActorID       string               `json:"actorId,omitempty"`
-    State         string               `json:"state,omitempty"`
-    BusinessType  []string             `json:"businessType,omitempty"`
-    AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`  // 新参数
-    CreateUserID  string               `json:"createUserId,omitempty"`
-    TenantID      string               `json:"tenantId"`
-    PageNo        int                  `json:"pageNo"`
-    PageSize      int                  `json:"pageSize"`
-}
-```
-
----
-
-## AdvancedQueryParams 结构
-
-```go
-type AdvancedQueryParams struct {
-    ConditionGroups []ConditionGroup `json:"conditionGroups"`
-    GroupLogic      LogicOperator    `json:"groupLogic"`
-}
-
-type ConditionGroup struct {
-    Conditions []ConditionItem `json:"conditions"`
-    Logic      LogicOperator   `json:"logic"`
-}
-
-type ConditionItem struct {
-    Condition       *ConditionGroup `json:"condition,omitempty"`
-    SingleCondition *QueryCondition `json:"singleCondition,omitempty"`
-}
-
-type QueryCondition struct {
-    Field    string        `json:"field"`
-    Operator QueryOperator `json:"operator"`
-    Value    any           `json:"value,omitempty"`
-}
-
-type QueryOperator string
-type LogicOperator string
-```
-
----
-
-## 迁移指南
-
-### 旧方式(ExtendPropertyValues)
-
-```go
-// 旧的查询方式
-params := managesdk.QueryActivitiesParams{
-    TenantID: "tenant-001",
-    ExtendPropertyValues: map[string][]any{
-        "(extend_properties->>'priority')::numeric = ?": {1},
-        "(extend_properties->>'progress')::numeric > ?": {50},
-        "extend_properties->>'deptName' = ?": {"技术部"},
-    },
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-**缺点**:
-- 需要手动编写 SQL 片段
-- 容易出错(SQL 语法、类型转换)
-- 不够直观
-- 难以构建复杂的逻辑组合
-
-### 新方式(AdvancedQuery)
-
-```go
-// 新的查询方式
-params := managesdk.QueryActivitiesParams{
-    TenantID: "tenant-001",
-    AdvancedQuery: managesdk.AndQuery(
-        managesdk.AndGroup(
-            managesdk.Equal("priority", 1),
-            managesdk.GreaterThan("progress", 50),
-            managesdk.Equal("deptName", "技术部"),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-**优点**:
-- 类型安全
-- 语义清晰
-- 易于构建复杂查询
-- 支持嵌套条件
-- 自动处理类型转换
-
----
-
-## 查询操作符对照表
-
-| 旧方式(SQL) | 新方式(AdvancedQuery) | 说明 |
-|--------------|------------------------|------|
-| `field = ?` | `Equal("field", value)` | 等于 |
-| `field != ?` | `NotEqual("field", value)` | 不等于 |
-| `field > ?` | `GreaterThan("field", value)` | 大于 |
-| `field >= ?` | `GreaterEqual("field", value)` | 大于等于 |
-| `field < ?` | `LessThan("field", value)` | 小于 |
-| `field <= ?` | `LessEqual("field", value)` | 小于等于 |
-| `field LIKE ?` | `Like("field", value)` | 模糊查询 |
-| `field NOT LIKE ?` | `NotLike("field", value)` | 不包含 |
-| `field LIKE 'prefix%'` | `StartsWith("field", "prefix")` | 以...开头 |
-| `field LIKE '%suffix'` | `EndsWith("field", "suffix")` | 以...结尾 |
-| `field IS NULL` | `IsNull("field")` | 为空 |
-| `field IS NOT NULL` | `IsNotNull("field")` | 不为空 |
-| `field IN (?, ?)` | `In("field", []any{v1, v2})` | IN 查询 |
-| `field NOT IN (?, ?)` | `NotIn("field", []any{v1, v2})` | NOT IN 查询 |
-
----
-
-## 迁移示例
-
-### 示例 1:简单等值查询
-
-#### 旧方式
-```go
-ExtendPropertyValues: map[string][]any{
-    "(extend_properties->>'priority')::numeric = ?": {1},
-}
-```
-
-#### 新方式
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-    ),
-)
-```
-
-### 示例 2:多条件 AND 查询
-
-#### 旧方式
-```go
-ExtendPropertyValues: map[string][]any{
-    "(extend_properties->>'priority')::numeric = ?": {1},
-    "(extend_properties->>'progress')::numeric > ?": {50},
-    "extend_properties->>'deptName' = ?": {"技术部"},
-}
-```
-
-#### 新方式
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.GreaterThan("progress", 50),
-        managesdk.Equal("deptName", "技术部"),
-    ),
-)
-```
-
-### 示例 3:范围查询
-
-#### 旧方式
-```go
-ExtendPropertyValues: map[string][]any{
-    "(extend_properties->>'duration')::numeric BETWEEN ? AND ?": {2.0, 8.0},
-}
-```
-
-#### 新方式
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.GreaterEqual("duration", 2.0),
-        managesdk.LessEqual("duration", 8.0),
-    ),
-)
-```
-
-### 示例 4:IN 查询
-
-#### 旧方式
-```go
-ExtendPropertyValues: map[string][]any{
-    "(extend_properties->>'complex')::numeric IN (?, ?)": {2, 3},
-}
-```
-
-#### 新方式
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.In("complex", []int{2, 3}),
-    ),
-)
-```
-
-### 示例 5:模糊查询
-
-#### 旧方式
-```go
-ExtendPropertyValues: map[string][]any{
-    "extend_properties->>'memberName' LIKE ?": {"%张%"},
-}
-```
-
-#### 新方式
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Like("memberName", "%张%"),
-    ),
-)
-```
-
-### 示例 6:OR 查询
-
-#### 旧方式
-```go
-// 旧方式不支持 OR 查询,需要多次调用
-```
-
-#### 新方式
-```go
-AdvancedQuery: managesdk.OrQuery(
-    managesdk.OrGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.Equal("priority", 2),
-    ),
-)
-```
-
-### 示例 7:复杂组合查询
-
-#### 旧方式
-```go
-// 旧方式难以表达:(priority = 1 AND progress > 50) OR (priority = 2 AND progress > 80)
-```
-
-#### 新方式
-```go
-AdvancedQuery: managesdk.OrQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.GreaterThan("progress", 50),
-    ),
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 2),
-        managesdk.GreaterThan("progress", 80),
-    ),
-)
-```
-
----
-
-## 新增功能
-
-### 1. 嵌套条件组
-
-```go
-// (priority = 1 AND (progress > 50 OR duration > 4))
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.NewNestedConditionGroup(
-            managesdk.OrGroup(
-                managesdk.GreaterThan("progress", 50),
-                managesdk.GreaterThan("duration", 4),
-            ),
-        ),
-    ),
-)
-```
-
-### 2. 便捷的辅助函数
-
-```go
-// 快速构建 AND 查询
-managesdk.AndQuery(groups...)
-
-// 快速构建 OR 查询
-managesdk.OrQuery(groups...)
-
-// 快速构建 AND 条件组
-managesdk.AndGroup(conditions...)
-
-// 快速构建 OR 条件组
-managesdk.OrGroup(conditions...)
-```
-
-### 3. 丰富的操作符
-
-- 基础比较:`Equal`, `NotEqual`, `GreaterThan`, `GreaterEqual`, `LessThan`, `LessEqual`
-- 字符串匹配:`Like`, `NotLike`, `StartsWith`, `EndsWith`
-- 空值判断:`IsNull`, `IsNotNull`
-- 集合操作:`In`, `NotIn`
-
----
-
-## 向后兼容性
-
-⚠️ **这是一个破坏性变更**
-
-- `ExtendPropertyValues` 参数已被移除
-- 所有使用 `ExtendPropertyValues` 的代码需要迁移到 `AdvancedQuery`
-
----
-
-## 迁移步骤
-
-### 1. 更新 SDK 版本
-
-确保使用最新版本的 bdata SDK。
-
-### 2. 替换查询参数
-
-将所有 `ExtendPropertyValues` 替换为 `AdvancedQuery`。
-
-### 3. 重写查询逻辑
-
-使用新的查询构建器 API 重写查询条件。
-
-### 4. 测试验证
-
-充分测试所有查询功能,确保结果正确。
-
----
-
-## 常见问题
-
-### Q1: 如何表达复杂的 SQL 条件?
-
-**A**: 使用嵌套条件组和多个条件组合:
-
-```go
-// (A AND B) OR (C AND D)
-managesdk.OrQuery(
-    managesdk.AndGroup(A, B),
-    managesdk.AndGroup(C, D),
-)
-```
-
-### Q2: 如何进行 BETWEEN 查询?
-
-**A**: 使用 `GreaterEqual` 和 `LessEqual` 组合:
-
-```go
-managesdk.AndGroup(
-    managesdk.GreaterEqual("field", min),
-    managesdk.LessEqual("field", max),
-)
-```
-
-### Q3: 如何进行 NOT IN 查询?
-
-**A**: 使用 `NotIn` 操作符:
-
-```go
-managesdk.NotIn("field", []any{v1, v2, v3})
-```
-
-### Q4: 字段名需要加前缀吗?
-
-**A**: 不需要,直接使用字段名即可,底层服务会自动处理:
-
-```go
-// 正确
-managesdk.Equal("priority", 1)
-
-// 错误(不需要加前缀)
-managesdk.Equal("extend_properties->>'priority'", 1)
-```
-
-### Q5: 数值类型需要转换吗?
-
-**A**: 不需要,底层服务会自动处理类型转换:
-
-```go
-// 正确
-managesdk.Equal("priority", 1)
-
-// 不需要手动转换
-managesdk.Equal("(extend_properties->>'priority')::numeric", 1)
-```
-
----
-
-## 相关文档
-
-- **ACTIVITY_PLAN_USAGE.md** - 完整的使用文档
-- **advanced_query.go** - AdvancedQuery 实现源码
-- **model.go** - 数据模型定义
-
----
-
-## 总结
-
-### 优势
-
-✅ **类型安全**:编译时检查,减少运行时错误  
-✅ **易于使用**:语义清晰,无需编写 SQL  
-✅ **功能强大**:支持复杂的逻辑组合和嵌套  
-✅ **可维护性**:代码更清晰,易于理解和修改  
-✅ **扩展性**:易于添加新的操作符和功能  
-
-### 迁移建议
-
-1. 优先迁移简单查询
-2. 逐步迁移复杂查询
-3. 充分测试每个迁移点
-4. 保留旧代码作为参考
-
----
-
-**变更完成时间**:2026-05-21  
-**变更人员**:Kiro AI  
-**状态**:✅ 已完成

+ 0 - 430
ADVANCED_QUERY_USAGE.md

@@ -1,430 +0,0 @@
-# 高级查询使用说明
-
-## 概述
-
-高级查询模块提供了类似 Navicat 数据筛选的灵活查询条件构建能力,支持复杂的条件组合和嵌套。
-
-## 核心概念
-
-### 1. 查询操作符 (QueryOperator)
-
-| 操作符 | 常量 | 说明 | 示例 |
-|--------|------|------|------|
-| 等于 | `OperatorEqual` | 字段值等于指定值 | `name = "测试"` |
-| 不等于 | `OperatorNotEqual` | 字段值不等于指定值 | `status != "deleted"` |
-| 大于 | `OperatorGreaterThan` | 字段值大于指定值 | `quantity > 10` |
-| 大于等于 | `OperatorGreaterEqual` | 字段值大于等于指定值 | `price >= 100` |
-| 小于 | `OperatorLessThan` | 字段值小于指定值 | `stock < 50` |
-| 小于等于 | `OperatorLessEqual` | 字段值小于等于指定值 | `age <= 18` |
-| 包含 | `OperatorLike` | 字段值包含指定字符串 | `name LIKE "%测试%"` |
-| 不包含 | `OperatorNotLike` | 字段值不包含指定字符串 | `name NOT LIKE "%测试%"` |
-| 开头是 | `OperatorStartsWith` | 字段值以指定字符串开头 | `code LIKE "ABC%"` |
-| 结尾是 | `OperatorEndsWith` | 字段值以指定字符串结尾 | `email LIKE "%@qq.com"` |
-| 为空 | `OperatorIsNull` | 字段值为 NULL | `deleted_at IS NULL` |
-| 不为空 | `OperatorIsNotNull` | 字段值不为 NULL | `email IS NOT NULL` |
-| 在列表中 | `OperatorIn` | 字段值在指定列表中 | `status IN ('active', 'pending')` |
-| 不在列表中 | `OperatorNotIn` | 字段值不在指定列表中 | `status NOT IN ('deleted', 'archived')` |
-
-### 2. 逻辑操作符 (LogicOperator)
-
-| 操作符 | 常量 | 说明 |
-|--------|------|------|
-| 与 | `LogicAnd` | 所有条件都必须满足 |
-| 或 | `LogicOr` | 满足任意一个条件即可 |
-
-### 3. 数据结构
-
-```go
-// 单个查询条件
-type QueryCondition struct {
-    Field    string        // 字段名
-    Operator QueryOperator // 操作符
-    Value    any           // 比较值(可选)
-}
-
-// 条件项(可以是单个条件或嵌套的条件组)
-type ConditionItem struct {
-    Condition       *ConditionGroup // 嵌套条件组
-    SingleCondition *QueryCondition // 单个条件
-}
-
-// 条件组
-type ConditionGroup struct {
-    Conditions []ConditionItem // 条件列表
-    Logic      LogicOperator   // 组内逻辑关系
-}
-
-// 高级查询参数
-type AdvancedQueryParams struct {
-    ConditionGroups []ConditionGroup // 条件组列表
-    GroupLogic      LogicOperator    // 组间逻辑关系
-}
-```
-
-## 快捷函数
-
-### 单条件快捷函数
-
-```go
-// 等于
-Equal("name", "测试资源")
-
-// 不等于
-NotEqual("status", "deleted")
-
-// 大于
-GreaterThan("quantity", 10)
-
-// 大于等于
-GreaterEqual("price", 100)
-
-// 小于
-LessThan("stock", 50)
-
-// 小于等于
-LessEqual("age", 18)
-
-// 包含(模糊匹配)
-Like("name", "测试")
-
-// 不包含
-NotLike("name", "测试")
-
-// 开头是
-StartsWith("code", "ABC")
-
-// 结尾是
-EndsWith("email", "@qq.com")
-
-// 为空
-IsNull("deleted_at")
-
-// 不为空
-IsNotNull("email")
-
-// 在列表中
-In("category", []any{"设备", "耗材", "工具"})
-
-// 不在列表中
-NotIn("status", []any{"deleted", "archived"})
-```
-
-### 条件组快捷函数
-
-```go
-// AND 条件组(所有条件都必须满足)
-AndGroup(
-    Equal("name", "测试"),
-    GreaterThan("quantity", 10),
-    IsNotNull("code"),
-)
-
-// OR 条件组(满足任意一个条件即可)
-OrGroup(
-    Equal("category", "设备"),
-    Equal("category", "耗材"),
-    Like("name", "测试"),
-)
-```
-
-### 完整查询快捷函数
-
-```go
-// AND 查询(所有条件组都必须满足)
-AndQuery(
-    AndGroup(Equal("name", "测试"), GreaterThan("quantity", 10)),
-    OrGroup(Equal("category", "设备"), Equal("category", "耗材")),
-)
-
-// OR 查询(满足任意一个条件组即可)
-OrQuery(
-    AndGroup(Equal("status", "active"), GreaterThan("quantity", 0)),
-    AndGroup(Equal("status", "pending"), IsNotNull("approved_by")),
-)
-```
-
-## 使用示例
-
-### 示例 1:简单条件查询
-
-查询名称包含"测试"且数量大于 10 的资源:
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: &managesdk.AdvancedQueryParams{
-        ConditionGroups: []managesdk.ConditionGroup{
-            managesdk.AndGroup(
-                managesdk.Like("name", "测试"),
-                managesdk.GreaterThan("quantity", 10),
-            ),
-        },
-        GroupLogic: managesdk.LogicAnd,
-    },
-    BaseQueryParams: managesdk.BaseQueryParams{
-        PageNo:   1,
-        PageSize: 10,
-    },
-}
-
-result, err := client.Manage().Query(params)
-```
-
-等价于 SQL:
-```sql
-WHERE (name LIKE '%测试%' AND quantity > 10)
-```
-
-### 示例 2:OR 条件查询
-
-查询分类为"设备"或"耗材"的资源:
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: &managesdk.AdvancedQueryParams{
-        ConditionGroups: []managesdk.ConditionGroup{
-            managesdk.OrGroup(
-                managesdk.Equal("category", "设备"),
-                managesdk.Equal("category", "耗材"),
-            ),
-        },
-        GroupLogic: managesdk.LogicAnd,
-    },
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-等价于 SQL:
-```sql
-WHERE (category = '设备' OR category = '耗材')
-```
-
-### 示例 3:使用 IN 操作符
-
-查询多个分类的资源:
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: &managesdk.AdvancedQueryParams{
-        ConditionGroups: []managesdk.ConditionGroup{
-            {
-                Conditions: []managesdk.ConditionItem{
-                    managesdk.In("category", []any{"设备", "耗材", "工具"}),
-                },
-                Logic: managesdk.LogicAnd,
-            },
-        },
-        GroupLogic: managesdk.LogicAnd,
-    },
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-等价于 SQL:
-```sql
-WHERE category IN ('设备', '耗材', '工具')
-```
-
-### 示例 4:复杂嵌套查询
-
-查询满足以下条件的资源:
-- (名称包含"测试" AND 数量 > 10) OR (分类是"设备" AND 状态不为空)
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: managesdk.OrQuery(
-        managesdk.AndGroup(
-            managesdk.Like("name", "测试"),
-            managesdk.GreaterThan("quantity", 10),
-        ),
-        managesdk.AndGroup(
-            managesdk.Equal("category", "设备"),
-            managesdk.IsNotNull("status"),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-等价于 SQL:
-```sql
-WHERE ((name LIKE '%测试%' AND quantity > 10) OR (category = '设备' AND status IS NOT NULL))
-```
-
-### 示例 5:多条件组组合
-
-查询满足以下条件的资源:
-- (名称包含"测试" AND 数量 > 10)
-- AND (分类是"设备" OR 分类是"耗材")
-- AND (状态不为空)
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: managesdk.AndQuery(
-        // 条件组1:名称和数量
-        managesdk.AndGroup(
-            managesdk.Like("name", "测试"),
-            managesdk.GreaterThan("quantity", 10),
-        ),
-        // 条件组2:分类
-        managesdk.OrGroup(
-            managesdk.Equal("category", "设备"),
-            managesdk.Equal("category", "耗材"),
-        ),
-        // 条件组3:状态
-        managesdk.AndGroup(
-            managesdk.IsNotNull("status"),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-等价于 SQL:
-```sql
-WHERE ((name LIKE '%测试%' AND quantity > 10) 
-       AND (category = '设备' OR category = '耗材') 
-       AND (status IS NOT NULL))
-```
-
-### 示例 6:深层嵌套查询
-
-查询满足以下条件的资源:
-- ((名称包含"A" OR 名称包含"B") AND 数量 > 0) OR ((分类是"设备" AND 状态是"可用"))
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: managesdk.OrQuery(
-        // 条件组1
-        managesdk.AndGroup(
-            // 嵌套的 OR 条件
-            managesdk.NewNestedConditionGroup(
-                managesdk.OrGroup(
-                    managesdk.Like("name", "A"),
-                    managesdk.Like("name", "B"),
-                ),
-            ),
-            managesdk.GreaterThan("quantity", 0),
-        ),
-        // 条件组2
-        managesdk.AndGroup(
-            managesdk.Equal("category", "设备"),
-            managesdk.Equal("status", "available"),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-等价于 SQL:
-```sql
-WHERE (((name LIKE '%A%' OR name LIKE '%B%') AND quantity > 0) 
-       OR (category = '设备' AND status = 'available'))
-```
-
-### 示例 7:范围查询
-
-查询数量在 10 到 100 之间的资源:
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: &managesdk.AdvancedQueryParams{
-        ConditionGroups: []managesdk.ConditionGroup{
-            managesdk.AndGroup(
-                managesdk.GreaterEqual("quantity", 10),
-                managesdk.LessEqual("quantity", 100),
-            ),
-        },
-        GroupLogic: managesdk.LogicAnd,
-    },
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-等价于 SQL:
-```sql
-WHERE (quantity >= 10 AND quantity <= 100)
-```
-
-### 示例 8:空值判断
-
-查询未删除的资源(deleted_at 为空):
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID: "tenant123",
-    AdvancedQuery: &managesdk.AdvancedQueryParams{
-        ConditionGroups: []managesdk.ConditionGroup{
-            managesdk.AndGroup(
-                managesdk.IsNull("deleted_at"),
-            ),
-        },
-        GroupLogic: managesdk.LogicAnd,
-    },
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-等价于 SQL:
-```sql
-WHERE deleted_at IS NULL
-```
-
-## 与传统查询参数配合使用
-
-高级查询可以与传统查询参数配合使用:
-
-```go
-params := managesdk.QueryResourcesParams{
-    TenantID:     "tenant123",
-    Name:         "测试",           // 传统参数:名称筛选
-    BusinessType: "mbrms",         // 传统参数:业务类型
-    AdvancedQuery: managesdk.AndQuery(  // 高级查询:额外条件
-        managesdk.GreaterThan("quantity", 10),
-        managesdk.IsNotNull("code"),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-传统参数会先应用,然后再应用高级查询条件。
-
-## 最佳实践
-
-### 1. 性能优化
-
-- 对于大表查询,优先使用 `Equal`、`In` 等精确匹配操作符
-- 避免在大文本字段上使用 `Like` 操作符
-- 合理使用索引字段进行查询
-
-### 2. 条件组织
-
-- 将选择性高的条件放在前面
-- 合理分组,避免过深的嵌套层级
-- 使用语义化的条件组命名(通过代码注释)
-
-### 3. 安全性
-
-- 字段名应该使用白名单验证
-- 避免直接拼接用户输入到查询条件
-
-## 注意事项
-
-1. **字段名映射**:确保使用的字段名与数据库字段名一致
-2. **类型匹配**:比较值的类型应与字段类型匹配
-3. **NULL 处理**:`IsNull` 和 `IsNotNull` 不需要 Value 参数
-4. **数组参数**:`In` 和 `NotIn` 的 Value 应该是 `[]any` 类型

+ 0 - 266
API_CHANGE_SUMMARY.md

@@ -1,266 +0,0 @@
-# bdata SDK API 变更总结
-
-## 📋 变更概述
-
-**变更时间**:2026-05-21  
-**变更类型**:破坏性变更  
-**影响范围**:Activity 和 Plan 查询接口
-
----
-
-## 🔧 核心变更
-
-### 参数替换
-
-将 `ExtendPropertyValues` 参数替换为 `AdvancedQuery` 参数。
-
-#### QueryActivitiesParams
-
-```go
-// 旧参数(已移除)
-ExtendPropertyValues map[string][]any `json:"extendPropertyValues,omitempty"`
-
-// 新参数
-AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`
-```
-
-#### QueryPlansParams
-
-```go
-// 旧参数(已移除)
-ExtendPropertyValues map[string][]any `json:"extendPropertyValues,omitempty"`
-
-// 新参数
-AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`
-```
-
----
-
-## 📊 对比示例
-
-### 旧方式(ExtendPropertyValues)
-
-```go
-params := managesdk.QueryActivitiesParams{
-    TenantID: "tenant-001",
-    ExtendPropertyValues: map[string][]any{
-        "(extend_properties->>'priority')::numeric = ?": {1},
-        "(extend_properties->>'progress')::numeric > ?": {50},
-    },
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-**缺点**:
-- ❌ 需要手动编写 SQL 片段
-- ❌ 容易出错(SQL 语法、类型转换)
-- ❌ 不支持复杂的 OR 逻辑
-- ❌ 代码可读性差
-
-### 新方式(AdvancedQuery)
-
-```go
-params := managesdk.QueryActivitiesParams{
-    TenantID: "tenant-001",
-    AdvancedQuery: managesdk.AndQuery(
-        managesdk.AndGroup(
-            managesdk.Equal("priority", 1),
-            managesdk.GreaterThan("progress", 50),
-        ),
-    ),
-    PageNo:   1,
-    PageSize: 10,
-}
-```
-
-**优点**:
-- ✅ 类型安全
-- ✅ 语义清晰
-- ✅ 支持复杂逻辑组合
-- ✅ 代码可读性强
-- ✅ 易于维护
-
----
-
-## 🎯 支持的操作符
-
-| 操作符 | 函数 | 示例 |
-|--------|------|------|
-| = | `Equal(field, value)` | `Equal("priority", 1)` |
-| != | `NotEqual(field, value)` | `NotEqual("status", "closed")` |
-| > | `GreaterThan(field, value)` | `GreaterThan("progress", 50)` |
-| >= | `GreaterEqual(field, value)` | `GreaterEqual("duration", 2.0)` |
-| < | `LessThan(field, value)` | `LessThan("progress", 100)` |
-| <= | `LessEqual(field, value)` | `LessEqual("duration", 8.0)` |
-| LIKE | `Like(field, value)` | `Like("name", "%项目%")` |
-| NOT LIKE | `NotLike(field, value)` | `NotLike("name", "%测试%")` |
-| STARTS WITH | `StartsWith(field, value)` | `StartsWith("name", "项目")` |
-| ENDS WITH | `EndsWith(field, value)` | `EndsWith("name", "完成")` |
-| IS NULL | `IsNull(field)` | `IsNull("remark")` |
-| IS NOT NULL | `IsNotNull(field)` | `IsNotNull("remark")` |
-| IN | `In(field, values)` | `In("priority", []int{1, 2})` |
-| NOT IN | `NotIn(field, values)` | `NotIn("status", []string{"closed"})` |
-
----
-
-## 💡 常用查询模式
-
-### 1. 简单查询
-
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-    ),
-)
-```
-
-### 2. 多条件 AND
-
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.GreaterThan("progress", 50),
-        managesdk.Equal("deptName", "技术部"),
-    ),
-)
-```
-
-### 3. 多条件 OR
-
-```go
-AdvancedQuery: managesdk.OrQuery(
-    managesdk.OrGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.Equal("priority", 2),
-    ),
-)
-```
-
-### 4. 范围查询
-
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.GreaterEqual("duration", 2.0),
-        managesdk.LessEqual("duration", 8.0),
-    ),
-)
-```
-
-### 5. IN 查询
-
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.In("complex", []int{2, 3}),
-    ),
-)
-```
-
-### 6. 模糊查询
-
-```go
-AdvancedQuery: managesdk.AndQuery(
-    managesdk.AndGroup(
-        managesdk.Like("memberName", "%张%"),
-    ),
-)
-```
-
-### 7. 复杂组合
-
-```go
-// (priority = 1 AND progress > 50) OR (priority = 2 AND progress > 80)
-AdvancedQuery: managesdk.OrQuery(
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 1),
-        managesdk.GreaterThan("progress", 50),
-    ),
-    managesdk.AndGroup(
-        managesdk.Equal("priority", 2),
-        managesdk.GreaterThan("progress", 80),
-    ),
-)
-```
-
----
-
-## 📝 迁移清单
-
-### 修改的文件
-
-- ✅ `bdata/model.go` - 更新 QueryActivitiesParams 和 QueryPlansParams
-- ✅ `bdata/ACTIVITY_PLAN_USAGE.md` - 更新使用文档
-- ✅ `bdata/ADVANCED_QUERY_MIGRATION.md` - 创建迁移指南
-- ✅ `bdata/API_CHANGE_SUMMARY.md` - 创建变更总结
-
-### 需要迁移的代码
-
-所有使用以下参数的代码需要迁移:
-- `QueryActivitiesParams.ExtendPropertyValues`
-- `QueryPlansParams.ExtendPropertyValues`
-
----
-
-## ⚠️ 注意事项
-
-### 1. 破坏性变更
-
-这是一个破坏性变更,所有使用 `ExtendPropertyValues` 的代码必须迁移。
-
-### 2. 字段名不需要前缀
-
-```go
-// ✅ 正确
-managesdk.Equal("priority", 1)
-
-// ❌ 错误(不需要加前缀)
-managesdk.Equal("extend_properties->>'priority'", 1)
-```
-
-### 3. 自动类型转换
-
-底层服务会自动处理类型转换,无需手动转换:
-
-```go
-// ✅ 正确
-managesdk.Equal("priority", 1)
-
-// ❌ 不需要(底层自动处理)
-managesdk.Equal("(extend_properties->>'priority')::numeric", 1)
-```
-
-### 4. 底层处理
-
-底层服务会将 `AdvancedQueryParams` 解析为 `ExtendPropertyValues`,开发者无需关心实现细节。
-
----
-
-## 📚 相关文档
-
-1. **ADVANCED_QUERY_MIGRATION.md** - 详细的迁移指南
-2. **ACTIVITY_PLAN_USAGE.md** - 完整的使用文档
-3. **advanced_query.go** - AdvancedQuery 实现源码
-
----
-
-## ✅ 优势总结
-
-| 特性 | 旧方式 | 新方式 |
-|------|--------|--------|
-| 类型安全 | ❌ | ✅ |
-| 易于使用 | ❌ | ✅ |
-| 支持 OR 逻辑 | ❌ | ✅ |
-| 支持嵌套条件 | ❌ | ✅ |
-| 代码可读性 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
-| 可维护性 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
-| 扩展性 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
-
----
-
-**变更完成时间**:2026-05-21  
-**变更人员**:Kiro AI  
-**状态**:✅ 已完成

+ 20 - 18
model.go

@@ -172,14 +172,15 @@ type SaveActivityParams struct {
 }
 
 type QueryActivitiesParams struct {
-	Name          string               `json:"name,omitempty"`
-	ActorID       string               `json:"actorId,omitempty"`
-	BusinessType  []string             `json:"businessType,omitempty"`
-	AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`
-	CreateUserID  string               `json:"createUserId,omitempty"`
-	TenantID      string               `json:"tenantId"`
-	PageNo        int                  `json:"pageNo"`
-	PageSize      int                  `json:"pageSize"`
+	Name                 string               `json:"name,omitempty"`
+	ActorID              string               `json:"actorId,omitempty"`
+	BusinessType         []string             `json:"businessType,omitempty"`
+	ExtendPropertyValues map[string]any       `form:"extendPropertyValues"`
+	AdvancedQuery        *AdvancedQueryParams `json:"advancedQuery,omitempty"`
+	CreateUserID         string               `json:"createUserId,omitempty"`
+	TenantID             string               `json:"tenantId"`
+	PageNo               int                  `json:"pageNo"`
+	PageSize             int                  `json:"pageSize"`
 }
 
 type DeleteActivityParams struct {
@@ -242,16 +243,17 @@ type SavePlanParams struct {
 }
 
 type QueryPlansParams struct {
-	PlanType      string               `json:"planType,omitempty"`
-	Name          string               `json:"name,omitempty"`
-	ActorID       string               `json:"actorId,omitempty"`
-	State         string               `json:"state,omitempty"`
-	BusinessType  []string             `json:"businessType,omitempty"`
-	AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`
-	CreateUserID  string               `json:"createUserId,omitempty"`
-	TenantID      string               `json:"tenantId"`
-	PageNo        int                  `json:"pageNo"`
-	PageSize      int                  `json:"pageSize"`
+	PlanType             string               `json:"planType,omitempty"`
+	Name                 string               `json:"name,omitempty"`
+	ActorID              string               `json:"actorId,omitempty"`
+	State                string               `json:"state,omitempty"`
+	BusinessType         []string             `json:"businessType,omitempty"`
+	ExtendPropertyValues map[string]any       `form:"extendPropertyValues"`
+	AdvancedQuery        *AdvancedQueryParams `json:"advancedQuery,omitempty"`
+	CreateUserID         string               `json:"createUserId,omitempty"`
+	TenantID             string               `json:"tenantId"`
+	PageNo               int                  `json:"pageNo"`
+	PageSize             int                  `json:"pageSize"`
 }
 
 type DeletePlanParams struct {