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