from app.services.analyzer_common import DISCLAIMER, BaseAnalyzer USER_PROMPT = ( "请分析这张单人正脸照片,生成中文面相娱乐报告。" "必须先判断照片是否适合分析:是否单人、正脸、五官无遮挡、光线清晰。" "必须覆盖脸型轮廓、三庭五眼、眉眼神态、鼻唇表达、气色状态、整体气质。" "写作要求:" "1. overall_summary 用 2 到 4 句话,像给用户本人看的开场结论,要贴近日常生活。" "2. dimensions 中每个 interpretation 必须关联现实场景,例如学习专注、工作表达、社交沟通、情绪恢复、生活节奏。" "3. 每个 advice 必须是今天或本周能做的小建议,不要空泛。" "4. 不评价美丑,不做健康诊断,不判断年龄、种族、身份、财富、婚姻结局。" "5. 如果照片不够正脸、多人、遮挡或不清晰,要把 quality_check.can_analyze 设为 false,并说明原因。" ) class FaceAnalyzer(BaseAnalyzer): async def analyze(self, image_bytes: bytes, content_type: str) -> dict: if not self.client: return self._mock_report() return await self._create_image_report(USER_PROMPT, image_bytes, content_type) def _mock_report(self) -> dict: return { "quality_check": {"can_analyze": True, "reason": "mock mode", "confidence": 0.71}, "overall_summary": "这是一份娱乐向面相报告。整体看,你给人的第一感觉偏稳,适合用清楚、温和的表达建立信任。最近如果在学习、工作或关系里需要推进事情,先把状态收拾利落,会更容易进入节奏。", "dimensions": [ { "name": "脸型轮廓", "observations": ["整体轮廓较均衡", "面部线条有稳定感"], "interpretation": "这类轮廓象征做事方式偏稳,现实里可能更适合长期推进,而不是靠一阵热情冲刺。", "confidence": 0.68, "advice": "这周选一个最重要的目标,每天只推进一个小动作。", }, { "name": "三庭五眼", "observations": ["比例观感较协调", "中庭存在一定表达重心"], "interpretation": "比例协调象征你在计划和表达之间有平衡感。学习或工作中,适合先梳理框架,再输出观点。", "confidence": 0.64, "advice": "开会或沟通前,先写下 3 个要点,避免临场发散。", }, { "name": "眉眼神态", "observations": ["眉眼状态较集中", "眼神表达偏内敛"], "interpretation": "眉眼偏集中,象征观察力不错。你可能容易先看懂气氛,再决定怎么表达。", "confidence": 0.66, "advice": "有想法时别只观察,试着先说一个小判断。", }, { "name": "鼻唇表达", "observations": ["表达区域较清晰", "唇部状态偏平和"], "interpretation": "这象征你适合用稳定语气处理分歧。关系里,不必一次讲完所有委屈,先说最具体的一件事就好。", "confidence": 0.61, "advice": "本周沟通需求时,用“我希望下次可以……”开头。", }, { "name": "气色状态", "observations": ["画面气色受光线影响", "整体状态可读性尚可"], "interpretation": "气色象征当下状态。照片里呈现出的状态提醒你,近期要少一点硬撑,多一点规律恢复。", "confidence": 0.55, "advice": "今晚把睡前 30 分钟留给放松,不再继续刷任务。", }, { "name": "整体气质", "observations": ["气质偏克制", "亲和感与边界感并存"], "interpretation": "整体气质象征你适合走可靠路线。事业或学习里,稳定交付比强行表现更能给你加分。", "confidence": 0.67, "advice": "把一个小成果整理出来发给该看到的人。", }, ], "strengths": ["容易给人可靠感", "适合先观察再行动", "沟通时有稳定气场"], "challenges": ["想得多时表达会慢半拍", "容易把疲惫藏起来"], "suggestions": ["生活上先整理作息和精神状态", "学习成长上先列框架再输出", "事业工作上用稳定交付建立信任", "关系沟通上把需求说具体"], "lucky_keywords": ["稳住气场", "先说重点", "整理状态"], "disclaimer": DISCLAIMER, }