Сравнение структуры таблиц clpr_ и sprf_
1. Состав: что только в одной схеме
| Только в sprf_ |
Только в clpr_ |
| sprf_court_decisions (файлы судебных решений, OCR, вектор, nsfw, CRM) |
clpr_menu_commands (команды меню: command, action, reply_text, menu_id) |
| sprf_court_decisions_view (view поверх court_decisions) |
— |
Остальные таблицы есть в обеих схемах (с разными именами префикса).
2. Общие таблицы — отличия по колонкам и типам
chat_messages
| Аспект |
sprf |
clpr |
| sent_at |
без default |
default now() |
Остальные колонки совпадают.
claim_documents
| Аспект |
sprf |
clpr |
| Колонки |
Базовый набор: id, claim_id, field_name, file_id, uploaded_at |
Расширенный: + file_name, original_file_name, file_hash, ocr_status, ocr_processed_at, ocr_error, document_type, document_label, match_score, match_status, match_reason, match_checked_at, document_summary |
| id |
uuid, NO, без default в схеме |
uuid, NO, gen_random_uuid() |
| uploaded_at |
без default |
default now() |
Итог: в clpr заложена полноценная модель документов с OCR, матчингом и саммари; в sprf — минимальный набор под «файл к заявке».
claim_statuses, claim_types
Структура совпадает (code, description).
claims
| Аспект |
sprf |
clpr |
| id |
character varying, NO |
uuid, NO, gen_random_uuid() |
| Доп. поля |
— |
expires_at, contact_id, phone |
| created_at / updated_at |
без default в схеме |
default now() |
Остальные поля (user_id, type_code, status_code, payload, session_token, unified_id, telegram_id, channel, is_confirmed) совпадают.
conversation_state
Структура совпадает (user_id, current_step, data, updated_at).
dialog_history_tg
| Аспект |
sprf |
clpr |
| claim_id |
character varying |
uuid |
| created_at |
default now() |
default now() |
Остальные колонки те же.
document_embeddings
| Аспект |
sprf |
clpr |
| Модель |
Чанки документа: document_id, chunk_index, embedding |
Один объект на запись: id, embedding, text, metadata |
| Колонки |
document_id, chunk_index, embedding |
id, embedding, text, metadata |
Разная семантика: sprf — эмбеддинги чанков с привязкой к документу; clpr — эмбеддинг + текст + метаданные без явного document_id/chunk_index.
documents
| Аспект |
sprf |
clpr |
| id |
uuid, NO, без default в схеме |
uuid, NO, gen_random_uuid() |
| created_at |
без default |
default now() |
Остальное совпадает (source, content, metadata).
operators
Структура совпадает. В clpr у created_at указан default now(), в sprf в схеме default не показан.
sessions
Структура совпадает (id uuid, user_id, session_token, created_at, last_activity, expires_at). В clpr created_at = now().
user_accounts
Структура совпадает (user_id, channel, channel_user_id).
users
| Аспект |
sprf |
clpr |
| Доп. поле |
— |
contact_data_confirmed_at |
| created_at / updated_at |
без default в схеме |
default now() |
Остальное совпадает (universal_id, unified_id, phone).
users_tg
Набор полей совпадает. В clpr у created_at и updated_at default now(); в sprf в схеме default не показан.
wizard_questions
Структура совпадает (claim_type, step_key, question_text, answer_type, step_order, options, is_required).
3. Краткая сводка
- Только sprf: судебные решения (court_decisions + view) — загрузка файлов, OCR, вектор, nsfw, CRM.
- Только clpr: меню команд (menu_commands).
- clpr в среднем «богаче»: в claims — uuid, expires_at, contact_id, phone; в claim_documents — OCR, матчинг, саммари; в users — contact_data_confirmed_at; чаще default now() на датах.
- sprf.claims.id — varchar, clpr.claims.id — uuid.
- document_embeddings устроены по-разному: sprf — по чанкам (document_id, chunk_index), clpr — id + text + metadata.
Если делать общий слой поверх двух схем (например, для MAX/Telegram), маппинг по именам таблиц 1:1, но нужно учитывать типы (claim_id, id в claims) и наличие/отсутствие полей (contact_id, phone, expires_at, OCR/match в claim_documents).
4. Детальное сравнение по полям (тип, NULL, default)
Для каждой общей таблицы: колонка | sprf тип / NULL / default | clpr тип / NULL / default | примечание.
chat_messages
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
integer / NO / nextval |
integer / NO / nextval |
одинаково |
| claim_id |
uuid / YES / — |
uuid / YES / — |
одинаково |
| from_user |
boolean / YES / — |
boolean / YES / — |
одинаково |
| message_text |
text / YES / — |
text / YES / — |
одинаково |
| file_id |
text / YES / — |
text / YES / — |
одинаково |
| sent_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
claim_documents
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
uuid / NO / — |
uuid / NO / gen_random_uuid() |
разный default |
| claim_id |
character varying / YES / — |
character varying / YES / — |
одинаково |
| field_name |
text / YES / — |
text / YES / — |
одинаково |
| file_id |
text / YES / — |
text / YES / — |
одинаково |
| uploaded_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
| file_name |
— |
text / YES / — |
только clpr |
| original_file_name |
— |
text / YES / — |
только clpr |
| file_hash |
— |
varchar(64) / YES / — |
только clpr |
| ocr_status |
— |
varchar(20) / YES / 'pending' |
только clpr |
| ocr_processed_at |
— |
timestamptz / YES / — |
только clpr |
| ocr_error |
— |
text / YES / — |
только clpr |
| document_type |
— |
varchar(50) / YES / — |
только clpr |
| document_label |
— |
varchar(255) / YES / — |
только clpr |
| match_score |
— |
integer / YES / — |
только clpr |
| match_status |
— |
varchar(20) / YES / 'pending' |
только clpr |
| match_reason |
— |
text / YES / — |
только clpr |
| match_checked_at |
— |
timestamp / YES / — |
только clpr |
| document_summary |
— |
text / YES / — |
только clpr |
claim_statuses
| Колонка |
sprf |
clpr |
Примечание |
| code |
text / NO / — |
text / NO / — |
одинаково |
| description |
text / YES / — |
text / YES / — |
одинаково |
claim_types
| Колонка |
sprf |
clpr |
Примечание |
| code |
text / NO / — |
text / NO / — |
одинаково |
| description |
text / YES / — |
text / YES / — |
одинаково |
claims
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
character varying / NO / — |
uuid / NO / gen_random_uuid() |
разный тип и default |
| session_token |
varchar / YES / — |
varchar / YES / — |
одинаково |
| unified_id |
varchar / YES / — |
varchar / YES / — |
одинаково |
| telegram_id |
bigint / YES / — |
bigint / YES / — |
одинаково |
| channel |
text / YES / — |
text / YES / — |
одинаково |
| user_id |
integer / YES / — |
integer / YES / — |
одинаково |
| type_code |
text / YES / — |
text / YES / — |
одинаково |
| status_code |
text / YES / — |
text / YES / — |
одинаково |
| policy_number |
text / YES / — |
text / YES / — |
одинаково |
| payload |
jsonb / YES / — |
jsonb / YES / — |
одинаково |
| is_confirmed |
boolean / YES / false |
boolean / YES / false |
одинаково |
| created_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
| updated_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
| expires_at |
— |
timestamptz / YES / — |
только clpr |
| contact_id |
— |
text / YES / — |
только clpr |
| phone |
— |
text / YES / — |
только clpr |
conversation_state
| Колонка |
sprf |
clpr |
Примечание |
| user_id |
integer / NO / — |
integer / NO / — |
одинаково |
| current_step |
text / YES / — |
text / YES / — |
одинаково |
| data |
jsonb / YES / — |
jsonb / YES / — |
одинаково |
| updated_at |
timestamptz / YES / — |
timestamptz / YES / — |
одинаково |
dialog_history_tg
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
integer / NO / nextval |
integer / NO / nextval |
одинаково |
| telegram_id |
bigint / YES / — |
bigint / YES / — |
одинаково |
| role |
varchar / YES / — |
varchar / YES / — |
одинаково |
| message |
text / YES / — |
text / YES / — |
одинаково |
| created_at |
timestamptz / YES / now() |
timestamptz / YES / now() |
одинаково |
| session_token |
varchar / YES / — |
varchar / YES / — |
одинаково |
| claim_id |
character varying / YES / — |
uuid / YES / — |
разный тип |
| message_type |
text / YES / — |
text / YES / — |
одинаково |
| payload |
jsonb / YES / — |
jsonb / YES / — |
одинаково |
| tg_message_id |
bigint / YES / — |
bigint / YES / — |
одинаково |
| tg_update_id |
bigint / YES / — |
bigint / YES / — |
одинаково |
document_embeddings
| Колонка |
sprf |
clpr |
Примечание |
| document_id |
uuid / YES / — |
— |
только sprf (модель по чанкам) |
| chunk_index |
integer / YES / — |
— |
только sprf |
| embedding |
USER-DEFINED / YES / — |
USER-DEFINED / YES / — |
одинаково |
| id |
— |
uuid / YES / — |
только clpr |
| text |
— |
text / YES / — |
только clpr |
| metadata |
— |
jsonb / YES / — |
только clpr |
Разная модель: sprf — чанки документа; clpr — запись с id, text, metadata.
documents
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
uuid / NO / — |
uuid / NO / gen_random_uuid() |
разный default |
| source |
text / YES / — |
text / YES / — |
одинаково |
| content |
text / YES / — |
text / YES / — |
одинаково |
| metadata |
jsonb / YES / — |
jsonb / YES / — |
одинаково |
| created_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
operators
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
integer / NO / nextval |
integer / NO / nextval |
одинаково |
| telegram_id |
bigint / YES / — |
bigint / YES / — |
одинаково |
| name |
text / YES / — |
text / YES / — |
одинаково |
| is_active |
boolean / YES / — |
boolean / YES / — |
одинаково |
| created_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
sessions
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
uuid / NO / gen_random_uuid() |
uuid / NO / gen_random_uuid() |
одинаково |
| user_id |
integer / YES / — |
integer / YES / — |
одинаково |
| session_token |
varchar / YES / — |
varchar / YES / — |
одинаково |
| created_at |
timestamptz / YES / now() |
timestamptz / YES / now() |
одинаково |
| last_activity |
timestamptz / YES / — |
timestamptz / YES / — |
одинаково |
| expires_at |
timestamptz / YES / — |
timestamptz / YES / — |
одинаково |
user_accounts
| Колонка |
sprf |
clpr |
Примечание |
| id |
integer / NO / nextval |
integer / NO / nextval |
одинаково |
| user_id |
integer / YES / — |
integer / YES / — |
одинаково |
| channel |
text / YES / — |
text / YES / — |
одинаково |
| channel_user_id |
text / YES / — |
text / YES / — |
одинаково |
users
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| id |
integer / NO / nextval |
integer / NO / nextval |
одинаково |
| universal_id |
uuid / YES / — |
uuid / YES / — |
одинаково |
| unified_id |
varchar / YES / — |
varchar / YES / — |
одинаково |
| phone |
varchar / YES / — |
varchar / YES / — |
одинаково |
| created_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
| updated_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
| contact_data_confirmed_at |
— |
timestamptz / YES / — |
только clpr |
users_tg
| Колонка |
sprf (тип / NULL / default) |
clpr (тип / NULL / default) |
Примечание |
| telegram_id |
bigint / NO / — |
bigint / NO / — |
одинаково |
| phone_number |
varchar / YES / — |
varchar / YES / — |
одинаково |
| first_name_tg |
varchar / YES / — |
varchar / YES / — |
одинаково |
| last_name_tg |
varchar / YES / — |
varchar / YES / — |
одинаково |
| username |
varchar / YES / — |
varchar / YES / — |
одинаково |
| language_code |
varchar / YES / — |
varchar / YES / — |
одинаково |
| is_premium |
boolean / YES / — |
boolean / YES / — |
одинаково |
| unified_id |
varchar / YES / — |
varchar / YES / — |
одинаково |
| first_name, last_name, middle_name |
varchar / YES / — |
varchar / YES / — |
одинаково |
| birth_date, birth_place, inn, address, email |
varchar / YES / — |
varchar / YES / — |
одинаково |
| is_confirmed |
boolean / YES / false |
boolean / YES / false |
одинаково |
| created_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
| updated_at |
timestamptz / YES / — |
timestamptz / YES / now() |
разный default |
wizard_questions
| Колонка |
sprf |
clpr |
Примечание |
| id |
integer / NO / nextval |
integer / NO / nextval |
одинаково |
| claim_type |
text / YES / — |
text / YES / — |
одинаково |
| step_key |
text / YES / — |
text / YES / — |
одинаково |
| question_text |
text / YES / — |
text / YES / — |
одинаково |
| answer_type |
text / YES / — |
text / YES / — |
одинаково |
| step_order |
integer / YES / — |
integer / YES / — |
одинаково |
| options |
jsonb / YES / — |
jsonb / YES / — |
одинаково |
| is_required |
boolean / YES / — |
boolean / YES / — |
одинаково |