from __future__ import annotations

from pathlib import Path


BASE_DIR = Path(__file__).resolve().parent.parent
VOLUMES_DIR = BASE_DIR / "volumes" / "parser"
RAW_ROOT = VOLUMES_DIR / "raw" / "consultant"
NORMALIZED_ROOT = VOLUMES_DIR / "normalized"
STATE_DIR = VOLUMES_DIR / "state"
MANIFEST_PATH = STATE_DIR / "manifest.json"
RAW_INDEX_PATH = STATE_DIR / "raw_index.json"

POPULAR_URL = "https://www.consultant.ru/popular/"
REQUEST_TIMEOUT = 30
MAX_RETRIES = 3
MAX_WORKERS = 2
USER_AGENT = (
    "LawBotParser/1.0 (+https://local.lawbot; "
    "purpose=legal-rag-ingestion; contact=local-dev)"
)

TARGET_DOCUMENTS = [
    {
        "key": "constitution",
        "category_key": "constitution",
        "consultant_category": "Конституция РФ",
        "law_type": "constitutional",
        "source_short_name": "Конституция РФ",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_28399/",
    },
    {
        "key": "civil_code_part_1",
        "category_key": "civil",
        "consultant_category": "Гражданское право, гражданское законодательство РФ",
        "law_type": "civil",
        "source_short_name": "ГК РФ ч. 1",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_5142/",
    },
    {
        "key": "civil_code_part_2",
        "category_key": "civil",
        "consultant_category": "Гражданское право, гражданское законодательство РФ",
        "law_type": "civil",
        "source_short_name": "ГК РФ ч. 2",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_508506/",
    },
    {
        "key": "civil_code_part_3",
        "category_key": "civil",
        "consultant_category": "Гражданское право, гражданское законодательство РФ",
        "law_type": "civil",
        "source_short_name": "ГК РФ ч. 3",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_482694/",
    },
    {
        "key": "civil_code_part_4",
        "category_key": "civil",
        "consultant_category": "Гражданское право, гражданское законодательство РФ",
        "law_type": "civil",
        "source_short_name": "ГК РФ ч. 4",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_509417/",
    },
    {
        "key": "civil_procedure_code",
        "category_key": "civil_procedure",
        "consultant_category": "Гражданское процессуальное право, гражданский процесс",
        "law_type": "procedural",
        "source_short_name": "ГПК РФ",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_39570/",
    },
    {
        "key": "housing_code",
        "category_key": "housing",
        "consultant_category": "Жилищное право, жилищное законодательство РФ",
        "law_type": "housing",
        "source_short_name": "ЖК РФ",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_51057/",
    },
    {
        "key": "family_code",
        "category_key": "family",
        "consultant_category": "Семейное право, семейное законодательство РФ",
        "law_type": "family",
        "source_short_name": "СК РФ",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_8982/",
    },
    {
        "key": "labor_code",
        "category_key": "labor",
        "consultant_category": "Трудовое право, трудовое законодательство РФ",
        "law_type": "labor",
        "source_short_name": "ТК РФ",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_34683/",
    },
    {
        "key": "consumer_protection_law",
        "category_key": "consumer",
        "consultant_category": "Законодательство РФ о правах потребителя",
        "law_type": "consumer",
        "source_short_name": "ЗОЗПП",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_305/",
    },
    {
        "key": "enforcement_law",
        "category_key": "enforcement",
        "consultant_category": "Законодательство об исполнительном производстве",
        "law_type": "enforcement",
        "source_short_name": "ФЗ об исполнительном производстве",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_71450/",
    },
    {
        "key": "mortgage_law",
        "category_key": "mortgage",
        "consultant_category": "Законодательство об ипотеке",
        "law_type": "mortgage",
        "source_short_name": "ФЗ об ипотеке",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_19396/",
    },
    {
        "key": "administrative_code",
        "category_key": "administrative",
        "consultant_category": "Административное право, административное законодательство РФ",
        "law_type": "administrative",
        "source_short_name": "КоАП РФ",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_34661/",
    },
    {
        "key": "criminal_code",
        "category_key": "criminal",
        "consultant_category": "Уголовное право, уголовное законодательство РФ",
        "law_type": "criminal",
        "source_short_name": "УК РФ",
        "source_url": "https://www.consultant.ru/document/cons_doc_LAW_10699/",
    },
]
