变更时间:2026-05-21
变更类型:破坏性变更
影响范围:Activity 和 Plan 查询接口
将 ExtendPropertyValues 参数替换为 AdvancedQuery 参数。
// 旧参数(已移除)
ExtendPropertyValues map[string][]any `json:"extendPropertyValues,omitempty"`
// 新参数
AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`
// 旧参数(已移除)
ExtendPropertyValues map[string][]any `json:"extendPropertyValues,omitempty"`
// 新参数
AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`
params := managesdk.QueryActivitiesParams{
TenantID: "tenant-001",
ExtendPropertyValues: map[string][]any{
"(extend_properties->>'priority')::numeric = ?": {1},
"(extend_properties->>'progress')::numeric > ?": {50},
},
PageNo: 1,
PageSize: 10,
}
缺点:
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"}) |
AdvancedQuery: managesdk.AndQuery(
managesdk.AndGroup(
managesdk.Equal("priority", 1),
),
)
AdvancedQuery: managesdk.AndQuery(
managesdk.AndGroup(
managesdk.Equal("priority", 1),
managesdk.GreaterThan("progress", 50),
managesdk.Equal("deptName", "技术部"),
),
)
AdvancedQuery: managesdk.OrQuery(
managesdk.OrGroup(
managesdk.Equal("priority", 1),
managesdk.Equal("priority", 2),
),
)
AdvancedQuery: managesdk.AndQuery(
managesdk.AndGroup(
managesdk.GreaterEqual("duration", 2.0),
managesdk.LessEqual("duration", 8.0),
),
)
AdvancedQuery: managesdk.AndQuery(
managesdk.AndGroup(
managesdk.In("complex", []int{2, 3}),
),
)
AdvancedQuery: managesdk.AndQuery(
managesdk.AndGroup(
managesdk.Like("memberName", "%张%"),
),
)
// (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 和 QueryPlansParamsbdata/ACTIVITY_PLAN_USAGE.md - 更新使用文档bdata/ADVANCED_QUERY_MIGRATION.md - 创建迁移指南bdata/API_CHANGE_SUMMARY.md - 创建变更总结所有使用以下参数的代码需要迁移:
QueryActivitiesParams.ExtendPropertyValuesQueryPlansParams.ExtendPropertyValues这是一个破坏性变更,所有使用 ExtendPropertyValues 的代码必须迁移。
// ✅ 正确
managesdk.Equal("priority", 1)
// ❌ 错误(不需要加前缀)
managesdk.Equal("extend_properties->>'priority'", 1)
底层服务会自动处理类型转换,无需手动转换:
// ✅ 正确
managesdk.Equal("priority", 1)
// ❌ 不需要(底层自动处理)
managesdk.Equal("(extend_properties->>'priority')::numeric", 1)
底层服务会将 AdvancedQueryParams 解析为 ExtendPropertyValues,开发者无需关心实现细节。
| 特性 | 旧方式 | 新方式 |
|---|---|---|
| 类型安全 | ❌ | ✅ |
| 易于使用 | ❌ | ✅ |
| 支持 OR 逻辑 | ❌ | ✅ |
| 支持嵌套条件 | ❌ | ✅ |
| 代码可读性 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 可维护性 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 扩展性 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
变更完成时间:2026-05-21
变更人员:Kiro AI
状态:✅ 已完成