#  @line_count 100
"""JSON解析器适配器基类"""
from abc import ABC, abstractmethod
from typing import List, Dict, Any


class BaseParserAdapter(ABC):
    """解析器适配器抽象基类"""
    
    def __init__(self, data: Dict[str, Any]):
        """
        初始化适配器
        
        Args:
            data: 解析后的JSON数据
        """
        self.data = data
    
    @abstractmethod
    def extract_function_points(self) -> List[Dict[str, Any]]:
        """
        提取功能点列表
        
        Returns:
            功能点列表，统一格式：
            - module_name: 所属模块
            - function_name: 功能名称
            - description: 功能描述
            - operation_steps: 操作步骤（可选）
            - requirement_id: 需求编号（可选）
            - requirement_type: 需求类型（可选）
        """
        pass
    
    @abstractmethod
    def get_document_info(self) -> Dict[str, Any]:
        """
        获取文档基本信息
        
        Returns:
            文档信息字典，统一格式：
            - title: 文档标题
            - version: 版本（可选）
            - date: 日期（可选）
            - section_count: 章节数量
        """
        pass
    
    @abstractmethod
    def get_sections(self) -> List[Dict[str, Any]]:
        """
        获取所有章节信息
        
        Returns:
            章节列表
        """
        pass
    
    @abstractmethod
    def get_module_summary(self) -> List[Dict[str, Any]]:
        """
        获取模块摘要
        
        Returns:
            模块摘要列表
        """
        pass
    
    @staticmethod
    @abstractmethod
    def can_parse(data: Dict[str, Any]) -> bool:
        """
        检测是否能解析该格式
        
        Args:
            data: JSON数据
            
        Returns:
            是否能解析
        """
        pass
