Files
xas-test-library/docs/console-operations.md
T

68 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 当前控制台操作与维护
核对日期:2026-10-13。当前源代码入口为本项目 `console/`;部署根为 `/adamwen-work-space/xas-test-library`。历史 Rundeck 文档不再是日常维护入口。
## 日常使用
内网入口 `http://10.88.118.188:14440/`,不设置账号。允许 `10.88.0.0/17` 和 `10.20.0.0/21`。所有访问者共享管理与执行权限,运行记录保存来源 IP,不区分个人身份。
1. 在测试项目中按用途、套件/单项、来源和状态筛选。一项对应一个测试行为,详情的“执行入口”和“相关文件”均只读。
2. 上传 `.py` 或 `.sh` 创建托管脚本;修改时上传新版本,旧版本保留。只接受 UTF-8,单文件最大 1 MiB。素材、模型、第三方包不会随脚本自动取得。
3. 在详情修改名称、说明、已开放的参数和超时,再保存并运行。22 项已登记原入口使用原环境方案,工作目录、解释器、命令模板和输出规则只读。普通测试预检通过后提交;涉及资源占用或服务启停的测试须逐次确认影响。
4. 运行页查看持续刷新的标准输出/错误与文件日志,结束后预览/下载 JSON、文本或其他报告。历史保留本次配置、版本和摘要。
托管脚本工作目录为本次独立 `/work`,通过 `XAS_RUN_DIR` 环境变量取得它;将输出写到此目录即可归档,其中 `.log` 的新增内容会进入实时日志。原环境测试直接使用原文件、目录、依赖和已登记配置,不修改原代码。原输出照常产生,平台仅归档本次观察到的新增/变更内容;多人同时写同一原文件时无法证明内容只来自本次测试。容量和成本链路会覆盖固定文件名,启动前把已存在的相关输出备份到本次 `previous-outputs/`;其他方案优先采用原入口支持的运行编号参数。
现有 307 个 `.py`/`.sh` 文件包括入口和辅助模块,按已核对的用途整理为 23 个测试项目,不再全部平铺。22 个原环境入口和已有复制版轻量检查已配置;两个控制台样例在“项目用途 → 验收示例”查看。相关文件不能单独启用或运行。原环境复用宿主环境,上传脚本继续使用 Python 标准库、Bash、curl 的受限容器,无 GPU;不自动安装依赖或启动缺失模型服务。
“已配置”表示有启动方案,不表示服务已在线或测试已通过。运行前只读预检核对入口摘要、原配置、工具、素材及所需 TCP 端口,不发模型推理、不预留 GPU。2026-10-13 23:27 有 6 项因原模型端口未监听被拦截。整机/服务测试的影响确认只对本次源码、参数和方案有效。长稳测试最高 72 小时;原菜单支持数字选项/列表、y/n/q、空行回车,输入不回显、不保存。不能通过菜单发送 shell 命令、控制键、密码或令牌。
“DeepSeek V4.1 轻量功能检查(已复制)”使用原始 smoke.sh,源码摘要固定,兼容环境不可在网页修改。一次最多 1 个 models GET 和 3 个 completion POST,固定模型、最多 512 token/问答;禁止重定向和重试。新代码不能直接沿用这个认证环境,应新建脚本后接入。
## 数据与配额
| 内容 | 服务器位置 |
|---|---|
| 数据库 | runtime/console-data/console.sqlite3 |
| 上传脚本版本 | runtime/library/<脚本ID>/versions/<版本>/<文件名> |
| 运行日志 | runtime/runs/<运行ID>/console.log |
| 运行结果/源码快照 | runtime/runs/<运行ID>/artifacts/,下载名称由数据库映射 |
| 容器临时文件 | runtime/runs/<运行ID>/work,128 MiB tmpfs,归档后卸载 |
| 原环境运行与输出保护 | runtime/runs/<运行ID>/,原输出仍在原目录,固定名称旧结果另存 previous-outputs/ |
| 原环境私有控制通道 | runtime/native-ipc/control.sock,0600,仅本机网页/worker 使用 |
| 切换前快照 | runtime/backups/before-dedicated-20261013/ |
数据库没有保存完整脚本、完整日志或完整报告正文。容器任务有单文件源码快照;原环境任务保留源文件摘要、实际命令与方案快照,源文件留在原处。外部结果原文件保留,同时归档本次变化内容用于历史查询。历史归档不会因原文件下次覆盖而变化。
共享队列单并发、最多排队 20 项。容器任务限制 1 CPU、512 MiB、64 进程,时限 5–7200 秒;原环境任务不套用这些 CPU/内存限额,时限 5 秒至 72 小时,真实资源占用遵循原项目。平台日志最大 16 MiB;结果单文件最大 32 MiB、总归档约 64 MiB、最多 63 个文件另加摘要。原环境登记输出最多 4096 文件,超过时明确失败,不静默遍历整个磁盘。
超过归档限制的原位置文件保留;容器未归档临时结果随 tmpfs 释放,原环境工作目录保留。容器运行检查磁盘 10 GiB 下限及原输出增长 128 MiB 软限制;原环境不施加该增长限制,以免改变长稳行为。固定旧输出备份上限 64 GiB,且要求备份后仍有 10 GiB 余量。原环境对原目录没有硬配额,操作者需按原测试规模安排磁盘与 GPU。
容器任务取消/超时只管理本项目容器,worker 重启时旧容器任务标为中断、不补跑。原环境任务由独立 systemd 服务承载,worker 重启后继续跟踪同一任务;状态查询异常时保留占位,不误判结束。取消/超时终止本次本机进程,最多留 120 秒收尾,然后确认 cgroup 已结束再释放队列。
原脚本通过 Docker daemon 或 tmux 启动的分离任务可能继续运行,取消不等于恢复原模型,也不保证远端推理已停止。日志和结果保留前后资源变化供核对;控制台不据此自动删除容器或他人会话。正常菜单退出后如观察到新增 tmux 会话,继续跟踪其结束。退出码零仅表示入口进程正常退出,业务结论以报告为准。
## 部署与恢复
网页容器 `adamwen-script-console`;私有执行器 `adamwen-script-worker.service`;容器任务前缀 `adamwen-test-run-`;原环境服务前缀 `adamwen-native-`。初次部署使用 `deploy/dedicated.py`。`deploy/cutover_console.py` 是历史 Rundeck 切换工具,不适用于本次原环境升级。原环境方案由 `catalog/native-profiles.json` 管理,配置迁移使用 `deploy/native_profiles.py`;禁止在网页上传内容中定义宿主方案。
当前没有设置开机自启、定时任务或自动清理。整机重启后,按 00088 操作手册连接,核对共享资源,再启动本项目网页容器与 worker。日常可读检查 `docker logs --tail 100 adamwen-script-console`、`systemctl status adamwen-script-worker.service` 和运行摘要;不要输出模型认证文件。worker 配置只记录认证文件位置,秘密仅在内存中读取。
本次应用回退:先停止网页接单,确认无排队/运行任务及活动 native unit,再停止 worker。用 `deploy/native_profiles.py --restore --backup runtime/backups/before-native-20261013/native-config-migration.json` 恢复 22 项旧配置;有后续修改则工具拒绝覆盖,先核对。恢复匹配的旧 worker 源码以及保留的 `adamwen-script-console-before-native-20261013` 网页容器,再启动 worker。保留新运行记录与结果,不覆盖 SQLite;旧代码不能处理活动 native 任务。具体版本、备份与验证见原环境验收记录。回到更早 Rundeck/H2 是另一种迁移,不作为本轮普通回退路径。
数据恢复须另行明确:停止新网页/worker,保留故障数据副本,检查 SQLite 快照 `PRAGMA integrity_check`,将匹配时点的数据库、library、runs 作为一组恢复,验证文件摘要与引用。不能只覆盖数据库,不能自动丢弃快照后的运行。当前仅初始 schema v1,未来结构变更需新增可审查迁移,不改已执行历史迁移。
## 本地验证与源码管理
Python 3.12 隔离环境安装 `console/requirements-test.txt`,执行 `python -m unittest discover -s tests -v`。Linux 检查涵盖进程组、符号链接和 worker 收尾,Windows 会明确跳过不适用项。依赖已固定版本,网页无外部 CDN。
Git 远程为公司仓库 `https://code.it.aisuan.cn/wenhuadian/xas-test-library`,主分支 `main`。用户于 2026-10-14 明确授权首次提交和推送,后续 Git 历史操作仍需当前对话中的明确指令。`.local/`、`runtime/`、认证材料和服务器私有 worker 配置不进 Git;Git 不会自动拉取上传脚本或发布应用。原位置脚本按服务器路径引用,本仓库不是其他工作区的完整备份。
## 历史阶段:2026-10-13 20:25 导航与点击区域优化
项目详情顶部提供“返回测试项目”,运行详情提供“返回运行记录”;加载和错误页面同样可返回,长页面滚动时返回按钮保持可见。项目整张卡片和运行记录整行均为可点击入口;详情按钮至少 46px 高,返回按钮至少 44px 高,保留原生链接和键盘 Enter 操作。
修改限定于 `console/static/scripts.js`、`runs.js`、`styles.css` 及部署镜像引用。正式镜像为 `adamwen/script-console:20261013-3`,摘要 `sha256:62424bf4b9c34c986cc6831b8fc083e821fa78bbd5da8fbf89a1d9e897acd7fe`。1440px 和 390px 真实浏览器验证整卡/整行点击、返回、滚动、键盘及错误状态通过,没有页面横向溢出或 JavaScript 错误。
本轮未执行测试脚本或调用模型。历史记录仍为 10 条;scripts/versions/runs 数据摘要与更新前一致,worker PID 与原模型容器启动状态未改变。备份在 `runtime/backups/before-ui-navigation-20261013/`,旧网页容器 `adamwen-script-console-before-navigation-20261013` 停止保留。回退只需替换网页,不覆盖数据库或重启 worker;未实际触发回退。证据位于本地 `.local/evidence/navigation-browser.json` 和服务器 `runtime/navigation-acceptance.json`。