# -*- coding: utf-8 -*-
"""配置默认值定义"""

DEFAULTS = {
    "app": {
        "timezone": "Asia/Shanghai",
        "business_day_start_hour": 8,
        "store_id": "",
        # CHANGE 2026-02-15 | 对齐新库 etl_feiqiu 六层架构
        "schema_oltp": "ods",
        "schema_etl": "meta",
    },
    "db": {
        "dsn": "",
        "host": "",
        "port": "",
        "name": "",
        "user": "",
        "password": "",
        "connect_timeout_sec": 20,
        "batch_size": 1000,
        "session": {
            "timezone": "Asia/Shanghai",
            "statement_timeout_ms": 30000,
            "lock_timeout_ms": 5000,
            "idle_in_tx_timeout_ms": 600000,
        },
    },
    "api": {
        "base_url": "https://pc.ficoo.vip/apiprod/admin/v1",
        "token": None,
        "timeout_sec": 20,
        "page_size": 200,
        "params": {},
        "retries": {
            "max_attempts": 3,
            "backoff_sec": [1, 2, 4],
        },
        "headers_extra": {},
    },
    "run": {
        "data_source": "hybrid",
        "tasks": [
            "PRODUCTS",
            "TABLES",
            "MEMBERS",
            "ASSISTANTS",
            "PACKAGES_DEF",
            "ORDERS",
            "PAYMENTS",
            "REFUNDS",
            "COUPON_USAGE",
            "INVENTORY_CHANGE",
            "TOPUPS",
            "TABLE_DISCOUNT",
            "LEDGER",
        ],
        "dws_tasks": [],
        "index_tasks": [],
        "index_lookback_days": 90,
        "window_minutes": {
            "default_busy": 30,
            "default_idle": 180,
        },
        "overlap_seconds": 600,
        "snapshot_missing_delete": True,
        "snapshot_allow_empty_delete": False,
        "snapshot_protect_early_cutoff": True,
        # CHANGE 2026-02-18 | 强制全量更新：跳过 ODS hash 去重 + DWD 变更对比，无条件写入
        "force_full_update": False,
        "window_split": {
            "unit": "day",
            "days": 10,
            "compensation_hours": 2,
        },
        "idle_window": {
            "start": "04:00",
            "end": "16:00",
        },
        "allow_empty_result_advance": True,
    },
    "io": {
        "export_root": "",
        "log_root": "",
        "fetch_root": "",
        "ingest_source_dir": "",
        "manifest_name": "manifest.json",
        "ingest_report_name": "ingest_report.json",
        "write_pretty_json": True,
        "max_file_bytes": 50 * 1024 * 1024,
    },
    "pipeline": {
        # 旧配置节（保留以兼容旧 .env 和调用方）
        # 运行流程：FETCH_ONLY（仅在线抓取落盘）、INGEST_ONLY（本地清洗入库）、FULL（抓取 + 清洗入库）
        "flow": "FULL",
        # 在线抓取 JSON 输出根目录（按任务、run_id 与时间自动创建子目录）
        "fetch_root": "",
        # 本地清洗入库时的 JSON 输入目录（为空则默认使用本次抓取目录）
        "ingest_source_dir": "",
    },
    "clean": {
        "log_unknown_fields": True,
        "unknown_fields_limit": 50,
        "hash_key": {
            "algo": "sha1",
            "salt": "",
        },
        "strict_numeric": True,
        "round_money_scale": 2,
    },
    "security": {
        "redact_in_logs": True,
        "redact_keys": ["token", "password", "Authorization"],
        "echo_token_in_logs": False,
    },
    "ods": {
        # ODS 离线重建/回放相关（仅开发/运维使用）
        "json_doc_dir": "",
        "include_files": "",
        "drop_schema_first": True,
    },
    "integrity": {
        "mode": "history",
        "history_start": "2025-07-01",
        "history_end": "",
        "include_dimensions": True,
        "auto_check": False,
        "auto_backfill": False,
        "compare_content": True,
        "content_sample_limit": 50,
        "backfill_mismatch": True,
        "recheck_after_backfill": True,
        "ods_task_codes": "",
        "force_monthly_split": True,
    },
    "verification": {
        "skip_ods_when_fetch_before_verify": True,
        "ods_use_local_json": True,
    },
    "dws": {
        "monthly": {
            "allow_history": False,
            "prev_month_grace_days": 5,
            "history_months": 0,
            "new_hire_cap_effective_from": "2026-03-01",
            "new_hire_cap_day": 25,
            "new_hire_max_tier_level": 2,
        },
        "salary": {
            "run_days": 5,
            "allow_out_of_cycle": False,
            "room_course_price": 138,
        },
    },
    "dwd": {
        "fact_upsert": True,
        # 事实表补齐 UPSERT 批量参数（可按锁冲突情况调优）
        "fact_upsert_batch_size": 1000,
        "fact_upsert_min_batch_size": 100,
        "fact_upsert_max_retries": 2,
        "fact_upsert_retry_backoff_sec": [1, 2, 4],
        # 仅对事实表 backfill 设置的锁等待超时（None 表示沿用 db.session.lock_timeout_ms）
        "fact_upsert_lock_timeout_ms": None,
    },

}

# 任务代码常量
TASK_ORDERS = "ORDERS"
TASK_PAYMENTS = "PAYMENTS"
TASK_REFUNDS = "REFUNDS"
TASK_INVENTORY_CHANGE = "INVENTORY_CHANGE"
TASK_COUPON_USAGE = "COUPON_USAGE"
TASK_MEMBERS = "MEMBERS"
TASK_ASSISTANTS = "ASSISTANTS"
TASK_PRODUCTS = "PRODUCTS"
TASK_TABLES = "TABLES"
TASK_PACKAGES_DEF = "PACKAGES_DEF"
TASK_TOPUPS = "TOPUPS"
TASK_TABLE_DISCOUNT = "TABLE_DISCOUNT"
TASK_LEDGER = "LEDGER"
