# P4/P5 实例筛选分页验证记录 日期:2026-09-18。范围为 `GET /v1/workflows`、独立SDK `ListWorkflows`、固定版本查询范围迁移和完整分页示例。P4/P5整体与P6/P7仍未完成;下一项是统一状态事件时间线范围核对、独立轮询/恢复场景和阶段验收。 ## 实现与边界 - 认证命名空间内按定义、固定版本、状态、paused、精确业务键、创建时间筛选;默认20、最多100条摘要,不读取实例的大输入输出。 - SQL在LIMIT前按固定版本全部队列过滤,包含未执行分支。范围不是授权真相,返回前仍校验原定义/摘要、队列、固定版本/定义/门控归属及策略。 - 游标绑定命名空间、全部规范化筛选和当前队列范围;同一时间戳用ID定位。拒绝改筛选、权限范围变化、重复或歧义JSON,不承诺跨页快照。 - 000024只新增派生范围表、不可更新触发器及7个复合索引;回填遍历DSL步骤块,保留原版本/实例。最终表结构外键为0,无级联。当前36个模型、311个直接持久化字段有中文注释。 - HTTP严格解析参数;SDK与服务端保持独立module。独立示例发布等待流程、验证精确分页、取消结清,不需Worker,也不模拟业务成功。 接口:[查询手册](../api/workflow-queries.md)。示例:[运行说明](../examples/workflow-query.md)及[源码](../../sdk/go/examples/workflow-query/main.go)。 ## 环境与命令 macOS arm64、Go 1.27.1、Docker MySQL 8.4.10,一次性隔离数据库。服务端编译为真实进程,SDK通过真实HTTP访问;原有Worker、恢复及订阅链路继续通过WSS回归。未使用生产数据库。 ```sh make fmt test vet build DOCKER=/usr/local/bin/docker make integration ``` 本地工具链经Makefile的GO变量显式选择。隔离脚本只清理本次数据库容器与临时普通文件,不删除业务目录。完整脚本保留全部既有回归,增加实例查询SDK及第21个SDK示例。 ## 已验证 | 验证 | 结果 | | --- | --- | | fmt、race单元回归、vet、服务端及独立业务示例构建 | 通过 | | 真实MySQL升级与定义发布基础:v7外键、v9额度旧库、模型列映射 | 通过,旧70条外键→0,323个原索引组成部分保留 | | 实例查询4组:8种索引组合、相同时间分页、时间边界、精确键、paused、游标及跨命名空间 | 通过 | | 全固定版本队列鉴权 | 通过,后续任务尚未生成时仍受第二队列权限约束;发布v2不改变v1实例范围 | | 无队列版本、缺失/缩小范围、策略损坏及动作权限 | 通过,拒绝损坏数据并不返回部分页 | | v23→v24升级 | 通过,嵌套PARALLEL/BRANCH/TASK/POLL范围正确、重复去重、常量伪queue_id排除、原版本全部字段保持、7个新增索引列序正确、外键0 | | 独立SDK真实HTTP | 通过,精确键/时间/版本/paused=false/游标/非法查询及三个实例取消结清 | | 定义与五组原流程SDK回归、原workflow示例 | 通过 | | workflow-query独立例子 | 通过,matched=2、pages=2、三个实例CANCELLED | | 完整标准集成脚本 | 通过,退出码0;21个SDK示例、2个独立业务模块、流程与Worker/订阅进程故障回归全部完成 | 定向存储回归11.951秒,SDK组27.361秒,其中查询SDK2.92秒。上述数字仅是本次测试执行耗时,不是性能指标。持久化模型中文注释校验311项,缺失0;Markdown检查1067个本地链接、66个JSON块,错误0。 全量回归中存储测试222.089秒、流程进程恢复49.000秒、流程SDK组26.665秒(查询SDK2.87秒)、最终Worker/订阅进程故障组95.296秒。独立Inbox/Outbox分别35.641秒/33.862秒。以上均通过,日志未出现失败。 本轮定向回归最初发现三处测试夹具问题:第二队列缺少必填配额、共享Go指针同时改了多个节点导致预期队列数错误、拒绝权限的预期错误码写错。已修复夹具并完整重跑定向链路;升级逻辑没有通过放宽范围或移除校验使测试通过。 ## 未验证与交付余项 - 没有百万租户/高选择性权限稀疏查询压测;limit限制返回候选,不保证数据库扫描行数。每页最多验证101个固定版本、队列统一排序校验;大定义、队列集合与7个新增索引的读写开销须纳入P6容量测试。 - 没有真实生产主从切换、跨故障域高可用或生产备份恢复结论;本地既有进程强杀回归不能替代这些验收。 - 迁移需先停止旧版本的流程发布写入,回填后由新版接管;未实现新旧发布写节点无协调并行升级。迁移全量回填既有版本,并为实例增加索引;大库需测量DDL时长、额外磁盘和维护窗口。历史定义结构损坏可能导致迁移失败,应先核查数据,不能跳过迁移或修改历史校验记录。 - 派生范围被错误增大可能隐藏合法结果;必须保护数据库写权限并按原定义核查修复,不通过放宽业务权限绕过。关联一致性仍由代码事务保证,不引入外键。 - 原定统一事件时间线范围核对、更多独立场景、P4/P5全范围审计和P6/P7持续推进。