Files
MAX/docs/clpr-vs-sprf-schema-diff.md
root 7cd3ccf21c MAX bot + n8n: webhook, нормализация, меню, доки, схемы БД
- register_max_webhook.py, fetch_schema.py
- n8n-code-node-max-normalize.js (max_id, callback из callback.user, contact из vcf_info)
- n8n-code-add-menu-buttons.js (меню с callback, request_contact, Главное меню)
- docs: max-webhook, max-curl-http-request, max-api (форматы, кнопки, контакт), clpr vs sprf
- README, SITUATION, схемы sprf_ и clpr_, .gitignore

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 09:23:51 +03:00

20 KiB
Raw Permalink Blame 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 / — одинаково