# rag_web_auto_mode.py から抜粋（63-136行目）
class QueryClassifier:
    
    # クエリタイプ別のキーワード
    TEMPORAL_KEYWORDS = [
        "最新", "今", "現在", "ニュース", "価格",
        "発売", "販売", "いつ", "何時", "最近"
    ]
    
    SPEC_KEYWORDS = [
        "仕様", "スペック", "構成", "性能", "アーキテクチャ",
        "CPU", "GPU", "メモリ", "ストレージ", "電源",
        "周波数", "コア", "帯域幅"
    ]
    
    HOWTO_KEYWORDS = [
        "使い方", "構築", "設定", "インストール", "方法",
        "やり方", "手順", "導入", "セットアップ", "には"
    ]
    
    @classmethod
    def classify(cls, query):
        """
        クエリを分類してモードと閾値を返す
        
        Args:
            query: ユーザーのクエリ文字列
            
        Returns:
            dict: {
                "mode": "rag" | "web" | "fallback",
                "query_type": "spec" | "news" | "howto" | "general",
                "threshold": float,
                "reason": str
            }
        """
        # 時間依存の情報 → Web検索優先
        if any(kw in query for kw in cls.TEMPORAL_KEYWORDS):
            return {
                "mode": "web",
                "query_type": "news",
                "threshold": 0.95,
                "reason": "時間依存の情報を求めるクエリ"
            }
        
        # 仕様・スペック → RAG優先
        if any(kw in query for kw in cls.SPEC_KEYWORDS):
            return {
                "mode": "rag",
                "query_type": "spec",
                "threshold": 0.85,
                "reason": "仕様・スペック情報を求めるクエリ"
            }
        
        # 使い方・構築方法 → Fallback
        if any(kw in query for kw in cls.HOWTO_KEYWORDS):
            return {
                "mode": "fallback",
                "query_type": "howto",
                "threshold": 0.90,
                "reason": "使い方・構築方法を求めるクエリ"
            }
        
        # デフォルト → Fallback
        return {
            "mode": "fallback",
            "query_type": "general",
            "threshold": 0.85,
            "reason": "一般的なクエリ"
        }
