# -*- coding: utf-8 -*-
"""
record_service.py — 问题记录业务逻辑

从原 server.py 迁入 rebuild_search_index。原实现用 `global search_engine` 重置
server.py 模块级单例；现改为通过 container.reset_search_engine() 重置容器内单例，
保持"提交记录后强制下次访问重建索引"的语义不变。
"""

import sys
import subprocess

from utils.paths import SCRIPT_DIR, PROJECT_ROOT
from utils.logger import get_logger
import container

logger = get_logger(__name__)


def rebuild_search_index():
    """重建搜索索引（含向量索引）"""
    # 复用 build_index.py 的逻辑
    build_index_script = SCRIPT_DIR.parent / "build_index.py"
    if build_index_script.exists():
        result = subprocess.run(
            [sys.executable, str(build_index_script)],
            capture_output=True,
            text=True,
            timeout=60,
            cwd=str(PROJECT_ROOT),
        )
        if result.returncode != 0:
            logger.error(f"索引重建失败：{result.stderr}")

        # P2-1：同步重建向量（失败不阻塞，SearchEngine 会降级 TF-IDF）
        try:
            from utils import vector_builder
            vector_result = vector_builder.build_vectors()
            if vector_result and vector_result[2] > 0:
                logger.warning(f"向量重建部分失败：{vector_result[2]} 条失败")
        except Exception as e:
            logger.warning(f"向量重建失败（将降级 TF-IDF）：{e}")

        # 重新加载搜索引擎（通过 container 重置单例）
        container.reset_search_engine()
        container.get_search_engine()
