world_sync/scripts/m11b2_selftest_output.txt
2026-09-20 16:39:12 +08:00

386 lines
43 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

== 自检落点4 个路径,真源 + 镜像同一套 spec 断言)==
- modules/world_sync/models/pbl_runtime_event.json
- modules/world_sync/models/pbl_entity_state.json
- apps/scense/pkgs/world_sync/models/pbl_runtime_event.json
- apps/scense/pkgs/world_sync/models/pbl_entity_state.json
== 真源 vs 镜像 sha256 一致性断言 ==
pbl_runtime_event: src=705f726f455c75327790435a8743c9798bf07bffa9be25180a79fbb677dddcc9
pbl_runtime_event: mir=705f726f455c75327790435a8743c9798bf07bffa9be25180a79fbb677dddcc9
pbl_entity_state: src=d485ac409749fa41ec1eb4bfe115b11ed3144187f4a9b3f8e233a967ab6af320
pbl_entity_state: mir=d485ac409749fa41ec1eb4bfe115b11ed3144187f4a9b3f8e233a967ab6af320
PASS [exists] modules/world_sync/models/pbl_runtime_event.json
PASS [json-parse] modules/world_sync/models/pbl_runtime_event.json OK
PASS [root-keys] modules/world_sync/models/pbl_runtime_event.json ⊆ summary/fields/indexes/codes -> ['codes', 'fields', 'indexes', 'summary']
PASS [summary-count] modules/world_sync/models/pbl_runtime_event.json 恰好 1 条 -> 1
PASS [summary-keys] modules/world_sync/models/pbl_runtime_event.json ⊆ ['catelog', 'comment', 'name', 'primary', 'title']
PASS [summary-name] modules/world_sync/models/pbl_runtime_event.json name==pbl_runtime_event -> pbl_runtime_event
PASS [summary-title] modules/world_sync/models/pbl_runtime_event.json title 非空
PASS [summary-primary] modules/world_sync/models/pbl_runtime_event.json primary==['id'] (array) -> ['id']
PASS [summary-catelog] modules/world_sync/models/pbl_runtime_event.json catelog 合法 -> relation
PASS [fields-count] modules/world_sync/models/pbl_runtime_event.json >=1 -> 12
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#id length 为正整数 -> 32
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#id -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#event_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#event_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#event_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#event_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#event_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#event_id -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#tenant_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#tenant_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#tenant_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#tenant_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#tenant_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#tenant_id -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#world_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#world_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#world_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#world_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#world_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#world_id -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#session_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#session_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#session_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#session_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#session_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#session_id -> yes
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#entity_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#entity_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#entity_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#entity_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#entity_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#entity_id -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#event_type ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#event_type type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#event_type -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#event_type title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#event_type length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#event_type -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#payload ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#payload type 抽象 -> 'text'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#payload -> 'text'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#payload title 非空(DDL COMMENT 来源)
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#payload -> yes
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#causation_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#causation_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#causation_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#causation_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#causation_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#causation_id -> yes
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#source ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#source type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#source -> 'str'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#source title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_runtime_event.json#source length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#source -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#state_version ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#state_version type 抽象 -> 'int'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#state_version -> 'int'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#state_version title 非空(DDL COMMENT 来源)
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#state_version -> no
PASS [field-keys] modules/world_sync/models/pbl_runtime_event.json#created_at ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_runtime_event.json#created_at type 抽象 -> 'datetime'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_runtime_event.json#created_at -> 'datetime'
PASS [field-title] modules/world_sync/models/pbl_runtime_event.json#created_at title 非空(DDL COMMENT 来源)
PASS [field-nullable] modules/world_sync/models/pbl_runtime_event.json#created_at -> no
PASS [field-id] modules/world_sync/models/pbl_runtime_event.json 含 id 主键列
PASS [id-str32] modules/world_sync/models/pbl_runtime_event.json id type=str length=32 -> str/32
PASS [id-notnull] modules/world_sync/models/pbl_runtime_event.json id nullable=no
PASS [field-unique] modules/world_sync/models/pbl_runtime_event.json 列名无重复
PASS [index-keys] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id -> unique
PASS [index-idxfields-array] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id -> ['tenant_id', 'event_id']
PASS [index-cols-exist] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id 索引列都在 fields 中 -> ['tenant_id', 'event_id']
PASS [index-keys] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created -> unique
PASS [index-idxfields-array] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created -> ['tenant_id', 'world_id', 'entity_id', 'state_version']
PASS [index-cols-exist] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'entity_id', 'state_version']
PASS [index-keys] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity -> index
PASS [index-idxfields-array] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-cols-exist] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-keys] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created -> index
PASS [index-idxfields-array] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created -> ['tenant_id', 'world_id', 'event_type', 'created_at']
PASS [index-cols-exist] modules/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'event_type', 'created_at']
PASS [index-keys] modules/world_sync/models/pbl_runtime_event.json#ix_re_created_at ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] modules/world_sync/models/pbl_runtime_event.json#ix_re_created_at -> index
PASS [index-idxfields-array] modules/world_sync/models/pbl_runtime_event.json#ix_re_created_at -> ['created_at']
PASS [index-cols-exist] modules/world_sync/models/pbl_runtime_event.json#ix_re_created_at 索引列都在 fields 中 -> ['created_at']
PASS [index-unique-name] modules/world_sync/models/pbl_runtime_event.json 索引名无重复
PASS [tenant-first] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id 唯一索引 tenant_id 打头 -> ['tenant_id', 'event_id']
PASS [tenant-first] modules/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created 唯一索引 tenant_id 打头 -> ['tenant_id', 'world_id', 'entity_id', 'state_version']
PASS [cross-check-sql] modules/world_sync/models/pbl_runtime_event.json 覆盖 EVENT_COLUMNS 11 列
PASS [code-keys] modules/world_sync/models/pbl_runtime_event.json#event_type ⊆ ['cond', 'field', 'table', 'textfield', 'valuefield']
PASS [code-table-no-dot] modules/world_sync/models/pbl_runtime_event.json#event_type table=appcodes_kv
PASS [code-cond-parentid] modules/world_sync/models/pbl_runtime_event.json#event_type cond=parentid='pbl_event_type'
PASS [code-no-dup] modules/world_sync/models/pbl_runtime_event.json field=event_type 不重复
PASS [code-field-exists] modules/world_sync/models/pbl_runtime_event.json field=event_type 在 fields 中
PASS [no-dialect-types] modules/world_sync/models/pbl_runtime_event.json 无方言具体类型
PASS [exists] modules/world_sync/models/pbl_entity_state.json
PASS [json-parse] modules/world_sync/models/pbl_entity_state.json OK
PASS [root-keys] modules/world_sync/models/pbl_entity_state.json ⊆ summary/fields/indexes/codes -> ['codes', 'fields', 'indexes', 'summary']
PASS [summary-count] modules/world_sync/models/pbl_entity_state.json 恰好 1 条 -> 1
PASS [summary-keys] modules/world_sync/models/pbl_entity_state.json ⊆ ['catelog', 'comment', 'name', 'primary', 'title']
PASS [summary-name] modules/world_sync/models/pbl_entity_state.json name==pbl_entity_state -> pbl_entity_state
PASS [summary-title] modules/world_sync/models/pbl_entity_state.json title 非空
PASS [summary-primary] modules/world_sync/models/pbl_entity_state.json primary==['id'] (array) -> ['id']
PASS [summary-catelog] modules/world_sync/models/pbl_entity_state.json catelog 合法 -> relation
PASS [fields-count] modules/world_sync/models/pbl_entity_state.json >=1 -> 8
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_entity_state.json#id length 为正整数 -> 32
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#id -> no
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#tenant_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#tenant_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#tenant_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#tenant_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_entity_state.json#tenant_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#tenant_id -> no
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#world_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#world_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#world_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#world_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_entity_state.json#world_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#world_id -> no
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#entity_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#entity_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#entity_id -> 'str'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#entity_id title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_entity_state.json#entity_id length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#entity_id -> no
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#state ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#state type 抽象 -> 'text'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#state -> 'text'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#state title 非空(DDL COMMENT 来源)
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#state -> no
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#state_version ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#state_version type 抽象 -> 'int'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#state_version -> 'int'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#state_version title 非空(DDL COMMENT 来源)
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#state_version -> no
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#updated_at ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#updated_at type 抽象 -> 'datetime'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#updated_at -> 'datetime'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#updated_at title 非空(DDL COMMENT 来源)
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#updated_at -> no
PASS [field-keys] modules/world_sync/models/pbl_entity_state.json#updated_by_event ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] modules/world_sync/models/pbl_entity_state.json#updated_by_event type 抽象 -> 'str'
PASS [type-lower-no-dialect] modules/world_sync/models/pbl_entity_state.json#updated_by_event -> 'str'
PASS [field-title] modules/world_sync/models/pbl_entity_state.json#updated_by_event title 非空(DDL COMMENT 来源)
PASS [field-length] modules/world_sync/models/pbl_entity_state.json#updated_by_event length 为正整数 -> 64
PASS [field-nullable] modules/world_sync/models/pbl_entity_state.json#updated_by_event -> yes
PASS [field-id] modules/world_sync/models/pbl_entity_state.json 含 id 主键列
PASS [id-str32] modules/world_sync/models/pbl_entity_state.json id type=str length=32 -> str/32
PASS [id-notnull] modules/world_sync/models/pbl_entity_state.json id nullable=no
PASS [field-unique] modules/world_sync/models/pbl_entity_state.json 列名无重复
PASS [index-keys] modules/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] modules/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity -> unique
PASS [index-idxfields-array] modules/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-cols-exist] modules/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-keys] modules/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] modules/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated -> index
PASS [index-idxfields-array] modules/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated -> ['tenant_id', 'world_id', 'updated_at']
PASS [index-cols-exist] modules/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'updated_at']
PASS [index-unique-name] modules/world_sync/models/pbl_entity_state.json 索引名无重复
PASS [tenant-first] modules/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity 唯一索引 tenant_id 打头 -> ['tenant_id', 'world_id', 'entity_id']
PASS [cross-check-sql] modules/world_sync/models/pbl_entity_state.json 覆盖 STATE_COLUMNS 7 列
PASS [no-dialect-types] modules/world_sync/models/pbl_entity_state.json 无方言具体类型
PASS [exists] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json
PASS [json-parse] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json OK
PASS [root-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json ⊆ summary/fields/indexes/codes -> ['codes', 'fields', 'indexes', 'summary']
PASS [summary-count] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json 恰好 1 条 -> 1
PASS [summary-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json ⊆ ['catelog', 'comment', 'name', 'primary', 'title']
PASS [summary-name] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json name==pbl_runtime_event -> pbl_runtime_event
PASS [summary-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json title 非空
PASS [summary-primary] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json primary==['id'] (array) -> ['id']
PASS [summary-catelog] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json catelog 合法 -> relation
PASS [fields-count] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json >=1 -> 12
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#id length 为正整数 -> 32
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#tenant_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#tenant_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#tenant_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#tenant_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#tenant_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#tenant_id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#world_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#world_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#world_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#world_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#world_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#world_id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#session_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#session_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#session_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#session_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#session_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#session_id -> yes
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#entity_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#entity_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#entity_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#entity_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#entity_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#entity_id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#payload ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#payload type 抽象 -> 'text'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#payload -> 'text'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#payload title 非空(DDL COMMENT 来源)
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#payload -> yes
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#causation_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#causation_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#causation_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#causation_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#causation_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#causation_id -> yes
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#source ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#source type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#source -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#source title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#source length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#source -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#state_version ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#state_version type 抽象 -> 'int'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#state_version -> 'int'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#state_version title 非空(DDL COMMENT 来源)
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#state_version -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#created_at ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#created_at type 抽象 -> 'datetime'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#created_at -> 'datetime'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#created_at title 非空(DDL COMMENT 来源)
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#created_at -> no
PASS [field-id] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json 含 id 主键列
PASS [id-str32] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json id type=str length=32 -> str/32
PASS [id-notnull] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json id nullable=no
PASS [field-unique] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json 列名无重复
PASS [index-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id -> unique
PASS [index-idxfields-array] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id -> ['tenant_id', 'event_id']
PASS [index-cols-exist] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id 索引列都在 fields 中 -> ['tenant_id', 'event_id']
PASS [index-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created -> unique
PASS [index-idxfields-array] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created -> ['tenant_id', 'world_id', 'entity_id', 'state_version']
PASS [index-cols-exist] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'entity_id', 'state_version']
PASS [index-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity -> index
PASS [index-idxfields-array] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-cols-exist] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_entity 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created -> index
PASS [index-idxfields-array] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created -> ['tenant_id', 'world_id', 'event_type', 'created_at']
PASS [index-cols-exist] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_tenant_world_type_created 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'event_type', 'created_at']
PASS [index-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_created_at ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_created_at -> index
PASS [index-idxfields-array] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_created_at -> ['created_at']
PASS [index-cols-exist] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#ix_re_created_at 索引列都在 fields 中 -> ['created_at']
PASS [index-unique-name] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json 索引名无重复
PASS [tenant-first] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_event_id 唯一索引 tenant_id 打头 -> ['tenant_id', 'event_id']
PASS [tenant-first] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#uk_re_tenant_world_entity_created 唯一索引 tenant_id 打头 -> ['tenant_id', 'world_id', 'entity_id', 'state_version']
PASS [cross-check-sql] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json 覆盖 EVENT_COLUMNS 11 列
PASS [code-keys] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type ⊆ ['cond', 'field', 'table', 'textfield', 'valuefield']
PASS [code-table-no-dot] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type table=appcodes_kv
PASS [code-cond-parentid] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json#event_type cond=parentid='pbl_event_type'
PASS [code-no-dup] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json field=event_type 不重复
PASS [code-field-exists] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json field=event_type 在 fields 中
PASS [no-dialect-types] apps/scense/pkgs/world_sync/models/pbl_runtime_event.json 无方言具体类型
PASS [exists] apps/scense/pkgs/world_sync/models/pbl_entity_state.json
PASS [json-parse] apps/scense/pkgs/world_sync/models/pbl_entity_state.json OK
PASS [root-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json ⊆ summary/fields/indexes/codes -> ['codes', 'fields', 'indexes', 'summary']
PASS [summary-count] apps/scense/pkgs/world_sync/models/pbl_entity_state.json 恰好 1 条 -> 1
PASS [summary-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json ⊆ ['catelog', 'comment', 'name', 'primary', 'title']
PASS [summary-name] apps/scense/pkgs/world_sync/models/pbl_entity_state.json name==pbl_entity_state -> pbl_entity_state
PASS [summary-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json title 非空
PASS [summary-primary] apps/scense/pkgs/world_sync/models/pbl_entity_state.json primary==['id'] (array) -> ['id']
PASS [summary-catelog] apps/scense/pkgs/world_sync/models/pbl_entity_state.json catelog 合法 -> relation
PASS [fields-count] apps/scense/pkgs/world_sync/models/pbl_entity_state.json >=1 -> 8
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#id length 为正整数 -> 32
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#tenant_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#tenant_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#tenant_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#tenant_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#tenant_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#tenant_id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#world_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#world_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#world_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#world_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#world_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#world_id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#entity_id ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#entity_id type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#entity_id -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#entity_id title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#entity_id length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#entity_id -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state type 抽象 -> 'text'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state -> 'text'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state title 非空(DDL COMMENT 来源)
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state_version ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state_version type 抽象 -> 'int'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state_version -> 'int'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state_version title 非空(DDL COMMENT 来源)
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#state_version -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_at ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_at type 抽象 -> 'datetime'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_at -> 'datetime'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_at title 非空(DDL COMMENT 来源)
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_at -> no
PASS [field-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_by_event ⊆ ['dec', 'default', 'length', 'name', 'nullable', 'title', 'type']
PASS [abstract-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_by_event type 抽象 -> 'str'
PASS [type-lower-no-dialect] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_by_event -> 'str'
PASS [field-title] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_by_event title 非空(DDL COMMENT 来源)
PASS [field-length] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_by_event length 为正整数 -> 64
PASS [field-nullable] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#updated_by_event -> yes
PASS [field-id] apps/scense/pkgs/world_sync/models/pbl_entity_state.json 含 id 主键列
PASS [id-str32] apps/scense/pkgs/world_sync/models/pbl_entity_state.json id type=str length=32 -> str/32
PASS [id-notnull] apps/scense/pkgs/world_sync/models/pbl_entity_state.json id nullable=no
PASS [field-unique] apps/scense/pkgs/world_sync/models/pbl_entity_state.json 列名无重复
PASS [index-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity -> unique
PASS [index-idxfields-array] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-cols-exist] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'entity_id']
PASS [index-keys] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated ⊆ ['idxfields', 'idxtype', 'name']
PASS [index-type] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated -> index
PASS [index-idxfields-array] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated -> ['tenant_id', 'world_id', 'updated_at']
PASS [index-cols-exist] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#ix_es_tenant_world_updated 索引列都在 fields 中 -> ['tenant_id', 'world_id', 'updated_at']
PASS [index-unique-name] apps/scense/pkgs/world_sync/models/pbl_entity_state.json 索引名无重复
PASS [tenant-first] apps/scense/pkgs/world_sync/models/pbl_entity_state.json#uk_es_tenant_world_entity 唯一索引 tenant_id 打头 -> ['tenant_id', 'world_id', 'entity_id']
PASS [cross-check-sql] apps/scense/pkgs/world_sync/models/pbl_entity_state.json 覆盖 STATE_COLUMNS 7 列
PASS [no-dialect-types] apps/scense/pkgs/world_sync/models/pbl_entity_state.json 无方言具体类型
PASS [mirror-sha256-equal] pbl_runtime_event 真源与镜像字节级一致 -> True
PASS [mirror-sha256-equal] pbl_entity_state 真源与镜像字节级一致 -> True
断言合计 370PASS 370 / FAIL 0
RESULT: PASS