78 lines
11 KiB
Markdown
78 lines
11 KiB
Markdown
# 当前控制台操作与维护
|
||
|
||
核对日期: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`。
|
||
|
||
## 2026-10-14 10:17 搜索图标对齐修复
|
||
|
||
搜索图标原先使用字体字符及固定顶部偏移,字形基线导致图标偏下。改为 16px 内嵌 SVG,按输入框高度垂直居中,并让鼠标点击穿透到输入框。仅修改 `console/static/styles.css` 和部署镜像引用,搜索逻辑不变。
|
||
|
||
1440px、2790px、390px 真实浏览器预览及正式页面均验证居中、图标区域点击聚焦、搜索命中/空结果/清空恢复正常,无 JavaScript 错误。仅替换网页容器,未重启 worker 或模型;scripts/versions/runs 摘要不变,仍为 10 条历史记录、0 活动任务。没有运行 GPU 测试。
|
||
|
||
正式镜像 `adamwen/script-console:20261014-1`,摘要 `sha256:ddbf3622b4e468ae9368864965ed2830d067a021596a6981aeca68bb5109880c`。备份为 `runtime/backups/before-search-alignment-20261014/`;旧网页容器 `adamwen-script-console-before-search-alignment-20261014` 停止保留,可仅切换网页回退,不覆盖数据库或重启 worker。故障回退未触发。
|
||
|
||
证据:服务器 `runtime/search-alignment-acceptance.json`;本地 `.local/evidence/search-deployed.json` 和 `.local/screenshots/search-*.png`。用户随后于 2026-10-14 明确授权将本次 UI 修复提交并同步到公司 Git 仓库。
|