from dataclasses import dataclass
from typing import Dict, List

@dataclass
class Resume:
    # raw_text: str
    # formatting: Dict
    # metadata: Dict
    # scores: Dict = None
    raw_text: str
    extracted_keywords: list
    keyterms: list
    entities: list
    
    @classmethod
    def from_docx(cls, file_path: str):
        """Parse while preserving formatting"""
        text, formatting = parse_docx_with_formatting(file_path)
        return cls(text, formatting, extract_metadata(text))
    
    def to_docx(self, output_path: str):
        """Export with original formatting"""
        apply_formatting(self.raw_text, self.formatting, output_path)