critical issue 그루핑 및 타이틀 추가

advenced_report
jaehwang 2026-06-17 10:16:05 +09:00
parent a4fbf60d42
commit 05e88fe70c
5 changed files with 15 additions and 7 deletions

View File

@ -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 ---

View File

@ -3,7 +3,7 @@
{data}
위 데이터를 바탕으로 이 병원의 마케팅 전반에 걸친 핵심 문제점과 개선사항을 진단해줘.
각 항목은 category(진단 카테고리), detail(상세 설명), severity(critical/warning/info) 형식의 JSON 배열로 출력해줘.
각 항목은 title(해당 문제를 대표하는 2~4단어), category(진단 카테고리), detail(상세 설명), severity(critical/warning/info) 형식의 JSON 배열로 출력해줘.
현재 주요 진단 카테고리는 3개야.
브랜드 아이덴티티 파편화

View File

@ -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]

View File

@ -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:

View File

@ -16,4 +16,4 @@ services:
- o2o-net
networks:
o2o-net:
external: true
# external: true