#  @line_count 100
"""JSON解析模块，提取功能点和章节信息"""
import json
from pathlib import Path
from typing import List, Dict, Any, Optional
from .parser_adapters.parser_factory import ParserFactory


class JSONParser:
    """JSON文档解析器（门面模式）"""
    
    def __init__(self, json_path: str):
        """
        初始化JSON解析器
        
        Args:
            json_path: JSON文件路径
        """
        self.json_path = Path(json_path)
        self.data: Dict[str, Any] = {}
        self.adapter = None
        self.load_json()
    
    def load_json(self):
        """加载JSON文件并创建适配器"""
        if not self.json_path.exists():
            raise FileNotFoundError(f"JSON文件不存在: {self.json_path}")
        
        with open(self.json_path, 'r', encoding='utf-8') as f:
            self.data = json.load(f)
        
        # 自动检测格式并创建适配器
        self.adapter = ParserFactory.create_adapter(self.data)
    
    def extract_function_points(self) -> List[Dict[str, Any]]:
        """
        提取功能点列表
        
        Returns:
            功能点列表，每个功能点包含：
            - module_name: 所属模块
            - function_name: 功能名称
            - description: 功能描述
            - operation_steps: 操作步骤（可选）
            - requirement_id: 需求编号（可选）
            - requirement_type: 需求类型（可选）
        """
        return self.adapter.extract_function_points()
    
    def get_document_info(self) -> Dict[str, Any]:
        """
        获取文档基本信息
        
        Returns:
            文档信息字典
        """
        return self.adapter.get_document_info()
    
    def get_sections(self) -> List[Dict[str, Any]]:
        """
        获取所有章节信息
        
        Returns:
            章节列表
        """
        return self.adapter.get_sections()
    
    def get_module_summary(self) -> List[Dict[str, Any]]:
        """
        获取模块摘要
        
        Returns:
            模块摘要列表
        """
        return self.adapter.get_module_summary()

