# Сравнение структуры таблиц 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 / — | одинаково |