- Добавлен сервис CrmMySQLService для прямого подключения к MySQL CRM - Обновлён метод get_draft() для получения cf_2624 напрямую из БД - Реализована блокировка полей (readonly) при contact_data_confirmed = true - Добавлен выбор банка для СБП выплат с динамической загрузкой из API - Обновлена документация по работе с cf_2624 и MySQL - Добавлен network_mode: host в docker-compose для доступа к MySQL - Обновлены компоненты формы для поддержки блокировки полей
65 lines
2.5 KiB
SQL
65 lines
2.5 KiB
SQL
-- ============================================================
|
|
-- Миграция: Добавление статуса OCR обработки для документов
|
|
-- Дата: 2025-11-28
|
|
-- Описание: Добавляет колонки для отслеживания статуса OCR
|
|
-- обработки документов в заявках
|
|
-- ============================================================
|
|
|
|
-- 1. Добавляем колонки в clpr_claim_documents
|
|
ALTER TABLE clpr_claim_documents
|
|
ADD COLUMN IF NOT EXISTS ocr_status VARCHAR(20) DEFAULT 'pending',
|
|
ADD COLUMN IF NOT EXISTS ocr_processed_at TIMESTAMP,
|
|
ADD COLUMN IF NOT EXISTS ocr_error TEXT;
|
|
|
|
-- 2. Комментарии к колонкам
|
|
COMMENT ON COLUMN clpr_claim_documents.ocr_status IS 'Статус OCR обработки: pending, processing, ready, error';
|
|
COMMENT ON COLUMN clpr_claim_documents.ocr_processed_at IS 'Время завершения OCR обработки';
|
|
COMMENT ON COLUMN clpr_claim_documents.ocr_error IS 'Текст ошибки при неудачной OCR обработке';
|
|
|
|
-- 3. Индекс для быстрого поиска по статусу
|
|
CREATE INDEX IF NOT EXISTS idx_claim_docs_ocr_status
|
|
ON clpr_claim_documents(claim_id, ocr_status);
|
|
|
|
-- 4. Индекс для поиска необработанных документов
|
|
CREATE INDEX IF NOT EXISTS idx_claim_docs_pending
|
|
ON clpr_claim_documents(ocr_status)
|
|
WHERE ocr_status = 'pending';
|
|
|
|
-- 5. Проставляем 'ready' для уже обработанных документов
|
|
-- (те, что уже есть в document_texts по file_hash)
|
|
UPDATE clpr_claim_documents cd
|
|
SET
|
|
ocr_status = 'ready',
|
|
ocr_processed_at = NOW()
|
|
WHERE cd.file_hash IS NOT NULL
|
|
AND EXISTS (
|
|
SELECT 1 FROM document_texts dt
|
|
WHERE dt.file_hash = cd.file_hash
|
|
)
|
|
AND (cd.ocr_status IS NULL OR cd.ocr_status = 'pending');
|
|
|
|
-- 6. Статистика после миграции
|
|
DO $$
|
|
DECLARE
|
|
total_docs INT;
|
|
ready_docs INT;
|
|
pending_docs INT;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO total_docs FROM clpr_claim_documents;
|
|
SELECT COUNT(*) INTO ready_docs FROM clpr_claim_documents WHERE ocr_status = 'ready';
|
|
SELECT COUNT(*) INTO pending_docs FROM clpr_claim_documents WHERE ocr_status = 'pending';
|
|
|
|
RAISE NOTICE '=== OCR Status Migration Complete ===';
|
|
RAISE NOTICE 'Total documents: %', total_docs;
|
|
RAISE NOTICE 'Ready (already processed): %', ready_docs;
|
|
RAISE NOTICE 'Pending (need OCR): %', pending_docs;
|
|
END $$;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|