mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 14:50:45 +00:00
阶段3 管理页 - 清掉全部深色主题残留(地址框 #0b1220、按钮悬停 #262c36、 删除按钮 #2d1214 等 11 处),现在 0 处深色 - 接口全部正常:health / downloads / netcheck 阶段4 局域网诊断 - 查清楚"电脑不在同一网络"是怎么回事:被控端是**对的** (lan_ips() 报 ['192.168.2.64', '169.254.83.107'],真实地址排第一), 是手表当时真不在 192.168.2.x —— 可能连了 5G 频段的另一个路由器,或开着移动数据 - 所以改了手表的提示:不再只说"不在同一网络", 而是把**双方地址都打出来**,用户一眼能看出是网段不同还是连错 WiFi - 端到端验证局域网路径:认证 1 ms,功能列表 207 项 阶段1 结论修正(一天内推翻自己两次,如实记录) - 第一次判断"优选 IP 无用":错。半小时内确实能避开超时 IP - 第二次固定优选 IP:也错。那些实测 138ms 的 IP 半小时后全不通了 —— Cloudflare anycast 可达性随运营商路由变化,固定 IP 等于钉死到会失效的地址 - 最终:不固定,靠 GeoDNS + cloudflared 重试 + ha-connections 2 冗余 - 撤销后立即变好:连接稳定 2 条、超时告警 0 次、设备侧延迟 4.40s -> 1.66s - **真正的瓶颈**:分段实测发现本机到 Cloudflare 的**裸 RTT 就 1439 ms**, 比经隧道的请求(1215 ms)还慢。说明瓶颈是这条网络的 4G 上行本身, 不是设备的隧道。公网侧已无优化空间。 - 局域网 118 ms vs 公网 1215 ms,快 10 倍 —— 这才是该走的路 阶段5 验收 - 全量回归 29 项全通过 - 设备侧验收 38 项全通过 - 成品:setup exe 14.37 MB / server zip / watch apk,已同步到设备下载区
80 lines
2.5 KiB
Python
80 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
r'''清掉管理页深色残留(修正版:CSS 在 f-string 里,大括号是双写的)。
|
|
|
|
上一版只改成功了 4 处,因为我的匹配串用了单大括号 {{ }},
|
|
而 relay.py 里那段 CSS 在 f-string 里,实际是 {{{{ }}}}。
|
|
'''
|
|
from __future__ import annotations
|
|
|
|
import ast
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
RELAY = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\relay" r"\relay.py")
|
|
|
|
# 用「深色值 -> 浅色值」直接替换,不管外层大括号怎么写的。
|
|
# 这样最稳,不会再被 f-string 的花括号坑到。
|
|
COLOR_MAP = [
|
|
("#262c36", "#f3f4f6"), # 按钮悬停底色
|
|
("#484f58", "#d0d7de"), # 边框/圆点
|
|
("#1b222c", "#f6f8fa"), # 表格行悬停
|
|
("#1c2733", "#eff6ff"), # 选中行
|
|
("#213042", "#dbeafe"), # 选中行悬停
|
|
("#2d1214", "#fff5f5"), # 删除按钮底
|
|
("#6e2b2b", "#ffc9c9"), # 删除按钮边
|
|
("#ff7b72", "#c92a2a"), # 删除按钮字
|
|
("#4a1a1e", "#ffe3e3"), # 删除悬停底
|
|
("#ffa198", "#a61b1b"), # 删除悬停字
|
|
("#4a95f8", "#1d4ed8"), # 主按钮悬停
|
|
("#0b1220", "#f6f8fa"), # 地址框底
|
|
("#1f6feb44", "#d0d7de"), # 地址框边
|
|
("#0008", "#0002"), # 提示条阴影
|
|
]
|
|
|
|
# 深色主题才用的值,替换后不该再有
|
|
DARK_LEFTOVERS = ["#0b1220", "#262c36", "#1b222c", "#1c2733", "#213042",
|
|
"#2d1214", "#4a1a1e", "#484f58", "#0d1117"]
|
|
|
|
|
|
def main() -> int:
|
|
text = RELAY.read_text(encoding="utf-8")
|
|
counts = {}
|
|
|
|
for dark, light in COLOR_MAP:
|
|
n = text.count(dark)
|
|
if n:
|
|
text = text.replace(dark, light)
|
|
counts[dark] = (light, n)
|
|
|
|
if counts:
|
|
RELAY.write_text(text, encoding="utf-8", newline="\n")
|
|
print(" 换了这些颜色:")
|
|
for dark, (light, n) in counts.items():
|
|
print(" %s -> %s (%d 处)" % (dark, light, n))
|
|
else:
|
|
print(" 没有要改的")
|
|
|
|
try:
|
|
ast.parse(text)
|
|
print(" 语法 OK")
|
|
except SyntaxError as exc:
|
|
print(" [失败] 语法错误: 行 %s: %s" % (exc.lineno, exc.msg))
|
|
return 1
|
|
|
|
print()
|
|
print(" 残留深色值:")
|
|
left = [c for c in DARK_LEFTOVERS if c in text]
|
|
if left:
|
|
for c in left:
|
|
print(" %s:" % c)
|
|
for m in re.finditer(r".*" + re.escape(c) + r".*", text):
|
|
print(" %s" % m.group(0).strip()[:76])
|
|
else:
|
|
print(" 无 ✓")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|