HH/.opencode/plans/move-inquiry-ai-to-task.md
ismail 946c31cf34
Some checks failed
Build and Push Docker Image / build (push) Failing after 21s
Add CI pipeline for Docker image builds
2026-04-19 13:34:40 +03:00

3.3 KiB

Move Inquiry AI Analysis to Celery Task

Summary

Replace synchronous AI calls in 3 inquiry creation views with the existing analyze_inquiry_with_ai.delay() Celery task.

Changes

1. apps/complaints/ui_views.pyinquiry_create (lines 1554-1567)

Replace:

                from apps.complaints.tasks import _apply_inquiry_ai_analysis
                from apps.core.ai_service import AIService

                try:
                    analysis = AIService.analyze_inquiry(
                        subject=inquiry.subject,
                        message=inquiry.message,
                        category=inquiry.get_category_display(),
                        hospital_id=inquiry.hospital.id,
                    )
                    emotion_analysis = AIService.analyze_emotion(text=inquiry.message)
                    _apply_inquiry_ai_analysis(inquiry, analysis, emotion_analysis)
                except Exception as e:
                    logger.error(f"AI analysis failed on inquiry creation: {e}")

With:

                from apps.complaints.tasks import analyze_inquiry_with_ai

                analyze_inquiry_with_ai.delay(str(inquiry.id))

Also update line 1572 — change "Inquiry created with AI analysis." to "Inquiry created."


2. apps/complaints/ui_views.pypublic_inquiry_submit (lines 2315-2328)

Replace:

            from apps.complaints.tasks import _apply_inquiry_ai_analysis
            from apps.core.ai_service import AIService

            try:
                analysis = AIService.analyze_inquiry(
                    subject=inquiry.subject,
                    message=inquiry.message,
                    category=category,
                    hospital_id=hospital.id,
                )
                emotion_analysis = AIService.analyze_emotion(text=inquiry.message)
                _apply_inquiry_ai_analysis(inquiry, analysis, emotion_analysis)
            except Exception as e:
                logger.error(f"AI analysis failed on public inquiry creation: {e}")

With:

            from apps.complaints.tasks import analyze_inquiry_with_ai

            analyze_inquiry_with_ai.delay(str(inquiry.id))

3. apps/complaints/views.pyInquiryViewSet.perform_create (lines 2750-2763)

Replace:

        from apps.complaints.tasks import _apply_inquiry_ai_analysis
        from apps.core.ai_service import AIService

        try:
            analysis = AIService.analyze_inquiry(
                subject=inquiry.subject,
                message=inquiry.message,
                category=inquiry.get_category_display(),
                hospital_id=inquiry.hospital.id,
            )
            emotion_analysis = AIService.analyze_emotion(text=inquiry.message)
            _apply_inquiry_ai_analysis(inquiry, analysis, emotion_analysis)
        except Exception as e:
            logger.error(f"AI analysis failed on inquiry creation: {e}")

With:

        from apps.complaints.tasks import analyze_inquiry_with_ai

        analyze_inquiry_with_ai.delay(str(inquiry.id))

Also update docstring on line 2747 from "Auto-set created_by from request.user and run AI analysis synchronously" to "Auto-set created_by from request.user and trigger AI analysis in background".