先读我 · 全新服务器部署顺序
================================================================

这份目录 = 雷达完整源码（已打上「分通道」改造）+ 部署脚本。
在一台**全新服务器**上，按下面顺序来。


一、全新机器（第一次装）—— 两步
----------------------------------------------------------------
    # ① 原版一键部署：装面板/网关/节点、建 venv、写 .env、起三个服务
    bash deploy.sh
       （这一步会问你：后台管理员密码 / 是否用远程图床 / 节点 ID / 公网 IP。
        建议：图床选 yes，地址填 http://157.250.207.207:2580 —— 省掉 656MB 地图包下载；
              节点 ID 随便（如 test1），公网 IP 直接回车)

    # ② 切分通道：切 split、建 radar-decode、加资源上限、自检
    bash lanes-deploy.sh

一键版（等于上面两步，并且会检查第一步有没有成功）：

    bash deploy-fresh-oneshot.sh

或者只用一个文件（源码已经解包在本目录时）：

    bash lanes-deploy.sh --src=/root/radar-src-lanes
       （它会把本目录里的原版 deploy.sh 先跑掉，再继续切分通道）


补充：如果只把 lanes-deploy.sh 单独传到服务器跑，而机器上还没装雷达，
它会报「找不到雷达安装目录 —— 这台机器还没装过雷达」，并把我找过的每个路径
和该照抄的命令都列出来。这不是出错，是在告诉你「先跑第 ① 步」。


二、之后常用命令（都在 lanes-deploy.sh 这一个文件里）
----------------------------------------------------------------
    bash lanes-deploy.sh verify --watch=120   # 验收自检（有玩家在线时跑最准）
    bash lanes-deploy.sh capacity             # 算这台机器能带多少人、卡在哪条线
    bash lanes-deploy.sh selftest             # 只跑通道自检（不碰服务器）
    bash lanes-deploy.sh patches              # 4 个可选补丁（默认干跑）
    bash lanes-deploy.sh patches apply        # 真写入补丁
    bash lanes-deploy.sh mono                 # 三秒切回单进程（最快止血）
    bash lanes-deploy.sh split                # 再切回分通道
    bash lanes-deploy.sh rollback             # 彻底回滚到最近一次备份
    bash lanes-deploy.sh backups              # 列出所有备份
    bash lanes-deploy.sh help                 # 看全部用法


三、目录里都是什么
----------------------------------------------------------------
    node/  panel/          ← 雷达完整源码（node/main.py 已是改造版，
                              另有 4 个新增文件：lane_config.py / lane_wire.py /
                              obs_shim.py / decode_node.py）
    deploy.sh              ← ★ 原版一键部署脚本（47KB，装全套底座）。**别改名、别覆盖**
    lanes-deploy.sh        ← ★ 我的单文件部署脚本（154KB，9 个源文件内嵌在里面）
    lanes/                 ← 同一个东西的多文件版（文档、逐行 diff、自检工具、补丁包）
                              里面的 install.sh / verify.sh / capacity.sh / rollback.sh
                              都只是 lanes-deploy.sh 的「壳」，等价命令
    全新机器-一键.sh        ← 把上面两步按顺序跑掉
    先读我.txt             ← 本文件


四、出问题
----------------------------------------------------------------
  三秒止血（业务不受影响）：  bash lanes-deploy.sh mono
  彻底回滚（还原文件）：      bash lanes-deploy.sh rollback
  看日志：                    journalctl -u radar-node -f      （线路A 转发）
                              journalctl -u radar-decode -f    （线路B 解密+解析）
  看通道：                    curl -s http://127.0.0.1:19191/status | grep -A10 '"lane"'

  重点看三个数：
    lane.forward.connected = true    —— 线路A 连上线路B 了没
    lane.forward.dropped   = 0       —— 线路A 在不在丢包（涨了说明线路B 是瓶颈）
    link.bad               = 0       —— 线路B 有没有收到坏帧（不是 0 = 两端版本不一致）


五、这套改造的底线（你可以放心测）
----------------------------------------------------------------
  · 协议（XXTEA / TGCP / bank 判定）与解析栈（liveview / flowlive / er_radar）**一个字没改**
  · 转发语义没放松：先转发、后旁路入队；队列满丢最旧（宁可雷达少几帧，也不卡转发）
  · 只动了「谁在哪个进程里跑」，外加 main.py 的 6 处「加一段/包一层」
  · LANE_MODE=mono 就是改造前的行为 —— 一个开关退回老路，代码都不用还原
  · main.py 的完整改动 diff：  lanes/docs/main.py.diff
