Files
Neo-ZQYY/.env.template
Neo 6f8f12314f feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更:
- backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔
- admin-web: ETL 状态页、任务管理、调度配置、登录优化
- miniprogram: 看板页面、聊天集成、UI 组件、导航更新
- etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强
- tenant-admin: 项目初始化
- db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8)
- packages/shared: 枚举和工具函数更新
- tools: 数据库工具、报表生成、健康检查
- docs: PRD/架构/部署/合约文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:03:48 +08:00

360 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ==============================================================================
# NeoZQYY Monorepo 公共环境配置模板
# ==============================================================================
# 使用方式:复制为 .env 后填入实际值
# 配置优先级DEFAULTS < .env < .env.local < 环境变量 < CLI 参数
#
# 本文件包含所有层级的参数模板:
# [ROOT] — 根 .env公共配置所有子系统共享
# [ETL] — apps/etl/connectors/feiqiu/.envETL 专属配置)
# [BACKEND] — apps/backend/.env.local后端私有覆盖
#
# 语法KEY=VALUE正斜杠路径布尔值用 true/false列表用逗号分隔
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ [ROOT] 根 .env — 公共配置层 ║
# ╚════════════════════════════════════════════════════════════════════════════╝
# ------------------------------------------------------------------------------
# 数据库公共连接参数(后端 + ETL 共用同一 PostgreSQL 实例)
# ------------------------------------------------------------------------------
DB_HOST=localhost
DB_PORT=5432
DB_USER=
DB_PASSWORD=
# ------------------------------------------------------------------------------
# 数据库名称
# 数据库清单:
# etl_feiqiu — ETL 流程(飞球连接器),正式环境
# test_etl_feiqiu — ETL 流程(飞球连接器),开发/测试环境
# zqyy_app — 小程序业务库,正式环境
# test_zqyy_app — 小程序业务库,开发/测试环境
# 开发/测试环境使用 test_ 前缀库
# ------------------------------------------------------------------------------
APP_DB_NAME=test_zqyy_app
ETL_DB_NAME=test_etl_feiqiu
# ------------------------------------------------------------------------------
# 组合式 DSN各子系统 / 脚本需要完整连接串时使用)
# 格式postgresql://user:password@host:port/dbname
# ------------------------------------------------------------------------------
PG_DSN=postgresql://user:password@host:5432/test_etl_feiqiu
APP_DB_DSN=postgresql://user:password@host:5432/test_zqyy_app
# 测试库 DSN运维脚本、集成测试优先使用
TEST_DB_DSN=postgresql://user:password@host:5432/test_etl_feiqiu
TEST_APP_DB_DSN=postgresql://user:password@host:5432/test_zqyy_app
# ------------------------------------------------------------------------------
# 通用
# ------------------------------------------------------------------------------
TIMEZONE=Asia/Shanghai
LOG_LEVEL=INFO
# ------------------------------------------------------------------------------
# 营业日切点(统计日/周/月分割小时,默认 8 即 08:00
# 日统计 = 当日 08:00 ~ 次日 08:00
# 月统计 = 当月1日 08:00 ~ 次月1日 08:00
# 周统计 = 周一 08:00 ~ 次周一 08:00
# ------------------------------------------------------------------------------
BUSINESS_DAY_START_HOUR=8
# ==============================================================================
# 统一输出路径配置export/ 目录)
# ==============================================================================
# 目录总览:
# export/
# ├── ETL-Connectors/feiqiu/
# │ ├── JSON/ — API 原始 JSON 导出
# │ ├── LOGS/ — ETL 运行日志
# │ └── REPORTS/ — ETL 质检/完整性报告
# ├── SYSTEM/
# │ ├── LOGS/ — 系统级运维日志
# │ ├── REPORTS/
# │ │ ├── dataflow_analysis/ — 数据流结构分析报告
# │ │ ├── field_audit/ — 字段排查报告
# │ │ └── full_dataflow_doc/ — 全链路数据流文档
# │ └── CACHE/
# │ └── api_samples/ — API 样本缓存
# └── BACKEND/
# └── LOGS/ — 后端结构化日志
# ------------------------------------------------------------------------------
# ETL Connector 输出路径
# ------------------------------------------------------------------------------
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
ETL_REPORT_ROOT=C:/NeoZQYY/export/ETL-Connectors/feiqiu/REPORTS
# ------------------------------------------------------------------------------
# 系统级输出路径
# ------------------------------------------------------------------------------
SYSTEM_ANALYZE_ROOT=C:/NeoZQYY/export/SYSTEM/REPORTS/dataflow_analysis
FIELD_AUDIT_ROOT=C:/NeoZQYY/export/SYSTEM/REPORTS/field_audit
FULL_DATAFLOW_DOC_ROOT=C:/NeoZQYY/export/SYSTEM/REPORTS/full_dataflow_doc
API_SAMPLE_CACHE_ROOT=C:/NeoZQYY/export/SYSTEM/CACHE/api_samples
SYSTEM_LOG_ROOT=C:/NeoZQYY/export/SYSTEM/LOGS
# ------------------------------------------------------------------------------
# 后端输出路径
# ------------------------------------------------------------------------------
BACKEND_LOG_ROOT=C:/NeoZQYY/export/BACKEND/LOGS
# 用户头像存储目录chooseAvatar 上传后保存到此目录,文件名 {user_id}.jpg
AVATAR_EXPORT_PATH=C:/NeoZQYY/export/BACKEND/avatars
# ------------------------------------------------------------------------------
# DashScope AI 配置(百炼 Application API
# ------------------------------------------------------------------------------
DASHSCOPE_API_KEY=
DASHSCOPE_WORKSPACE_ID=
# 8 个百炼 AI 应用 ID从百炼平台获取通过 app_id 指定应用)
# 应用 1通用对话 | 应用 2财务洞察 | 应用 3客户数据维客线索分析
# 应用 4关系分析/任务建议 | 应用 5话术参考 | 应用 6备注分析
# 应用 7客户分析 | 应用 8维客线索整理
DASHSCOPE_APP_ID_1_CHAT=
DASHSCOPE_APP_ID_2_FINANCE=
DASHSCOPE_APP_ID_3_CLUE=
DASHSCOPE_APP_ID_4_ANALYSIS=
DASHSCOPE_APP_ID_5_TACTICS=
DASHSCOPE_APP_ID_6_NOTE=
DASHSCOPE_APP_ID_7_CUSTOMER=
DASHSCOPE_APP_ID_8_CONSOLIDATE=
# 应用 9Session 日志摘要生成Kiro agent_on_stop + batch_generate_summaries 使用)
DASHSCOPE_APP_ID_SUMMARY=
# 内部 API 认证 tokenETL 等内部服务调用 /api/internal/* 端点时使用)
INTERNAL_API_TOKEN=
# 后端 API 地址ETL 触发 AI 事件时使用,如 http://localhost:8000
BACKEND_API_URL=
# ------------------------------------------------------------------------------
# 管道限流配置RateLimiter 请求间隔,秒)
# 默认 0.1-2.0s,防止上游风控同时避免过度等待
# ------------------------------------------------------------------------------
PIPELINE_RATE_MIN=0.1
PIPELINE_RATE_MAX=2.0
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ [ETL] apps/etl/connectors/feiqiu/.env — ETL 专属配置 ║
# ╚════════════════════════════════════════════════════════════════════════════╝
# 以下参数应放在 apps/etl/connectors/feiqiu/.env 中,而非根 .env
# ------------------------------------------------------------------------------
# 门店配置
# ------------------------------------------------------------------------------
STORE_ID=
# ------------------------------------------------------------------------------
# 数据库配置ETL 专属,覆盖根 .env 的公共参数)
# ------------------------------------------------------------------------------
# 完整 DSN优先使用设置后忽略分离式配置
# PG_DSN=postgresql://user:password@host:5432/test_etl_feiqiu
PG_CONNECT_TIMEOUT=10
# 分离式配置(不使用 DSN 时启用)
# PG_HOST=localhost
# PG_PORT=5432
# PG_USER=your_user
# PG_PASSWORD=your_password
# PG_NAME=your_database
# 数据库 Schema
SCHEMA_OLTP=ods
SCHEMA_ETL=meta
# ------------------------------------------------------------------------------
# 数据库会话参数defaults.py → db.session.*
# ------------------------------------------------------------------------------
# DB_SESSION_TIMEZONE=Asia/Shanghai
# DB_STATEMENT_TIMEOUT_MS=30000
# DB_LOCK_TIMEOUT_MS=5000
# DB_IDLE_IN_TX_TIMEOUT_MS=600000
# ------------------------------------------------------------------------------
# API 配置(上游 SaaS API
# ------------------------------------------------------------------------------
API_BASE=
API_TOKEN=
API_TIMEOUT=20
API_PAGE_SIZE=200
API_RETRY_MAX=3
# API_RETRY_BACKOFF=[1, 2, 4]
# API_PARAMS={}
# API_HEADERS_EXTRA={}
# ------------------------------------------------------------------------------
# 管线流程配置
# ------------------------------------------------------------------------------
PIPELINE_FLOW=FULL
# DATA_SOURCE=hybrid
# ------------------------------------------------------------------------------
# 时间窗口配置
# ------------------------------------------------------------------------------
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_HISTORY_END=
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
# INTEGRITY_ODS_TASK_CODES=
# INTEGRITY_FORCE_MONTHLY_SPLIT=true
# ------------------------------------------------------------------------------
# 校验配置
# ------------------------------------------------------------------------------
VERIFY_SKIP_ODS_ON_FETCH=true
VERIFY_ODS_LOCAL_JSON=true
# ------------------------------------------------------------------------------
# IO 配置
# ------------------------------------------------------------------------------
WRITE_PRETTY_JSON=true
# INGEST_SOURCE_DIR=
# MANIFEST_NAME=manifest.json
# INGEST_REPORT_NAME=ingest_report.json
# MAX_FILE_BYTES=52428800
# ------------------------------------------------------------------------------
# 清洗配置defaults.py → clean.*
# ------------------------------------------------------------------------------
# CLEAN_LOG_UNKNOWN_FIELDS=true
# CLEAN_UNKNOWN_FIELDS_LIMIT=50
# CLEAN_HASH_ALGO=sha1
# CLEAN_HASH_SALT=
# CLEAN_STRICT_NUMERIC=true
# CLEAN_ROUND_MONEY_SCALE=2
# ------------------------------------------------------------------------------
# 安全配置defaults.py → security.*
# ------------------------------------------------------------------------------
# SECURITY_REDACT_IN_LOGS=true
# SECURITY_REDACT_KEYS=["token","password","Authorization"]
# SECURITY_ECHO_TOKEN_IN_LOGS=false
# ------------------------------------------------------------------------------
# DWD 层配置
# ------------------------------------------------------------------------------
DWD_FACT_UPSERT=true
# DWD_FACT_UPSERT_BATCH_SIZE=1000
# DWD_FACT_UPSERT_MIN_BATCH_SIZE=100
# DWD_FACT_UPSERT_MAX_RETRIES=2
# DWD_FACT_UPSERT_RETRY_BACKOFF=[1,2,4]
# 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
# RUN_DWS_TASKS=
# RUN_INDEX_TASKS=
INDEX_LOOKBACK_DAYS=90
# ------------------------------------------------------------------------------
# DWS 月度/薪资配置
# ------------------------------------------------------------------------------
# DWS_MONTHLY_NEW_HIRE_CAP_EFFECTIVE_FROM=2026-03-01
# DWS_MONTHLY_NEW_HIRE_CAP_DAY=25
# DWS_MONTHLY_NEW_HIRE_MAX_TIER_LEVEL=2
# DWS_SALARY_RUN_DAYS=5
# DWS_SALARY_ALLOW_OUT_OF_CYCLE=false
# DWS_SALARY_ROOM_COURSE_PRICE=138
# DWS_MONTHLY_ALLOW_HISTORY=false
# DWS_MONTHLY_PREV_GRACE_DAYS=5
# DWS_MONTHLY_HISTORY_MONTHS=0
# ------------------------------------------------------------------------------
# ODS 离线回放配置(仅开发/运维使用)
# ------------------------------------------------------------------------------
# ODS_JSON_DOC_DIR=export/test-json-doc
# ODS_INCLUDE_FILES=
# ODS_DROP_SCHEMA_FIRST=true
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ [BACKEND] apps/backend/.env.local — 后端私有覆盖 ║
# ╚════════════════════════════════════════════════════════════════════════════╝
# 以下参数应放在 apps/backend/.env.local 中,而非根 .env
# ------------------------------------------------------------------------------
# ETL 数据库(后端只读访问,用于数据库查看器;省略时复用 DB_HOST/PORT/USER/PASSWORD
# ------------------------------------------------------------------------------
# ETL_DB_HOST=
# ETL_DB_PORT=
# ETL_DB_USER=
# ETL_DB_PASSWORD=
# ------------------------------------------------------------------------------
# JWT 认证
# ------------------------------------------------------------------------------
# JWT_SECRET_KEY=change-me-in-production
# JWT_ALGORITHM=HS256
# JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30
# JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
# ------------------------------------------------------------------------------
# 微信小程序配置
# 代码读取 WX_APPID / WX_SECRET注意无下划线分隔
# WX_DEV_MODE=true 时启用 mock 登录端点,跳过微信 code2Session
# ------------------------------------------------------------------------------
# WX_APPID=
# WX_SECRET=
# WX_DEV_MODE=false
# ------------------------------------------------------------------------------
# CORS逗号分隔
# ------------------------------------------------------------------------------
# CORS_ORIGINS=http://localhost:5173
# ------------------------------------------------------------------------------
# ETL 项目路径(子进程 cwd
# CHANGE 2026-03-06 | 必须显式设置,禁止依赖 __file__ 推算
# ------------------------------------------------------------------------------
ETL_PROJECT_PATH=C:/NeoZQYY/apps/etl/connectors/feiqiu
# ------------------------------------------------------------------------------
# ETL 子进程 Python 可执行路径
# CHANGE 2026-03-06 | 必须显式设置,避免 PATH 歧义
# ------------------------------------------------------------------------------
ETL_PYTHON_EXECUTABLE=C:/NeoZQYY/.venv/Scripts/python.exe
# ------------------------------------------------------------------------------
# 运维面板服务器根目录
# CHANGE 2026-03-06 | 必须显式设置,消除 __file__ 推算风险
# ------------------------------------------------------------------------------
OPS_SERVER_BASE=C:/NeoZQYY
# === Dev Trace Log ===
# 全链路请求追踪日志(仅开发/测试环境使用,生产环境关闭)
DEV_TRACE_ENABLED=true
DEV_TRACE_LOG_DIR=export/dev-trace-logs
DEV_TRACE_LOG_RETENTION_DAYS=7
DEV_TRACE_LOG_SQL=true
DEV_TRACE_LOG_PARAMS=true