From 0d7725b010080f00e661b5c635a4912678f37b98 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 11 Jul 2026 09:09:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E7=94=A8=E9=87=8F=E8=A1=A8?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4=20all?= =?UTF-8?q?=E2=86=92=E8=BF=917=E5=A4=A9(bump=200.58.3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit admin.js「按模型」「各用户用量」两表初始 range 从"全部"改"近7天", 下拉仍可切全部/30天;API 端 range 默认值不动。 Co-Authored-By: Claude Fable 5 --- PROGRESS.md | 1 + core/__init__.py | 2 +- web/static/js/admin.js | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PROGRESS.md b/PROGRESS.md index 07f95d1..2452832 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -23,6 +23,7 @@ ### 2026-07 +- **07-11 / 0.58.3**:**admin 用量表默认时间范围 all→近7天**:`admin.js` 「按模型」「各用户用量」两表初始 range 从"全部"改"近7天"(下拉仍可切全部/30天);API 端 `range` 默认值不动。 - **07-11 / 0.58.2**:**sandbox `pids_limit` 256→1024,修容器内 mermaid 渲染必崩**(task 9dcae061 排查):DB 全量扫描证实近 90 天 mmdc 渲图 0 成功(26 次 launch fail + 67 次 timeout),根因 `--pids-limit` 把线程也计数——chromium headless 一次启动 ~150-200 线程,叠加 shell 超时只杀 host 侧 docker CLI、容器内 mmdc+chromium 树残留(executor_docker 已知 Cancel limitation),256 打满 → `pthread_create EAGAIN` → chromium SIGTRAP(dbus 报错是干扰项)。改 agent.yaml + pool.py 默认值两处;RUN.md 故障兜底补条目。**待服务器验证**:重启 web + 容器回收后跑 `probe_mermaid.sh`,若 chromium 150(07-08 镜像重建带进)仍秒崩则另查宿主 docker/seccomp;彻底修法是 Step 3b PGID kill 协议(超时清残留),此次未动。附带 4 个 diag 脚本(scripts/diag_task_9dcae061.py 等)未入库。**unifyllm 文本模型再加 2 个进 pro 档**——`gpt55`(gpt-5.5)/`gpt54_mini`(gpt-5.4-mini),参数照 gpt56_sol 模板(temp 硬约束 1.0),mini 档 tool_calling/code_quality 记 good、max_iterations 100;网关 `GET /v1/models` 确认模型 ID + diag 冒烟(tool-calling)两模型均过 + `ModelCapabilities.load` 线上路径验证;`diag_unifyllm.py` 默认清单 5→7 个(RUN.md 同步)。 - **07-10 / 0.58.0**:**第二图像后端 gpt_image(unifyllm 网关,pro 档)**——媒体 provider 从豆包单家泛化为多家:新 `config/media/unifyllm.yaml`(image 段 `gpt_image` variant,model=gpt-5.6-sol 渠道)+ 新 tool `tools/gpt_image.py`(仅 prompt 参数——网关实测忽略 size/quality,尺寸上游自动定,不支持 i2i;b64 直落 `figures/`,banner 协议同 seedream,价目未知期 cost 记 0、usage tokens 进 units 留对账)。装配泛化:`ArkConfig.load` 支持通用键名 `api_key_env`/`base_url`(ark_* 旧键兜底);`agent_builder._choose_image_variant` 跨 provider 选 image variant(豆包在前 = 默认仍 seedream_5,本 run 只挂选中的一个图像工具),`_MEDIA_TOOLS_BLOCK` 拆分段按实挂工具拼装(`_media_tools_block`,gpt_image 段自带"不支持改图/尺寸→建议切回 Seedream"红线);web `_list_media_variants` 扫 `config/media/*.yaml`(image/video 清单、admin 门控 catalog 同步泛化,variant key 跨文件唯一、撞名先读生效);`media.js` 三处白名单加 gpt_image(banner/产物 chip/摘要行);prompt 润色 hint 无 default_size 时不再谎报 2048。`gpt_image` 进 pro 档(与 seedream 共享 images_per_day 配额,kind=image 同口径)。手工验证 `scripts/test_gpt_image_manual.py`(variant 选择 4 例 + prompt 块 3 例 + 真调网关落图)全过,unittest 全量 201 过。 - **07-10 / 0.57.0**:**unifyllm 网关接入(5 个国际旗舰模型进 pro 档)**:新档案 `config/models/unifyllm.yaml`(fable5/opus48/sonnet46/gpt56_sol/gemini31_pro,litellm `openai/` 前缀 + `api_base=https://unifyllm.ai/v1` + `UNIFYLLM_API_KEY`,零代码改动),`agent.yaml model_tiers.pro` 加 5 条。实测坑(全记在 yaml 头注释):gpt-5.x 被 litellm 硬拦 temp≠1、gemini-3.1-pro temp=0.3 返回空 → 两者 `optimal_temperature: 1.0`;`parallel_tool_calls` 参数网关接受(claude 实测 2 并行);流式 + include_usage 5 模型全通。新 `scripts/diag_unifyllm.py`(--stream/--temp,列模型 GET /v1/models)。**部署注意:服务器直连 unifyllm.ai TLS 握手失败,需代理出口(HTTPS_PROXY),部署前先跑 diag 验证**。价格字段暂 0(网关价目未知,成本先记 0)。 diff --git a/core/__init__.py b/core/__init__.py index 4a056eb..c093ac4 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -1,3 +1,3 @@ # zcbot 版本号单一事实源:web/app.py 的 FastAPI version、/healthz 返回、前端展示都引这里。 # 改版本只动这一行。 -__version__ = "0.58.2" +__version__ = "0.58.3" diff --git a/web/static/js/admin.js b/web/static/js/admin.js index e33aa5e..c182389 100644 --- a/web/static/js/admin.js +++ b/web/static/js/admin.js @@ -44,8 +44,8 @@ function userCellHTML(r) { let timer = null; // 各表独立状态(不随 overview 轮询重置) -let modelRange = "all", modelSort = "cost"; -let userRange = "all", userSort = "cost", userPage = 0; +let modelRange = "7d", modelSort = "cost"; +let userRange = "7d", userSort = "cost", userPage = 0; let storagePage = 0; let tiersData = null; // {tiers, default_tier, catalog};加载一次(改档位 / 看图例用)