db3558872e
Modernisiert die öffentliche Oberfläche mit Inter, Dark Mode und Live-Suche, ergänzt KI-gestützte Entwürfe im Admin mit Nachweis-Uploads und dokumentiert Daphne/Nginx für den Serverbetrieb. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
from claims.models import ClaimDraft
|
|
from claims.services.ai_assistant import (
|
|
AIAssistantError,
|
|
apply_payload_to_draft,
|
|
generate_draft_payload,
|
|
)
|
|
from claims.services.article_fetcher import ArticleFetchError, fetch_article_text
|
|
|
|
|
|
def process_claim_draft(draft, *, refinement=''):
|
|
draft.error_message = ''
|
|
draft.status = ClaimDraft.DraftStatus.PROCESSING
|
|
draft.save(update_fields=['error_message', 'status', 'updated_at'])
|
|
|
|
user_message_parts = []
|
|
if draft.article_url:
|
|
user_message_parts.append(f'Link: {draft.article_url}')
|
|
if draft.user_notes:
|
|
user_message_parts.append(draft.user_notes)
|
|
if draft.uploaded_file:
|
|
user_message_parts.append(f'Datei: {draft.uploaded_file.name}')
|
|
if refinement:
|
|
user_message_parts.append(f'Überarbeitung: {refinement}')
|
|
|
|
draft.add_message('user', '\n'.join(user_message_parts) or 'Neuer Entwurf')
|
|
draft.save(update_fields=['conversation', 'updated_at'])
|
|
|
|
try:
|
|
article_text = draft.article_text
|
|
if draft.article_url and not refinement:
|
|
article_text = fetch_article_text(draft.article_url)
|
|
draft.article_text = article_text
|
|
draft.save(update_fields=['article_text', 'updated_at'])
|
|
|
|
payload = generate_draft_payload(
|
|
article_url=draft.article_url,
|
|
article_text=article_text,
|
|
user_notes=draft.user_notes,
|
|
uploaded_file=draft.uploaded_file if draft.uploaded_file else None,
|
|
refinement=refinement,
|
|
previous_payload=draft.ai_raw_response if refinement else None,
|
|
)
|
|
apply_payload_to_draft(draft, payload)
|
|
draft.status = ClaimDraft.DraftStatus.REVIEW
|
|
draft.save()
|
|
return draft
|
|
except (ArticleFetchError, AIAssistantError) as exc:
|
|
draft.status = ClaimDraft.DraftStatus.FAILED
|
|
draft.error_message = str(exc)
|
|
draft.add_message('assistant', f'Fehler: {exc}')
|
|
draft.save()
|
|
raise
|