# ==============================================================================
# NeoZQYY ETL Connector（飞球）配置
# ==============================================================================
# ETL env_parser.py 从此文件加载
# 优先级：DEFAULTS < 此 .env < 环境变量 < CLI 参数
# 敏感值禁止提交；本文件已在 .gitignore 中排除

# ------------------------------------------------------------------------------
# 门店配置
# ------------------------------------------------------------------------------
STORE_ID=2790685415443269
TIMEZONE=Asia/Shanghai

# ------------------------------------------------------------------------------
# 数据库配置
# ------------------------------------------------------------------------------
# CHANGE 2026-02-15 | 默认指向测试库，生产环境切换为 etl_feiqiu
PG_DSN=postgresql://local-Python:Neo-local-1991125@100.64.0.4:5432/test_etl_feiqiu
PG_CONNECT_TIMEOUT=10

# 数据库 Schema
SCHEMA_OLTP=ods
SCHEMA_ETL=meta

# ------------------------------------------------------------------------------
# API 配置（上游 SaaS API）
# ------------------------------------------------------------------------------
API_BASE=https://pc.ficoo.vip/apiprod/admin/v1/
API_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnQtdHlwZSI6IjQiLCJ1c2VyLXR5cGUiOiIxIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjoiMTIiLCJyb2xlLWlkIjoiMTIiLCJ0ZW5hbnQtaWQiOiIyNzkwNjgzMTYwNzA5OTU3Iiwibmlja25hbWUiOiLnp5_miLfnrqHnkIblkZjvvJrmganmgakxIiwic2l0ZS1pZCI6IjAiLCJtb2JpbGUiOiIxMzgxMDUwMjMwNCIsInNpZCI6IjI5NTA0ODk2NTgzOTU4NDUiLCJzdGFmZi1pZCI6IjMwMDk5MTg2OTE1NTkwNDUiLCJvcmctaWQiOiIwIiwicm9sZS10eXBlIjoiMyIsInJlZnJlc2hUb2tlbiI6Ik9OUTkreFhSWjFPVFhzQWhieTJVa3RyVXR6UzdldVE5Q1VVQ3QzQ1ArMlE9IiwicmVmcmVzaEV4cGlyeVRpbWUiOiIyMDI2LzQvMTQg5LiL5Y2INTo0MToyNSIsIm5lZWRDaGVja1Rva2VuIjoiZmFsc2UiLCJleHAiOjE3NzYxNTk2ODUsImlzcyI6InRlc3QiLCJhdWQiOiJVc2VyIn0.KyULo2a6dirmiAkka5Ocu_ieoZY5VsVWVqMj5smwvmE
API_TIMEOUT=20
API_PAGE_SIZE=200
API_RETRY_MAX=3

# ------------------------------------------------------------------------------
# 路径配置
# CHANGE 2026-02-19 | 统一迁移到 export/ETL-Connectors/feiqiu/ 下
# ------------------------------------------------------------------------------
EXPORT_ROOT=C:/NeoZQYY/export/ETL-Connectors/feiqiu/JSON
LOG_ROOT=C:/NeoZQYY/export/ETL-Connectors/feiqiu/LOGS
FETCH_ROOT=C:/NeoZQYY/export/ETL-Connectors/feiqiu/JSON
WRITE_PRETTY_JSON=true

# ------------------------------------------------------------------------------
# 管线流程配置
# ------------------------------------------------------------------------------
PIPELINE_FLOW=FULL

# ------------------------------------------------------------------------------
# 管道限流配置（RateLimiter 请求间隔，秒）
# CHANGE 2026-03-06 | 从默认 5-20s 降至 0.1-2s，大幅缩短 ODS 请求耗时
# ------------------------------------------------------------------------------
PIPELINE_RATE_MIN=0.1
PIPELINE_RATE_MAX=2.0

# ------------------------------------------------------------------------------
# 时间窗口配置
# ------------------------------------------------------------------------------
OVERLAP_SECONDS=600
WINDOW_BUSY_MIN=30
WINDOW_IDLE_MIN=180
IDLE_START=04:00
IDLE_END=16:00
WINDOW_SPLIT_UNIT=day
WINDOW_SPLIT_DAYS=10
WINDOW_COMPENSATION_HOURS=2
ALLOW_EMPTY_RESULT_ADVANCE=true

# ------------------------------------------------------------------------------
# 快照配置
# ------------------------------------------------------------------------------
SNAPSHOT_MISSING_DELETE=true
SNAPSHOT_ALLOW_EMPTY_DELETE=false

# ------------------------------------------------------------------------------
# 数据完整性检查配置
# ------------------------------------------------------------------------------
INTEGRITY_MODE=history
INTEGRITY_HISTORY_START=2025-07-01
INTEGRITY_INCLUDE_DIMENSIONS=true
INTEGRITY_AUTO_CHECK=false
INTEGRITY_AUTO_BACKFILL=false
INTEGRITY_COMPARE_CONTENT=true
INTEGRITY_CONTENT_SAMPLE_LIMIT=50
INTEGRITY_BACKFILL_MISMATCH=true
INTEGRITY_RECHECK_AFTER_BACKFILL=true

# 指定 ODS 任务代码（逗号分隔，为空则全部）
# INTEGRITY_ODS_TASK_CODES=

# 是否强制按月切分（默认 true）
# INTEGRITY_FORCE_MONTHLY_SPLIT=true

# ------------------------------------------------------------------------------
# 校验配置
# ------------------------------------------------------------------------------
VERIFY_SKIP_ODS_ON_FETCH=true
VERIFY_ODS_LOCAL_JSON=true

# ------------------------------------------------------------------------------
# 数据库会话参数（defaults.py → db.session.*）
# ------------------------------------------------------------------------------
# 会话时区（默认跟随 TIMEZONE）
# DB_SESSION_TIMEZONE=Asia/Shanghai

# SQL 语句超时（毫秒，默认 30000）
# DB_STATEMENT_TIMEOUT_MS=30000

# 锁等待超时（毫秒，默认 5000）
# DB_LOCK_TIMEOUT_MS=5000

# 事务空闲超时（毫秒，默认 600000 = 10 分钟）
# DB_IDLE_IN_TX_TIMEOUT_MS=600000

# ------------------------------------------------------------------------------
# 清洗配置（defaults.py → clean.*）
# ------------------------------------------------------------------------------
# 是否记录未知字段（默认 true）
# CLEAN_LOG_UNKNOWN_FIELDS=true

# 未知字段日志上限（默认 50）
# CLEAN_UNKNOWN_FIELDS_LIMIT=50

# 哈希算法（默认 sha1）
# CLEAN_HASH_ALGO=sha1

# 哈希盐值（默认空）
# CLEAN_HASH_SALT=

# 严格数值校验（默认 true）
# CLEAN_STRICT_NUMERIC=true

# 金额舍入精度（默认 2 位小数）
# CLEAN_ROUND_MONEY_SCALE=2

# ------------------------------------------------------------------------------
# 安全配置（defaults.py → security.*）
# ------------------------------------------------------------------------------
# 日志中是否脱敏（默认 true）
# SECURITY_REDACT_IN_LOGS=true

# 需脱敏的键名（JSON 数组，默认 ["token","password","Authorization"]）
# SECURITY_REDACT_KEYS=["token","password","Authorization"]

# 日志中是否回显 token（默认 false，调试用）
# SECURITY_ECHO_TOKEN_IN_LOGS=false

# ------------------------------------------------------------------------------
# IO 文件大小限制（defaults.py → io.max_file_bytes）
# ------------------------------------------------------------------------------
# 单文件最大字节数（默认 50MB = 52428800）
# MAX_FILE_BYTES=52428800

# ------------------------------------------------------------------------------
# DWD 层配置
# ------------------------------------------------------------------------------
DWD_FACT_UPSERT=true

# 事实表 UPSERT 批量大小（默认 1000）
# DWD_FACT_UPSERT_BATCH_SIZE=1000

# 最小批量大小（锁冲突时自动缩小，默认 100）
# DWD_FACT_UPSERT_MIN_BATCH_SIZE=100

# 最大重试次数（默认 2）
# DWD_FACT_UPSERT_MAX_RETRIES=2

# 重试退避时间（JSON 数组，秒，默认 [1,2,4]）
# DWD_FACT_UPSERT_RETRY_BACKOFF=[1,2,4]

# 事实表 backfill 锁等待超时（毫秒，为空则沿用 DB_LOCK_TIMEOUT_MS）
# DWD_FACT_UPSERT_LOCK_TIMEOUT_MS=

# ------------------------------------------------------------------------------
# 任务列表配置
# ------------------------------------------------------------------------------
RUN_TASKS=PRODUCTS,TABLES,MEMBERS,ASSISTANTS,PACKAGES_DEF,ORDERS,PAYMENTS,REFUNDS,COUPON_USAGE,INVENTORY_CHANGE,TOPUPS,TABLE_DISCOUNT,LEDGER
INDEX_LOOKBACK_DAYS=90

# ------------------------------------------------------------------------------
# DWS 月度/薪资配置（defaults.py → dws.*）
# ------------------------------------------------------------------------------
# 是否允许历史月度重算（默认 false）
# DWS_MONTHLY_ALLOW_HISTORY=false

# 上月宽限天数（默认 5，即次月 1-5 号仍可计算上月）
# DWS_MONTHLY_PREV_GRACE_DAYS=5

# 历史月份数（默认 0，即不回溯）
# DWS_MONTHLY_HISTORY_MONTHS=0

# 新人封顶生效日期（默认 2026-03-01）
# DWS_MONTHLY_NEW_HIRE_CAP_EFFECTIVE_FROM=2026-03-01

# 新人封顶天数（默认 25）
# DWS_MONTHLY_NEW_HIRE_CAP_DAY=25

# 新人最高等级（默认 2）
# DWS_MONTHLY_NEW_HIRE_MAX_TIER_LEVEL=2

# 薪资计算运行天数（默认 5）
# DWS_SALARY_RUN_DAYS=5

# 是否允许非周期内运行（默认 false）
# DWS_SALARY_ALLOW_OUT_OF_CYCLE=false

# 包房课单价（默认 138）
# DWS_SALARY_ROOM_COURSE_PRICE=138

# ------------------------------------------------------------------------------
# 运行模式（defaults.py → run.data_source）
# ------------------------------------------------------------------------------
# 数据源模式：hybrid（默认，API+本地）、online（仅 API）、offline（仅本地）
# 也可通过 PIPELINE_FLOW 间接设置（FULL→hybrid, FETCH_ONLY→online, INGEST_ONLY→offline）
# DATA_SOURCE=hybrid

# ------------------------------------------------------------------------------
# API 额外请求头（defaults.py → api.headers_extra）
# ------------------------------------------------------------------------------
# JSON 对象格式，默认空
# API_HEADERS_EXTRA={}
