
SavitarCandClaude Opus 5.5
eefa7dd9dc
refactor(platform): 平台白名单由数据库约束改为应用层校验
新增迁移 242 删除 user_platform_quotas_platform_check 与
composite_model_routes_target_platform_check(DROP ... IF EXISTS,可重入)。
此后新增平台只需在平台清单中登记,不再需要改约束的迁移;此前 Grok、国产
厂商、MiniMax、OpenCode 共写过 5 次。
平台合法性改由应用层保证,与原约束的拒绝范围相同:
- user_platform_quotas 用原生 SQL 写入,不经过 ent Validate,repository 在
BulkInsertInitial / UpsertForUser 写入前校验平台,非法值在发出任何 SQL 前
返回错误(此前由数据库拒绝并回滚);
- ent schema 的 platform / target_platform 校验改查平台清单,组合路由新增
target_platform 校验(service 层与 admin 接口的原有校验保留)。
渠道监控的 provider 约束表示已实现的探测能力,不属于平台清单,保留不动。
集成测试(真实 PostgreSQL):在还原旧约束的库上重复执行迁移、约束被移除、
渠道监控约束保留、数据库层可写入未来的新平台值;repository 拒绝未登记平台
且不产生副作用(去掉校验后该测试失败)。全部仓储集成测试通过。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:10:33 +08:00
..
2026-09-20 15:47:53 +08:00
2026-08-17 20:25:28 +08:00
2026-09-15 10:00:26 -04:00
2026-07-17 22:10:18 +08:00
2026-08-30 16:38:11 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 18:22:56 +08:00
2026-09-23 15:26:44 +08:00
2026-09-23 15:26:44 +08:00
2026-09-23 15:26:44 +08:00
2026-09-13 10:41:47 +08:00
2026-07-17 20:59:29 +08:00
2026-09-15 10:00:26 -04:00
2026-08-01 22:11:09 +08:00
2026-08-01 02:31:04 -04:00
2026-08-01 02:31:04 -04:00
2026-09-23 15:26:35 +08:00
2026-09-23 15:26:44 +08:00
2026-09-23 01:24:59 +08:00
2026-09-23 01:24:59 +08:00
2026-09-23 01:24:59 +08:00
2026-08-04 20:57:15 +08:00
2026-08-04 20:57:15 +08:00
2026-09-30 13:44:02 +08:00
2026-07-18 00:11:18 +08:00
2026-09-30 13:44:02 +08:00
2026-09-30 13:44:02 +08:00
2026-09-05 00:10:24 +08:00
2026-07-28 17:21:32 +08:00
2026-07-28 17:21:32 +08:00
2026-08-07 13:55:58 +08:00
2026-09-05 16:05:17 +08:00
2026-09-01 04:34:24 +09:00
2026-08-01 22:39:31 +08:00
2026-10-01 13:01:01 -04:00
2026-10-01 13:01:01 -04:00
2026-07-28 17:21:32 +08:00
2026-07-18 00:11:18 +08:00
2026-07-18 00:11:18 +08:00
2026-08-01 22:39:31 +08:00
2026-09-06 00:11:56 +08:00
2026-09-06 00:11:56 +08:00
2026-08-09 20:58:07 +08:00
2026-08-09 20:58:07 +08:00
2026-07-24 01:22:34 +08:00
2026-09-28 16:49:29 -04:00
2026-09-28 16:49:29 -04:00
2026-08-26 11:16:32 +08:00
2026-08-26 11:16:32 +08:00
2026-08-18 04:51:02 +00:00
2026-08-18 04:03:13 +00:00
2026-09-08 23:02:06 +08:00
2026-09-08 23:02:06 +08:00
2026-09-08 23:02:06 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-08-17 20:25:28 +08:00
2026-07-23 09:20:18 +08:00
2026-07-25 12:50:46 +08:00
2026-07-25 12:51:20 +08:00
2026-09-08 13:46:59 +08:00
2026-09-29 01:50:21 +08:00
2026-09-29 01:50:21 +08:00
2026-09-16 10:11:18 +08:00
2026-08-14 23:48:03 +08:00
2026-09-15 14:21:15 +08:00
2026-09-15 14:21:15 +08:00
2026-09-28 12:26:28 -04:00
2026-09-28 12:26:28 -04:00
2026-08-31 17:10:31 +08:00
2026-09-19 16:47:17 +08:00
2026-09-05 16:11:46 +08:00
2026-08-20 21:06:48 -07:00
2026-08-01 22:39:31 +08:00
2026-07-25 12:51:20 +08:00
2026-08-17 16:48:36 +08:00
2026-08-20 21:06:48 -07:00
2026-07-19 11:02:56 +08:00
2026-07-19 11:02:56 +08:00
2026-08-08 01:07:19 +08:00
2026-08-08 01:07:19 +08:00
2026-09-08 09:15:23 +08:00
2026-07-16 18:18:28 +08:00
2026-09-07 09:20:48 +08:00
2026-09-07 18:33:39 +08:00
2026-08-20 09:50:23 -07:00
2026-09-18 13:30:35 +08:00
2026-09-18 13:30:35 +08:00
2026-08-03 19:59:58 +08:00
2026-09-20 14:46:25 +08:00
2026-09-20 14:46:25 +08:00
2026-10-01 12:17:27 +08:00
2026-10-01 12:04:39 +08:00
2026-07-25 18:34:37 +08:00
2026-08-18 14:26:19 +08:00
2026-09-03 18:02:15 +08:00
2026-09-01 04:34:23 +09:00
2026-08-18 15:20:08 +08:00
2026-08-18 15:20:08 +08:00
2026-09-20 15:47:53 +08:00
2026-09-20 15:47:53 +08:00
2026-07-18 00:11:18 +08:00
2026-07-18 00:11:18 +08:00
2026-07-18 00:42:16 +08:00
2026-07-18 00:42:16 +08:00
2026-10-07 13:06:19 -07:00
2026-10-07 13:06:19 -07:00
2026-10-07 13:06:19 -07:00
2026-07-18 00:11:18 +08:00
2026-09-04 18:51:24 +08:00
2026-09-04 18:51:24 +08:00
2026-09-11 10:16:32 +08:00
2026-09-11 10:16:32 +08:00
2026-09-10 21:21:08 +08:00
2026-09-10 21:13:17 +08:00
2026-07-18 00:11:18 +08:00
2026-07-28 11:45:18 +08:00
2026-07-26 09:50:28 -04:00
2026-10-09 10:10:33 +08:00
2026-09-19 11:47:14 +08:00
2026-09-19 11:25:56 +08:00
2026-08-24 09:03:37 +08:00
2026-08-24 09:03:37 +08:00
2026-07-28 17:21:32 +08:00
2026-09-08 13:58:34 +08:00
2026-09-19 00:51:01 +08:00
2026-09-19 00:51:01 +08:00
2026-08-19 16:47:50 +08:00
2026-08-19 21:31:11 +08:00
2026-09-08 13:56:20 +08:00
2026-09-08 20:46:32 +08:00
2026-09-23 15:26:44 +08:00
2026-09-22 14:51:44 +08:00
2026-09-05 23:38:50 +08:00
2026-09-05 23:38:50 +08:00
2026-09-05 23:38:50 +08:00
2026-09-16 13:19:15 +08:00
2026-09-16 13:19:15 +08:00
2026-09-22 15:03:05 +08:00
2026-09-22 15:03:06 +08:00
2026-07-21 01:31:46 +08:00
2026-07-21 01:31:46 +08:00
2026-09-11 18:10:15 +08:00
2026-09-11 18:10:15 +08:00
2026-09-15 14:21:15 +08:00
2026-07-21 13:27:23 +08:00
2026-08-01 22:39:33 +08:00
2026-09-23 20:02:50 +08:00
2026-09-23 20:02:50 +08:00
2026-09-09 17:13:37 +08:00
2026-09-02 18:45:20 +08:00
2026-09-02 18:45:20 +08:00
2026-07-23 00:08:23 +08:00
2026-07-23 00:08:23 +08:00
2026-09-19 16:47:17 +08:00
2026-08-20 21:06:48 -07:00
2026-08-20 21:06:48 -07:00
2026-08-06 20:34:37 +08:00
2026-08-06 20:34:37 +08:00
2026-08-01 22:11:09 +08:00
2026-10-02 19:51:06 +08:00
2026-10-02 19:51:06 +08:00
2026-10-02 19:52:00 +08:00
2026-08-14 23:48:03 +08:00
2026-08-14 22:34:43 +08:00
2026-07-23 09:19:25 +08:00
2026-08-28 23:32:11 +08:00
2026-09-16 10:11:18 +08:00
2026-09-03 18:02:15 +08:00
2026-09-03 18:02:15 +08:00
2026-09-28 14:48:42 +08:00
2026-09-03 18:02:15 +08:00
2026-09-03 18:02:15 +08:00
2026-08-18 14:26:19 +08:00
2026-08-28 23:32:11 +08:00
2026-09-28 14:48:42 +08:00
2026-08-28 23:32:11 +08:00
2026-07-24 01:22:34 +08:00
2026-08-28 23:32:11 +08:00
2026-09-08 13:46:59 +08:00
2026-09-10 16:41:58 +08:00
2026-10-09 10:10:33 +08:00
2026-09-10 16:41:58 +08:00
2026-07-28 17:21:32 +08:00
2026-07-18 00:11:18 +08:00
2026-08-08 21:05:20 +08:00
2026-07-28 17:21:32 +08:00
2026-07-28 17:21:32 +08:00
2026-08-08 21:05:20 +08:00
2026-08-17 13:49:46 +08:00
2026-07-28 17:21:32 +08:00
2026-07-28 17:21:32 +08:00
2026-08-28 02:40:17 +08:00
2026-08-03 16:59:05 +08:00
2026-08-07 17:42:51 +08:00
2026-08-07 17:42:51 +08:00
2026-09-20 15:47:53 +08:00