# ============================================================================== # 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_miLfnrqHnkIblkZjvvJrmganmgakxIiwic2l0ZS1pZCI6IjAiLCJtb2JpbGUiOiIxMzgxMDUwMjMwNCIsInNpZCI6IjI5NTA0ODk2NTgzOTU4NDUiLCJzdGFmZi1pZCI6IjMwMDk5MTg2OTE1NTkwNDUiLCJvcmctaWQiOiIwIiwicm9sZS10eXBlIjoiMyIsInJlZnJlc2hUb2tlbiI6IlI5THQvRkVjSGZubkdiOTZJZ3lmdWhjaXU5WnIwREQrZFh1amhVY1RCSDQ9IiwicmVmcmVzaEV4cGlyeVRpbWUiOiIyMDI2LzMvMTEg5LiL5Y2INjo0MjozMSIsIm5lZWRDaGVja1Rva2VuIjoiZmFsc2UiLCJleHAiOjE3NzMyMjU3NTEsImlzcyI6InRlc3QiLCJhdWQiOiJVc2VyIn0.8H5V3W0NfGJrcYo9Ex-35D-SzxhC2tRaZGrgo2reYr4 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=60 # ------------------------------------------------------------------------------ # 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={}