Explorar o código

docs(kb): alerter + datax-speed 扩展名统一为 .ini;alerter 改为入库

tianyu.chu hai 2 semanas
pai
achega
727e4f2939
Modificáronse 3 ficheiros con 11 adicións e 11 borrados
  1. 1 1
      kb/00-项目架构.md
  2. 5 5
      kb/90-重构路线.md
  3. 5 5
      kb/92-重构进度.md

+ 1 - 1
kb/00-项目架构.md

@@ -536,7 +536,7 @@ jobs/
 | Spark 默认参数 | `conf/spark-defaults.yaml`(目标态) / `spark_sql.py` 构造函数(现状) | 是 | 开发   |
 | Spark 单作业覆盖 | 对应 `jobs/*.sql` 文件内 `SET spark.x.y=z` | 是 | 开发   |
 | 环境变量 / 路径 | `dw_base/__init__.py`、`bin/common/init.sh` | 是(待改为conf) | 开发   |
-| 告警 Webhook | `dw_base/common/alerter_constants.py` | 是(待改为conf) | 开发   |
+| 告警 Webhook | `dw_base/common/alerter_constants.py` | 否(待改 `conf/alerter.ini`,入库) | 开发   |
 
 ### 6.2 Spark 参数优先级(三级覆盖)
 

+ 5 - 5
kb/90-重构路线.md

@@ -65,7 +65,7 @@ conf/
 ├── env.sh                    # Shell 环境变量(路径、用户、日志目录等)
 ├── env.py                    # Python 环境变量(或直接读 env.sh)
 ├── workers.conf              # DataX Worker 列表与权重
-├── alerter.conf              # 告警 Webhook 配置(敏感项,可 .gitignore
+├── alerter.ini               # 告警 Webhook 配置(入库;见 §2.1
 ├── spark-defaults.yaml       # Spark 默认参数
 └── ds/
     ├── base_config.yaml      # DolphinScheduler 配置
@@ -396,12 +396,12 @@ else:
 - 生产偶发突发(白天要抢刷一次全量)没有临时放大速率的口子
 - 硬编码的动机在代码里一字没留(为什么 0750-1900?避开业务高峰?避开实时链路?后人读代码猜不到)
 
-**目标**:把速率配置抽到 `conf/datax-speed.conf`,`JobConfigGenerator` 运行时读;默认值 = 现硬编码值,保持向后兼容。
+**目标**:把速率配置抽到 `conf/datax-speed.ini`,`JobConfigGenerator` 运行时读;默认值 = 现硬编码值,保持向后兼容。
 
 **conf 格式**(ini,按时间段分段,自上而下匹配,未命中走 `[default]`):
 
 ```ini
-; conf/datax-speed.conf
+; conf/datax-speed.ini
 ; 速率档位定义:从上到下依次匹配,第一条命中的为准;无匹配走 [default]
 
 [daytime]
@@ -417,10 +417,10 @@ record_per_channel = 100000
 ```
 
 **代码改造**:
-- 在 `JobConfigGenerator.__init__()` 读 `conf/datax-speed.conf`
+- 在 `JobConfigGenerator.__init__()` 读 `conf/datax-speed.ini`
 - 用当前时间在各段 `hours` 里找匹配,取 `channel / byte_per_channel / record_per_channel`
 - `assemble()` 里的分支逻辑改为 `speed = self.resolve_speed_profile()` 一行
-- 落 `conf/datax-speed.conf` 时在文件头注释里把**"白天是为了避开业务高峰"**的动机写清楚(消除默认值的来历盲区)
+- 落 `conf/datax-speed.ini` 时在文件头注释里把**"白天是为了避开业务高峰"**的动机写清楚(消除默认值的来历盲区)
 
 **扩展方向**(P2,先不做):
 - 支持按 ini 名(业务表)在 conf 里覆盖特定任务的速率

+ 5 - 5
kb/92-重构进度.md

@@ -59,11 +59,11 @@
 
 **目标**:消除对老环境(`alvis` 用户、`/home/alvis/release` 路径、硬编码的 worker 列表)的代码耦合。
 
-- [ ] 新建项目根 `.gitignore`(清单与注意事项见 `90-重构路线.md` §2.4)**— 必须先于 `conf/alerter.conf` 落地,避免敏感文件误入第一次提交**
+- [ ] 新建项目根 `.gitignore`(清单与注意事项见 `90-重构路线.md` §2.4)
 - [ ] 建立 `conf/env.sh`(Shell 环境变量)
 - [ ] 建立 `conf/env.py` 或 Python 读 `env.sh` 的桥接
 - [ ] 建立 `conf/workers.conf`(DataX Worker 列表 + 权重 map,整体迁出 `bin/common/init.sh:18-31`)
-- [ ] 建立 `conf/alerter.conf`(钉钉/企微 Webhook,gitignore
+- [ ] 建立 `conf/alerter.ini`(企微 Webhook,**入库**;格式见 `90-重构路线.md` §2.1
 - [ ] `dw_base/__init__.py` 瘦身(拆分初始化逻辑,见 `90-重构路线.md` §3)**— 必须先做,下面 spark-defaults 依赖瘦身后的 `PROJECT_ROOT_PATH`**
 - [ ] 建立 `conf/spark-defaults.yaml`(Spark 全局默认参数,见 `90-重构路线.md` §2.3)
 - [ ] 改造 `dw_base/spark/spark_sql.py`:构造函数 fall back 到 yaml;实现 L1(yaml) < L2(SQL 内 SET,仅 `spark.sql.*` 系生效) < L3(命令行 -sc / 构造函数传参) 三级覆盖
@@ -75,8 +75,7 @@
 - [ ] 删除 `whoami == RELEASE_USER` 分流,`LOG_ROOT_DIR` 单值 `${HOME}/log` 放入 `conf/env.sh`(见 `90-重构路线.md` §7.2.1)
 - [ ] 日志路径统一模板 `${LOG_ROOT_DIR}/{module}/{dt}/{file}.log`(3 层)
 - [ ] 实现 `log_path(module, dt, file)` 工具函数(Python / Shell 各一份,单一来源)
-- [ ] 钉钉 access_token 从代码移入 `conf/alerter.conf`
-- [ ] 企微 Webhook Key 从代码移入 `conf/alerter.conf`
+- [ ] 企微 Webhook Key 从 `alerter_constants.py` 移入 `conf/alerter.ini`(钉钉已于 2026-04-20 全部删除,不再迁移)
 - [ ] **DataX 入口收口为两条命令**(暂称 `datax-import` / `datax-export`,**命名待确认**;见 `90-重构路线.md` §2.6)
 - [ ] 导入命令实现分区管理(`-skip-exist` / `-force-overwrite` / `-skip-partitions`)
 - [ ] 导出命令实现源 HDFS 路径探测(`-src-check` / `-skip-missing`)
@@ -88,7 +87,7 @@
 - [x] 清理 `dw_base/__init__.py:16` 死代码 `os.environ['HADOOP_CONF_DIR']`(2026-04-18,实测对 DataX JVM 无影响)
 - [ ] HDFS 数据源 ini 新建:按新 schema 运维补齐 `datasource/hdfs/{env}/*.ini`(prod 带 `[hadoop_config]`;dev/test 只写 `[base] defaultFS`)
 - [ ] HA 回归测试:真实 HA 集群 + 单 NN 集群 + 主备切换三场景
-- [ ] **DataX 速率配置外移**:`conf/datax-speed.conf` 定义分时速率档;`dw_base/datax/job_config_generator.py:60-67` 硬编码替换为读 conf(见 `90-重构路线.md` §2.9)
+- [ ] **DataX 速率配置外移**:`conf/datax-speed.ini` 定义分时速率档;`dw_base/datax/job_config_generator.py:60-67` 硬编码替换为读 conf(见 `90-重构路线.md` §2.9)
 - [ ] 新建 `manual/imports/` + `manual/exports/` 目录(按日期 `{yyyymmdd}/` 组织一次性任务)
 
 ## 阶段 3:业务 SQL 从零开发
@@ -164,3 +163,4 @@
 | 2026-04-20 | **UDF 模块重组(重构计划外)**:独立 `dw_base/spark/udf/` 目录结构为 `common/`(通用 UDF,SparkSQL 入口自动 `ADD FILE` 注册)+ `business/`(业务专用 UDF,SQL 中按需 `ADD FILE` 加载)两类。(a) 6 份源文件(根 `spark_common_udf.py` 24 函数 + `spark_json_array_udf.py` 23 函数 + `spark_mmq_udf.py` 3 函数 + `customs/cts_common.py` + `product/escape_udf.py` + `enterprise/spark_eng_ent_json_array_append_udf.py`)通读 + 去重 + 业务耦合剥离后,合并为单文件 `common/spark_common_udf.py`(500 行 40 函数,分 JSON / Array / String / Numeric-Date-Hash / Cross-type-converters 5 段)。单文件方案而非按类型拆分,理由:跨类型转换函数(`json2str` / `arr2json` / `str2map` 等约 9 个,占 20%+)没有明确归属,强行分只会制造边界争议。(b) 清理 `dw_base/spark/udf/` 下所有老业务 UDF 子目录与根级业务文件共 60 个:整目录删 `contacts/` / `customs/` / `enterprise/` / `product/` / `productApplication/` / `test/`;根目录删 `spark_eng_ent_name_clean.py` / `spark_india_format_phone_udf.py` / `solr_similar_match_udf.py` / `main_test.py` 以及 3 份源 UDF 文件。(c) `dw_base/__init__.py:27` `COMMON_SPARK_UDF_FILE` 常量路径由 `dw_base/spark/udf/spark_common_udf.py` 改为 `dw_base/spark/udf/common/spark_common_udf.py`(`bin/spark-sql-starter.py:172-173` 两处 usage 靠常量传递自动生效)。(d) 删除老 `dingtalk_*` / `mg2es` 级联清理中没赶上的 UDF 业务耦合文件在此批统一清零。`business/` 目录暂为骨架,后续真正出现新业务 UDF 时按需补 | — |
 | 2026-04-20 | **删除空壳模块 `ml/` / `elasticsearch/` / `flink/` / `validation/`(反转 2026-04-20 早先"暂留"记录)**:4 个目录下均只有 56 字节空 `__init__.py`,零 import / 零内容,保留无意义;2026-04-20 UDF 模块重组 changelog 末尾"暂留"一句是误记。`git rm -r` 一批清零。同步 `kb/90-重构路线.md §5.1` 从废弃代码表中移除这 4 行并加指向本条 changelog 的尾注。`dw_base/common/` 因 `alerter_constants.py` / `config_constants.py` / `container.py` / `template_constants.py` 非空保留,不在本批 | — |
 | 2026-04-20 | **删除 `dw_base/database/mongodb_utils.py` + kb/90 §5.1 档案化改造**:(a) `mongodb_utils.py` 184 行真实内容仅 `MongoDBHandler` 薄类 19 行(吃 url/port/user/pwd 拼 URI 实例化 MongoClient),其余 165 行全是公司名→Mongo/ES 查询 + TF-IDF 关键词抽取 + 三段老集群 `dds-m5e*` 连接串注释。grep 零外部引用。新项目若需连 Mongo 一行 `MongoClient(uri)` 即可,薄包装无保留价值。(b) §5.1 原表两行实际状态:`mongodb_utils.py` = 本次删除;`conf/datax/` 下老项目遗留 ini/datasource = 项目初始化 `8d2ade5` 时已整体挪入 `conf/bak/datax/{config,datasource}/` 并由 `.gitignore:6 conf/bak` 拦截,早已完成但没画勾。(c) §5.1 改造为"待清理表(当前为空)+ 历史档案表(完成项留档)"双表结构,空壳模块 4 行 + 本次 mongodb_utils + conf/datax 挪 bak 三项入档案。尾注说明:代码里残留的 `conf/datax/config/` replace 死逻辑 + `conf/datax/generated` 默认值属于 §2.x 路径硬编码清理(改名 `conf/datax-json/`),不在本节范围 | — |
+| 2026-04-20 | **alerter + datax-speed 扩展名统一为 `.ini` + alerter 口径统一为"入库"**:(a) `conf/alerter.conf` → `conf/alerter.ini` + 从 gitignore 改为入库;反转 2026-04-15 changelog(line 139)当时记的 `.conf` + gitignore 口径。理由:项目 conf/ 全部 ini + 代码侧 `configparser` 使用 10+ 次 + `PyYAML` 在 requirements 但零 `import yaml`(躺尸依赖)→ ini 是事实标准;webhook key 低敏(最多被拿去发垃圾消息,非账密级)+ 部署靠 git pull,gitignore 会让 bigdata / DolphinScheduler 拉不到配置。结构:`[common] url_prefix` + `[channels] ba/dcp/etl/skb/realtime = <key>`。(b) `conf/datax-speed.conf` → `conf/datax-speed.ini`,同一口径收敛,消除 `.conf/.ini` 混用。同步点:kb/00 §6 sparkconfig 表告警 Webhook 行(gitignore 列 `是` → `否`)、kb/90 §2.1 硬编码表 alerter 行 / §2.4 目录树 / §2.9 整节 4 处、kb/92 阶段 2 checklist 4 处(line 62 去掉"敏感文件"措辞、line 66 改为入库、line 78 钉钉条删除合并入 line 79、line 91 扩展名改)、记忆 `project_templates_and_config` 去掉"kb/92 一致性提醒"段(已消除)。**未改动**:2026-04-15 changelog line 139(历史快照保留)、2026-04-18 changelog line 153(历史快照保留)、`workers.conf` 扩展名 + kb/90 §2.1 里"ini 或 yaml 格式"未定的表述(不在本批范围,用户后续拍板) | — |