Дмитрий
bffca85399
docs+fix: канон схемы догнал миграции — 39 таблиц описаны, сверка считает обе стороны
...
Канон знал 82 таблицы и 995 столбцов, а база — 121 и 1470: не описаны были
рекламный модуль, телеграм-рассылки и весь отдел продаж.
Главное, что выяснилось по дороге: db/schema.sql не документ, а исполняемый
файл — миграция 0001_01_01_000000_load_initial_schema заливает его целиком
первым шагом сборки. Перенести туда DDL модулей нельзя: те же таблицы создают
дельта-миграции, их 77 и 49 из них без стражей. Сборка с нуля падала дважды.
Поэтому канон разбит на два файла: schema.sql исполняется, новый
schema_modules.sql только описывает.
Проверено не глазами:
- сборка с нуля 148 из 148 DONE;
- столбцы 1470 против 1470, ноль расхождений по имени, типу, длине и NULL;
- все четыре счётчика расхождений инструмента — ноль;
- schema.sql отдельно исполняется без единой ошибки, ограничения 495=495,
политики 64=64;
- статанализ 0.
Инструмент сверки усилен: считал только одну сторону и потому не видел
переименования jivo_chat_id в chat_id — старое имя жило в каноне месяц.
Теперь обе стороны, канон из нескольких файлов, понимание RENAME/DROP COLUMN
и DROP TABLE. Починен разбор переносов строки внутри определения столбца.
Сторож SchemaDeltaTest дополнен: файл модулей обязан быть на месте и описывать
39 таблиц, а тело schema.sql их не содержать. Принят вырезанием.
Найдено и НЕ исправлено, нужно решение владельца: задвоенный указатель на
deals и пять политик без NULLIF в миграциях. Оба помечены в тексте канона.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-02 12:53:45 +03:00
..
2026-05-23 10:16:32 +03:00
2026-05-23 09:46:28 +03:00
2026-08-01 22:07:21 +03:00
2026-06-07 05:41:07 +03:00
2026-05-27 18:09:38 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-06-09 17:50:25 +03:00
2026-06-11 17:13:48 +03:00
2026-05-31 11:19:14 +03:00
2026-05-29 19:44:55 +03:00
2026-05-19 16:23:52 +03:00
2026-05-31 19:05:20 +03:00
2026-05-26 10:49:28 +03:00
2026-05-28 07:48:20 +03:00
2026-05-25 14:28:26 +03:00
2026-06-08 18:34:46 +03:00
2026-06-08 08:53:53 +03:00
2026-05-29 19:49:38 +03:00
2026-06-11 15:07:14 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-06-05 17:32:45 +03:00
2026-05-31 19:05:20 +03:00
2026-05-31 19:05:20 +03:00
2026-05-28 16:21:39 +03:00
2026-06-07 06:24:21 +03:00
2026-06-07 12:54:22 +03:00
2026-06-05 17:32:45 +03:00
2026-05-29 20:22:26 +03:00
2026-05-24 13:25:05 +03:00
2026-06-05 17:10:21 +03:00
2026-06-09 04:02:27 +03:00
2026-06-10 05:16:15 +03:00
2026-05-25 18:16:29 +03:00
2026-06-08 11:07:35 +03:00
2026-06-10 04:28:53 +03:00
2026-05-30 11:31:00 +03:00
2026-06-14 04:08:53 +03:00
2026-06-07 18:58:32 +03:00
2026-06-10 04:28:53 +03:00
2026-06-08 12:18:51 +03:00
2026-06-17 13:16:32 +03:00
2026-05-31 19:05:20 +03:00
2026-05-31 08:06:26 +03:00
2026-06-10 04:28:53 +03:00
2026-05-31 14:05:52 +03:00
2026-06-17 13:16:32 +03:00
2026-06-13 17:15:37 +03:00
2026-06-12 11:28:58 +03:00
2026-05-26 11:16:16 +03:00
2026-06-07 15:23:15 +03:00
2026-06-08 09:34:23 +03:00
2026-05-31 14:05:52 +03:00
2026-06-08 12:20:10 +03:00
2026-06-10 04:28:53 +03:00
2026-06-09 04:08:22 +03:00
2026-06-18 08:04:50 +03:00
2026-06-05 03:42:40 +03:00
2026-05-31 19:05:20 +03:00
2026-05-30 06:08:19 +03:00
2026-06-08 10:34:19 +03:00
2026-06-10 04:28:53 +03:00
2026-05-29 20:07:58 +03:00
2026-06-18 08:04:50 +03:00
2026-06-02 13:35:05 +03:00
2026-06-09 17:50:19 +03:00
2026-06-08 11:08:56 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-05-31 14:05:52 +03:00
2026-06-10 04:28:53 +03:00
2026-06-03 18:51:02 +03:00
2026-06-07 15:18:46 +03:00
2026-06-11 17:13:48 +03:00
2026-06-08 09:34:23 +03:00
2026-06-07 19:43:05 +03:00
2026-06-09 12:56:40 +03:00
2026-06-07 11:59:56 +03:00
2026-05-29 19:56:09 +03:00
2026-06-11 20:10:42 +03:00
2026-05-20 13:47:43 +03:00
2026-05-29 19:45:33 +03:00
2026-06-11 19:31:04 +03:00
2026-05-28 04:50:10 +03:00
2026-06-10 04:28:53 +03:00
2026-06-06 03:07:38 +03:00
2026-06-07 03:15:56 +03:00
2026-06-16 11:13:52 +03:00
2026-06-06 03:07:38 +03:00
2026-06-12 06:39:17 +03:00
2026-06-07 12:48:13 +03:00
2026-06-13 03:40:20 +03:00
2026-06-07 03:15:56 +03:00
2026-06-09 14:24:43 +03:00
2026-06-08 12:26:34 +03:00
2026-06-16 11:13:52 +03:00
2026-06-11 17:13:48 +03:00
2026-06-07 06:24:21 +03:00
2026-06-07 05:41:07 +03:00
2026-06-07 08:11:12 +03:00
2026-06-06 03:07:38 +03:00
2026-06-09 14:24:43 +03:00
2026-05-19 07:36:21 +03:00
2026-05-30 19:29:58 +03:00
2026-05-31 10:34:27 +03:00
2026-05-29 20:10:23 +03:00
2026-05-29 19:50:01 +03:00
2026-06-11 17:13:48 +03:00
2026-06-17 08:03:35 +03:00
2026-06-12 06:39:17 +03:00
2026-06-13 11:38:09 +03:00
2026-06-12 05:51:41 +03:00
2026-06-11 18:13:45 +03:00
2026-06-13 11:38:09 +03:00
2026-06-16 11:13:52 +03:00
2026-06-13 17:15:14 +03:00
2026-06-16 11:13:52 +03:00
2026-05-25 14:28:25 +03:00
2026-06-09 12:19:50 +03:00
2026-06-09 12:22:40 +03:00
2026-06-12 18:30:05 +03:00
2026-06-09 03:23:39 +03:00
2026-06-13 11:38:09 +03:00
2026-06-13 11:38:09 +03:00
2026-05-21 06:06:25 +03:00
2026-05-21 06:06:26 +03:00
2026-07-28 16:31:36 +03:00
2026-05-19 13:39:09 +03:00
2026-08-01 15:19:10 +03:00
2026-08-01 15:19:10 +03:00
2026-05-25 17:07:23 +03:00
2026-05-23 13:49:42 +03:00
2026-05-19 10:27:23 +03:00
2026-06-09 03:16:49 +03:00
2026-05-23 13:22:55 +03:00
2026-05-21 06:06:27 +03:00
2026-06-09 03:18:55 +03:00
2026-06-12 08:14:35 +03:00
2026-05-25 16:32:30 +03:00
2026-05-26 07:57:25 +03:00
2026-06-09 03:14:24 +03:00
2026-05-31 19:05:20 +03:00
2026-06-17 13:16:32 +03:00
2026-06-07 15:23:15 +03:00
2026-06-08 09:57:41 +03:00
2026-06-14 04:08:53 +03:00
2026-06-13 11:38:09 +03:00
2026-06-09 17:50:25 +03:00
2026-06-12 05:51:41 +03:00
2026-06-13 03:40:20 +03:00
2026-06-08 09:34:23 +03:00
2026-06-09 12:24:30 +03:00
2026-06-12 18:07:21 +03:00
2026-06-11 15:52:12 +03:00
2026-06-05 14:52:45 +03:00
2026-06-11 16:46:56 +03:00
2026-06-09 14:24:43 +03:00
2026-06-13 11:38:09 +03:00
2026-05-23 14:18:52 +03:00
2026-05-23 14:26:34 +03:00
2026-05-24 06:45:27 +03:00
2026-06-18 08:04:50 +03:00
2026-06-18 08:04:50 +03:00
2026-06-07 06:24:21 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-05-25 14:28:25 +03:00
2026-05-27 06:46:55 +03:00
2026-06-15 17:32:06 +03:00
2026-06-17 11:08:15 +03:00
2026-05-25 14:28:25 +03:00
2026-05-25 14:28:25 +03:00
2026-06-05 14:52:45 +03:00
2026-06-11 20:10:42 +03:00
2026-06-04 19:50:31 +03:00
2026-05-29 21:26:10 +03:00
2026-06-07 06:24:21 +03:00
2026-06-15 05:03:55 +03:00
2026-05-24 15:26:18 +03:00
2026-05-24 15:36:14 +03:00
2026-06-11 18:13:45 +03:00
2026-05-24 10:40:20 +03:00
2026-05-27 06:46:55 +03:00
2026-06-05 14:52:45 +03:00
2026-06-09 12:21:21 +03:00
2026-05-29 20:01:00 +03:00
2026-06-13 04:12:53 +03:00
2026-06-14 04:08:53 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-06-07 15:06:53 +03:00
2026-05-29 21:01:56 +03:00
2026-06-09 07:20:48 +03:00
2026-06-17 08:03:35 +03:00
2026-06-11 19:31:04 +03:00
2026-06-05 03:20:55 +03:00
2026-06-08 18:33:05 +03:00
2026-05-29 20:10:41 +03:00
2026-06-07 19:02:21 +03:00
2026-06-05 14:52:45 +03:00
2026-05-29 19:42:51 +03:00
2026-06-10 04:28:53 +03:00
2026-06-09 05:06:49 +03:00
2026-08-02 01:16:55 +03:00
2026-08-02 01:16:55 +03:00
2026-08-02 11:09:51 +03:00
2026-08-02 11:09:51 +03:00
2026-08-01 17:02:44 +03:00
2026-08-01 17:02:44 +03:00
2026-05-29 20:01:57 +03:00
2026-05-30 12:08:33 +03:00
2026-08-02 12:53:45 +03:00
2026-08-02 12:53:45 +03:00
2026-05-28 10:46:00 +03:00
2026-05-29 21:12:33 +03:00
2026-05-25 14:28:01 +03:00
2026-05-29 20:46:54 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-06-17 13:16:32 +03:00
2026-06-17 13:16:32 +03:00
2026-06-16 11:13:52 +03:00
2026-06-16 11:13:52 +03:00
2026-06-09 10:15:16 +03:00
2026-06-09 10:13:57 +03:00
2026-05-20 10:32:31 +03:00