_names.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """
  2. 术语与字段名常量 —— 避免字符串魔法值,保证命名单一真源。
  3. ## 背景
  4. 历史上本项目对同一概念有多种叫法(代码变量 / CSV 列名 / 文档术语各不相同),
  5. 已在 2026-04-21 重构中统一为:
  6. | 概念 | CSV 列名(保留中文,不改) | Python 变量(全英文) | 文档术语 |
  7. |------|--------------------------|---------------------|---------|
  8. | 广告 7 日均值动态 ROI | `动态ROI_7日均值` | `dynamic_roi_7d` | "动态 ROI (7日均值)" |
  9. | 广告单日动态 ROI | `动态ROI` | `dynamic_roi_daily` | "动态 ROI (单日)" |
  10. | 渠道 P50 基准 | (计算值,无列)| `channel_roi_p50` | "渠道P50" |
  11. | 同类裂变均值 | `tier_fission_mean` | `tier_fission_mean` | "同类均值" |
  12. ## 使用方式
  13. ```python
  14. from tools._names import COL_DYNAMIC_ROI_7D
  15. row.get(COL_DYNAMIC_ROI_7D) # 代替硬编码字符串 "动态ROI_7日均值"
  16. ```
  17. ## 设计约束
  18. - **CSV 列名不动**:保留中文列名,零破坏历史 metrics_*.csv 数据
  19. - **Python 变量规范**:全英文短名(小写下划线),与中文术语在 reason 展示层解耦
  20. - **禁用变量名进入 LLM reason**:所有 Python 变量名都属"内部实现",reason 必须用中文术语
  21. """
  22. # ═══════════════════════════════════════════
  23. # CSV 列名常量(保留中文,零破坏历史数据)
  24. # ═══════════════════════════════════════════
  25. # 广告级动态 ROI
  26. COL_DYNAMIC_ROI_DAILY = "动态ROI" # 单日值
  27. COL_DYNAMIC_ROI_7D = "动态ROI_7日均值" # 7 日滚动均值(决策参考)
  28. # 裂变相关
  29. COL_T0_FISSION_COEFF = "T0裂变系数" # 单日值
  30. COL_T0_FISSION_COEFF_7D = "T0裂变系数_7日均值" # 7 日滚动均值
  31. # 护栏 B 系列用的临时列(在 validate_decisions 里注入)
  32. COL_CHANNEL_ROI_P50 = "_channel_roi_p50" # 带下划线前缀表示"内部临时列"
  33. # ═══════════════════════════════════════════
  34. # 文档术语(reason 展示层)
  35. # ═══════════════════════════════════════════
  36. TERM_DYNAMIC_ROI_7D = "动态 ROI (7日均值)"
  37. TERM_CHANNEL_P50 = "渠道P50"
  38. TERM_TIER_FISSION_MEAN = "同类均值"
  39. TERM_PAUSE_LINE = "关停线"
  40. TERM_BID_DOWN_LINE = "降价线"
  41. TERM_BID_UP_LINE = "提价线"
  42. # ═══════════════════════════════════════════
  43. # 禁用变量名黑名单(LLM reason 里若出现则违规)
  44. # ═══════════════════════════════════════════
  45. FORBIDDEN_IN_REASON = [
  46. # 旧版 Python 变量名
  47. "f_roi",
  48. "roi_mean",
  49. "roi_p50",
  50. "channel_p50",
  51. "tier_roi_p50",
  52. # 新版 Python 变量名(Phase 2 引入后也禁止出现在 reason)
  53. "dynamic_roi_7d",
  54. "channel_roi_p50",
  55. # 阈值线英文名
  56. "pause_line",
  57. "bid_down_line",
  58. "bid_up_line",
  59. # 信号字段
  60. "bid_increased_7d",
  61. "creative_changed_7d",
  62. "roi_valid_days",
  63. "tier_fission_mean",
  64. ]