{% macro strategy(value, fallback='未分類策略') -%} {%- set labels = { 'product_pick': '選品攻擊', 'price_recommendation': '價格建議', 'price_adjustment': '價格調整', 'price_reduction': '降價攻擊', 'price_drop': '降價攻擊', 'discount_attack': '降價攻擊', 'price_increase': '漲價防守', 'margin_repair': '毛利修復', 'inventory_clearance': '庫存去化', 'competitor_response': '競品回應', 'competitor_check': '競品複核', 'promotion': '活動促銷', 'stockout': '缺貨處理', 'repricing': '價格重定', 'watch': '觀察', 'maintain': '維持價格', 'unknown': '未分類策略' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %} {% macro status(value, fallback='未分類') -%} {%- set labels = { 'pending': '待處理', 'awaiting_review': '待審核', 'approved': '已核准', 'rejected': '已拒絕', 'rejected_quality': '品質拒絕', 'rejected_hallucination': '幻覺拒絕', 'rejected_duplicate': '重複拒絕', 'rejected_human': '人工拒絕', 'expired': '已過期', 'done': '已完成', 'completed': '已完成', 'running': '執行中', 'success': '成功', 'failed': '失敗', 'matched': '已比對', 'unmatched': '未比對', 'ok': '正常', 'cache_only': '只用快取', 'passed': '已通過', 'error': '錯誤', 'skipped': '已跳過', 'unknown': '未分類' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %} {% macro verdict(value, fallback='未分類') -%} {%- set labels = { 'effective': '有效', 'success': '成功', 'positive': '正向', 'backfired': '反效果', 'negative': '負向', 'failed': '失敗', 'neutral': '中性', 'pending': '待回收', 'inconclusive': '尚未定論', 'no_data': '無資料', 'unknown': '未分類' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %} {% macro plan_type(value, fallback='未分類計畫') -%} {%- set labels = { 'action_plan': '行動計畫', 'price_adjustment': '價格調整', 'product_pick': '選品攻擊', 'promotion_review': '活動複核', 'stockout_followup': '缺貨跟進', 'competitor_check': '競品複核', 'margin_repair': '毛利修復', 'strategy_review': '策略複核', 'quality_review': '品質複核' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %} {% macro metric(value, fallback='未分類指標') -%} {%- set labels = { 'sales': '銷售', 'revenue': '業績', 'margin': '毛利', 'profit': '毛利', 'conversion': '轉換', 'price': '價格', 'stock': '庫存', 'orders': '訂單', 'unknown': '未分類指標' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %} {% macro insight(value, fallback='未分類洞察') -%} {%- set labels = { 'product_pick': '選品攻擊', 'price_recommendation': '價格建議', 'competitor_price': '競品價格', 'sales_anomaly': '業績異常', 'budget_strategy': '預算策略', 'rag_feedback': 'RAG 反饋', 'ppt_audit': 'PPT 審核', 'quality_issue': '品質問題', 'promotion': '活動促銷', 'market_signal': '市場訊號', 'strategy': '策略洞察', 'unknown': '未分類洞察' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %} {% macro provider(value, fallback='未分類供應商') -%} {%- set labels = { 'gcp_ollama': '主力 Ollama', 'ollama_secondary': '備援 Ollama', 'ollama_111': '111 Ollama', 'nim_via_elephant': 'NIM Elephant', 'gemini': 'Gemini', 'claude': 'Claude', 'nim': 'NIM', 'openrouter': 'OpenRouter', 'unknown': '未分類供應商' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %} {% macro source(value, fallback='未分類來源') -%} {%- set labels = { 'ai_insights': 'AI 知識庫', 'ai_learning_episodes': '學習片段', 'ai_price_recommendations': 'AI 價格建議', 'action_plans': '行動計畫', 'action_outcomes': '實際結果', 'competitor_match_attempts': '競品比對', 'competitor_price_history': '競品價格歷史', 'ppt_audit_results': 'PPT 審核結果' } -%} {%- if value -%}{{ labels.get(value, value|replace('_', ' ')) }}{%- else -%}{{ fallback }}{%- endif -%} {%- endmacro %}