- 通用 ChangesEngine:snapshot 钉住 data_cutoff_at、(modify_time,id) 复合游标、 仅最后一页签发 next_sync_token、软删 tombstone;sync_token/cursor 为 HMAC-SHA256 无状态令牌(SyncTokenCodec),过期/篡改/跨快照/数据域变更 统一 SYNC_CURSOR_EXPIRED - 注册式实体扩展:SyncEntity/Registry + users(m0.user)/properties(m0.properyt)/ contracts(m2.contract_new) 三个实现;生效修改时间 COALESCE(modify_time, create_time) - 硬约束:GuardedToolCallback 对 *.changes.list 拒绝 tenant_id/scope 入参, 数据域只从 Token 推导;行级权限复用 PermissionService 与 QUERY 工具同一 ACL - 资源隔离:RateLimitService SYNC/QUERY 分档限流(Redis 固定分钟窗)、 limit≤200 截断、SyncQueryTimeoutInterceptor 慢查询超时(三套 SqlSessionFactory 接入) - contract.list.query 补齐 12 字段、contract.detail.query 补 version(ACL 不变) - V5 migration:tool.description 512→1024(含 sql/rollback 回滚文件) - seed-dev.sql:三个 changes 工具绑定进 sync 作用域 - 修复:properyt.customerId 为 NULL 时 Collectors.toMap NPE(冒烟命中), 改为 put 逐条装填(ContractsSyncEntity/ContractTools)
7 lines
285 B
SQL
7 lines
285 B
SQL
-- 回滚 V5__tool_description_length.sql
|
|
-- 先截断超长描述再收窄列,避免 Data truncation
|
|
UPDATE tool SET description = LEFT(description, 512) WHERE CHAR_LENGTH(description) > 512;
|
|
|
|
ALTER TABLE tool
|
|
MODIFY COLUMN description VARCHAR(512) NULL COMMENT '工具描述';
|