Files
MAX/docs/clpr-vs-sprf-schema-diff.md

355 lines
20 KiB
Markdown
Raw Normal View History

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