feat: E1002 六色版改为 k=1 原字号重排版+启用黄绿蓝语义色并恢复 30 天趋势图

- 放弃 k=2 整数倍放大(字太大),字号与 400×300 三色版一致,靠四倍面积重排:顶部时钟/天气不变,中段 Claude Usage 与橘喵今日实时左右并排,下段全宽恢复三色版隐藏的 30 天趋势图
- 六色各有唯一语义:红=预警/涨/定位/太阳闪电/流水线,黄=用量「注意」档填充(USAGE_CAUTION,默认 60,仅六色版),绿=毛利线,蓝=单量线与雨滴雪花
- renderer 基类新增 _usage_colors 配色钩子与 _weather_icon 的 wet 参数、_section 支持自定义横向范围,三色版行为不变
- data 为趋势追加 totals 合计(现算不进缓存),usage 增加 caution 阈值
- 底部六色测试色条改由 E1002_COLOR_STRIP 控制,默认关闭;同步更新 CLAUDE.md

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-10 14:11:35 +08:00
parent eab90bf3b5
commit d7ae193f56
5 changed files with 184 additions and 86 deletions

20
data.py
View File

@@ -163,11 +163,25 @@ def _mao(now):
except Exception as e:
print(f"[警告] 今日经营拉取失败:{e}")
cols = [_placeholder_col(k) for k in ("单量", "流水", "毛利")]
# 近30天趋势按日期缓存每天只拉一次
trend = _trend(now)
# 近30天趋势按日期缓存每天只拉一次;合计每次现算,不进缓存(缓存结构保持不变)
trend = dict(_trend(now))
trend["totals"] = _trend_totals(trend)
return {"upd": upd, "cols": cols, "trend": trend}
def _trend_totals(trend):
"""近30天三指标合计 → [(名,文本)]供宽版E1002趋势图标题行展示无数据返回空列表。
单量按千分位计数,流水/毛利按金额紧凑格式≥1万 显示 X.XX万"""
out = []
for s in trend.get("series") or []:
data = s.get("data") or []
if not data:
continue
total = sum(data)
out.append((s["k"], _fmt_count(total) if s["k"] == "单量" else _fmt_money(total)))
return out
# ---------- Claude Code 用量 ----------
def _parse_reset_ts(s):
"""resets_at → epoch 秒。兼容三种epoch 数字Claude Code stdin 给的就是 epoch
@@ -220,7 +234,7 @@ def _usage(now):
if pct is not None and tp is not None:
bar["time_pct"] = tp
bars.append(bar)
return {"title": "Claude Usage", "warn": config.USAGE_WARN, "bars": bars}
return {"title": "Claude Usage", "warn": config.USAGE_WARN, "caution": config.USAGE_CAUTION, "bars": bars}
def get_dashboard_data(now=None):