fix: Исправление загрузки документов и SQL запросов
- Исправлена потеря документов при обновлении черновика (SQL объединяет вместо перезаписи) - Исправлено определение типа документа (приоритет field_label над field_name) - Исправлены дубликаты в documents_meta и documents_uploaded - Добавлена передача group_index с фронтенда для правильного field_name - Исправлены все документы в таблице clpr_claim_documents с правильными field_name - Обновлены SQL запросы: claimsave и claimsave_final для нового флоу - Добавлена поддержка multi-file upload для одного документа - Исправлены дубликаты в списке загруженных документов на фронтенде Файлы: - SQL: SQL_CLAIMSAVE_FIXED_NEW_FLOW.sql, SQL_CLAIMSAVE_FINAL_FIXED_NEW_FLOW_WITH_UPLOADED.sql - n8n: N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js (поддержка group_index) - Backend: documents.py (передача group_index в n8n) - Frontend: StepWizardPlan.tsx (передача group_index, исправление дубликатов) - Скрипты: fix_claim_documents_field_names.py, fix_documents_meta_duplicates.py Результат: документы больше не теряются, имеют правильные типы и field_name
This commit is contained in:
62
check_draft_documents.py
Normal file
62
check_draft_documents.py
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Проверка документов в черновике
|
||||
"""
|
||||
import asyncio
|
||||
import asyncpg
|
||||
import json
|
||||
|
||||
POSTGRES_HOST = "147.45.189.234"
|
||||
POSTGRES_PORT = 5432
|
||||
POSTGRES_DB = "default_db"
|
||||
POSTGRES_USER = "gen_user"
|
||||
POSTGRES_PASSWORD = "2~~9_^kVsU?2\\S"
|
||||
|
||||
CLAIM_ID = "bddb6815-8e17-4d54-a721-5e94382942c7"
|
||||
|
||||
async def check_documents():
|
||||
conn = await asyncpg.connect(
|
||||
host=POSTGRES_HOST,
|
||||
port=POSTGRES_PORT,
|
||||
database=POSTGRES_DB,
|
||||
user=POSTGRES_USER,
|
||||
password=POSTGRES_PASSWORD
|
||||
)
|
||||
|
||||
try:
|
||||
row = await conn.fetchrow("""
|
||||
SELECT id, status_code, payload
|
||||
FROM clpr_claims
|
||||
WHERE id::text = $1 OR payload->>'claim_id' = $1
|
||||
ORDER BY updated_at DESC
|
||||
LIMIT 1
|
||||
""", CLAIM_ID)
|
||||
|
||||
if not row:
|
||||
print(f"❌ Черновик {CLAIM_ID} не найден!")
|
||||
return
|
||||
|
||||
payload = row['payload'] if isinstance(row['payload'], dict) else json.loads(row['payload'])
|
||||
|
||||
print("📋 documents_meta:")
|
||||
for i, doc in enumerate(payload.get('documents_meta', [])):
|
||||
print(f" {i+1}. {doc.get('field_label', 'N/A')} - {doc.get('file_id', 'N/A')}")
|
||||
|
||||
print("\n📋 documents_uploaded:")
|
||||
for i, doc in enumerate(payload.get('documents_uploaded', [])):
|
||||
print(f" {i+1}. {doc.get('type', 'N/A')} / {doc.get('id', 'N/A')} - {doc.get('file_id', 'N/A')}")
|
||||
|
||||
print("\n📋 Все file_id в payload:")
|
||||
# Ищем все file_id в payload
|
||||
payload_str = json.dumps(payload, ensure_ascii=False)
|
||||
import re
|
||||
file_ids = re.findall(r'file_id["\']?\s*:\s*["\']([^"\']+)', payload_str)
|
||||
for file_id in set(file_ids):
|
||||
print(f" - {file_id}")
|
||||
|
||||
finally:
|
||||
await conn.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(check_documents())
|
||||
|
||||
Reference in New Issue
Block a user