From 05e88fe70cde0b4f9c0b0ac6949d155e90b1982d Mon Sep 17 00:00:00 2001 From: jaehwang Date: Wed, 17 Jun 2026 10:16:05 +0900 Subject: [PATCH] =?UTF-8?q?critical=20issue=20=EA=B7=B8=EB=A3=A8=ED=95=91?= =?UTF-8?q?=20=EB=B0=8F=20=ED=83=80=EC=9D=B4=ED=8B=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/integrations/llm/schemas/report.py | 8 ++++++-- .../llm/temp-prompt/critical_issues_prompt.txt | 2 +- app/models/report.py | 6 +++++- app/services/analysis.py | 4 ++-- docker-compose.yml | 2 +- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/integrations/llm/schemas/report.py b/app/integrations/llm/schemas/report.py index 7b1f4d4..2c85a03 100644 --- a/app/integrations/llm/schemas/report.py +++ b/app/integrations/llm/schemas/report.py @@ -351,7 +351,7 @@ class MarketingReport(BaseModel): facebook_audit: FacebookAudit other_channels: list[OtherChannel] website_audit: WebsiteAudit - problem_diagnosis: list[DiagnosisItem] + problem_diagnosis: list[CriticalIssueItem] transformation: TransformationProposal roadmap: list[RoadmapMonth] kpi_dashboard: list[KPIMetric] @@ -408,13 +408,17 @@ class ScoresOutput(BaseModel): # --- Diagnosis --- +class CriticalIssueItem(DiagnosisItem): + title: str + + class CriticalIssuesInput(BaseModel): clinic_name: str | None = None data: str | None = None class CriticalIssuesOutput(BaseModel): - diagnosis: list[DiagnosisItem] + diagnosis: list[CriticalIssueItem] # --- Roadmap --- diff --git a/app/integrations/llm/temp-prompt/critical_issues_prompt.txt b/app/integrations/llm/temp-prompt/critical_issues_prompt.txt index bcb6f78..347b149 100644 --- a/app/integrations/llm/temp-prompt/critical_issues_prompt.txt +++ b/app/integrations/llm/temp-prompt/critical_issues_prompt.txt @@ -3,7 +3,7 @@ {data} 위 데이터를 바탕으로 이 병원의 마케팅 전반에 걸친 핵심 문제점과 개선사항을 진단해줘. -각 항목은 category(진단 카테고리), detail(상세 설명), severity(critical/warning/info) 형식의 JSON 배열로 출력해줘. +각 항목은 title(해당 문제를 대표하는 2~4단어), category(진단 카테고리), detail(상세 설명), severity(critical/warning/info) 형식의 JSON 배열로 출력해줘. 현재 주요 진단 카테고리는 3개야. 브랜드 아이덴티티 파편화 diff --git a/app/models/report.py b/app/models/report.py index 3b5f978..a2aad0e 100644 --- a/app/models/report.py +++ b/app/models/report.py @@ -30,6 +30,10 @@ class DiagnosisItem(CamelModel): evidence_ids: list[str] | None = None +class CriticalIssueItem(DiagnosisItem): + title: str + + class LeadDoctor(CamelModel): name: str credentials: str @@ -295,7 +299,7 @@ class MarketingReportResponse(CamelModel): facebook_audit: FacebookAudit other_channels: list[OtherChannel] website_audit: WebsiteAudit - problem_diagnosis: list[DiagnosisItem] + problem_diagnosis: list[CriticalIssueItem] transformation: TransformationProposal roadmap: list[RoadmapMonth] kpi_dashboard: list[KPIMetric] diff --git a/app/services/analysis.py b/app/services/analysis.py index e640658..ea7eebf 100644 --- a/app/services/analysis.py +++ b/app/services/analysis.py @@ -8,7 +8,7 @@ from common.db.source import select_run_raw_data, select_mainpage_logo_url from common.db.market import select_market from integrations.llm.llm_service import LLMService from integrations.llm.prompt import report_prompt, plan_prompt, youtube_diagnosis_prompt, brand_consistency_prompt, critical_issues_prompt, transformation_prompt, roadmap_prompt, scores_prompt, other_channels_prompt -from integrations.llm.schemas.report import ReportOutput, ClinicSnapshot, YouTubeAudit, BrandConsistencyOutput, CriticalIssuesOutput, DiagnosisItem, TransformationProposal, RoadmapOutput, RoadmapMonth, ScoresOutput, ChannelScore, WebsiteAudit, OtherChannelsOutput, OtherChannel +from integrations.llm.schemas.report import ReportOutput, ClinicSnapshot, YouTubeAudit, BrandConsistencyOutput, CriticalIssuesOutput, CriticalIssueItem, DiagnosisItem, TransformationProposal, RoadmapOutput, RoadmapMonth, ScoresOutput, ChannelScore, WebsiteAudit, OtherChannelsOutput, OtherChannel from services.branding import analyze_branding from services.instagram_audit import build_instagram_audit from services.facebook_audit import build_facebook_audit @@ -190,7 +190,7 @@ async def _build_critical_issues(analysis_run_id: str, raw: dict) -> list[dict]: "data": json.dumps(raw, ensure_ascii=False), }, ) - return [DiagnosisItem.model_validate(item).model_dump() for item in result.diagnosis] + return [CriticalIssueItem.model_validate(item).model_dump() for item in result.diagnosis] async def _build_scores(analysis_run_id: str, raw: dict) -> ScoresOutput: diff --git a/docker-compose.yml b/docker-compose.yml index 0eed77d..a6a4d47 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,4 +16,4 @@ services: - o2o-net networks: o2o-net: - external: true \ No newline at end of file + # external: true \ No newline at end of file