---
context:
  module: "ai-service"
  feature: "AISVC-RES"
  status: "✅已完成"
  version: "0.9.0"
  active_ac_range: "AC-AISVC-RES-01~15"

spec_references:
  requirements: "spec/ai-service/iterations/v0.9.0-retrieval-embedding-strategy/requirements.md"
  design: "spec/ai-service/iterations/v0.9.0-retrieval-embedding-strategy/design.md"
  tasks: "spec/ai-service/iterations/v0.9.0-retrieval-embedding-strategy/tasks.md"
  active_version: "0.1.0"

overall_progress:
  - "[x] Phase 1: 策略层核心实现 (100%) [Tasks: StrategyRouter, ModeRouter]"
  - "[x] Phase 2: 自动路由规则实现 (100%) [Tasks: auto路由规则, direct回退]"
  - "[x] Phase 3: 配置热更新 (100%) [Tasks: 路由参数热更新]"
  - "[x] Phase 4: API 端点与集成 (100%) [Tasks: API端点, dialogue集成]"
  - "[x] Phase 5: 验证与文档 (100%) [Tasks: 测试, 进度更新]"

current_phase:
  goal: "所有任务已完成"
  sub_tasks:
    - "[x] 创建 routing_config.py 实现路由配置模型 [AC-AISVC-RES-01~15]"
    - "[x] 创建 strategy_router.py 实现默认/增强策略路由 [AC-AISVC-RES-01,02,03,07,08]"
    - "[x] 创建 mode_router.py 实现 direct/react/auto 模式路由 [AC-AISVC-RES-09,10,11,12,13,14]"
    - "[x] 创建 strategy_integration.py 统一集成层"
    - "[x] 创建 strategy.py API 端点 [AC-AISVC-RES-06,15]"
    - "[x] 注册 API 路由到 main.py"
  
  next_action:
    immediate: "所有实现已完成，等待下一阶段任务"
    details:
      file: "N/A"
      action: "等待用户确认或下一阶段需求"
      reference: "N/A"

technical_context:
  module_structure: |
    ai-service/app/services/retrieval/
    ├── routing_config.py      # 新增：路由配置模型（StrategyType, RagRuntimeMode, RoutingConfig）
    ├── strategy_router.py     # 新增：策略路由器（StrategyRouter, RollbackManager）
    ├── mode_router.py         # 新增：模式路由器（ModeRouter, ComplexityAnalyzer）
    ├── strategy_integration.py # 新增：统一集成层
    ├── optimized_retriever.py # 现有：优化版 RAG 检索器
    ├── vector_retriever.py    # 现有：向量检索器
    └── base.py                # 现有：基类定义
    
    ai-service/app/api/admin/
    └── strategy.py            # 新增：策略 API 端点
  key_decisions:
    - decision: "使用 StrategyType 替代 RetrievalStrategy 避免与 metadata.py 命名冲突"
      reason: "metadata.py 中已存在 RetrievalStrategy 枚举"
      impact: "所有策略相关代码使用 StrategyType"
    - decision: "StrategyRouter 作为策略层入口，根据配置选择默认或增强策略"
      reason: "保持向后兼容，默认策略复用现有逻辑"
      impact: "所有检索请求通过 StrategyRouter 路由"
    - decision: "ModeRouter 作为模式路由，支持 direct/react/auto 三种模式"
      reason: "支持 ReAct 和非 ReAct 两种执行路径"
      impact: "auto 模式需要复杂度/置信度判定逻辑"
    - decision: "RetrievalStrategyIntegration 作为统一集成层"
      reason: "简化 dialogue.py 的集成复杂度"
      impact: "dialogue.py 只需调用 integration.execute(ctx)"
  code_snippets: |
    # 使用示例
    from app.services.retrieval import (
        StrategyContext,
        get_retrieval_strategy_integration,
    )
    
    integration = get_retrieval_strategy_integration()
    ctx = StrategyContext(
        tenant_id="tenant-123",
        query="用户查询",
        metadata_confidence=0.8,
        complexity_score=0.3,
    )
    result = await integration.execute(ctx)
    # result.retrieval_result - 检索结果
    # result.final_answer - ReAct 最终答案（如果有）
    # result.strategy - 使用的策略
    # result.mode - 使用的模式

session_history:
  - session: "Session #1 (2026-03-10)"
    completed:
      - "创建 routing_config.py - 路由配置模型"
      - "创建 strategy_router.py - 策略路由器"
      - "创建 mode_router.py - 模式路由器"
      - "创建 strategy_integration.py - 统一集成层"
      - "创建 strategy.py - API 端点"
      - "更新 __init__.py - 导出新模块"
      - "更新 main.py - 注册 API 路由"
      - "更新 admin/__init__.py - 导出 strategy_router"
      - "创建单元测试文件 test_routing_config.py - 路由配置测试"
      - "创建单元测试文件 test_strategy_router.py - 策略路由器测试"
      - "创建单元测试文件 test_mode_router.py - 模式路由器测试"
      - "创建单元测试文件 test_strategy_integration.py - 集成层测试"
    changes:
      - file: "app/services/retrieval/routing_config.py"
        action: "新增"
        description: "路由配置模型，包含 StrategyType, RagRuntimeMode, RoutingConfig"
      - file: "app/services/retrieval/strategy_router.py"
        action: "新增"
        description: "策略路由器，实现默认/增强策略路由、灰度发布、回滚管理"
      - file: "app/services/retrieval/mode_router.py"
        action: "新增"
        description: "模式路由器，实现 direct/react/auto 模式路由、复杂度分析、低置信度回退"
      - file: "app/services/retrieval/strategy_integration.py"
        action: "新增"
        description: "统一集成层，整合 StrategyRouter 和 ModeRouter"
      - file: "app/api/admin/strategy.py"
        action: "新增"
        description: "策略 API 端点，提供配置查询、切换、验证、回滚接口"
      - file: "app/services/retrieval/__init__.py"
        action: "修改"
        description: "导出新增模块"
      - file: "app/api/admin/__init__.py"
        action: "修改"
        description: "导出 strategy_router"
      - file: "app/main.py"
        action: "修改"
        description: "注册 strategy_router 到应用"
      - file: "tests/test_routing_config.py"
        action: "新增"
        description: "路由配置单元测试，覆盖 StrategyType, RagRuntimeMode, RoutingConfig, StrategyContext, StrategyResult"
      - file: "tests/test_strategy_router.py"
        action: "新增"
        description: "策略路由器单元测试，覆盖 RollbackManager, DefaultPipeline, EnhancedPipeline, StrategyRouter"
      - file: "tests/test_mode_router.py"
        action: "新增"
        description: "模式路由器单元测试，覆盖 ComplexityAnalyzer, ModeRouteResult, ModeRouter"
      - file: "tests/test_strategy_integration.py"
        action: "新增"
        description: "集成层单元测试，覆盖 RetrievalStrategyResult, RetrievalStrategyIntegration"
    test_results:
      - test_file: "tests/test_routing_config.py"
        status: "✅ 通过"
        test_count: 26
        coverage: "AC-AISVC-RES-01~15"
      - test_file: "tests/test_strategy_router.py"
        status: "✅ 通过"
        test_count: 19
        coverage: "AC-AISVC-RES-01,02,03,07,08"
      - test_file: "tests/test_mode_router.py"
        status: "✅ 通过"
        test_count: 18
        coverage: "AC-AISVC-RES-09,10,11,12,13,14"
      - test_file: "tests/test_strategy_integration.py"
        status: "✅ 通过"
        test_count: 14
        coverage: "AC-AISVC-RES-01~15"

startup_guide:
  - "Step 1: 读取本进度文档（了解当前位置与下一步）"
  - "Step 2: 读取 spec_references 中定义的模块规范（了解业务与接口约束）"
  - "Step 3: 直接执行 next_action"
