chore(web): 降级留痕 + 收尾 —— 静默失效改为可观测;picker 升 0.1.5 消漂移(档案 88 / T07)
- 【留痕】model-catalog 读不到目录:console.warn(每进程一次)+ 新增 catalogDiagnostics(),并把结果透出到 GET /api/me/model-providers 的 catalog 字段;plugin-compat 的 platformPkgCount()=0 同样告警一次 ⇒「功能没做」与「做了但读不到目录」从此**可区分**(这正是那个 P1 长期潜伏的原因) - 【前端】插件 0.3.13:厂家目录不可读 / 为空时**如实提示**(含目录路径),不再静默给空列表 - 【消漂移】poc/workspace-scoped-picker 升 0.1.5 并重打包铺发 —— 两实例已装 0.1.5 且含按序探测的新代码(此前只改了源码、线上还是旧候选) - 【文档】README 补 DSHS_PACKAGE_DIR / DSHS_COMPAT_ROOT / DSHS_PI_AI_DATA_DIR(逃生口此前**未在任何地方暴露**) - 【回归】verify-dsh-install 扩到 6 组(含「读不到 ≠ 目录为空」的区分);verify-platform-admin-section 加 2 条断言(词典 284/284) - 真环境回归:picker 在 /usr/local 仍 import OK(没把本来能用的改坏)|providers 39(端点回 38)|platformPkgCount 223
This commit is contained in:
1 parent
cbaf3ad653
commit
1d72e8f9c8
9 files changed
+127
-6
No files matched your search
@@ -436,7 +436,11 @@ window.__ModuleLoader__.load({
|
||||
"ms.e.api": "不支持该协议",
|
||||
"ms.e.models": "请至少填一个模型 id",
|
||||
"ms.e.taken": "该厂家标识已被占用,换一个",
|
||||
"ms.e.provider": "官方目录里没有这个厂家"
|
||||
"ms.e.provider": "官方目录里没有这个厂家",
|
||||
|
||||
// 目录可读性(2026-09-14):读不到时必须**如实说明**,别让用户以为是"功能没做"
|
||||
"ms.catUnreadable": "⚠️ 平台未能读取官方厂家目录({dir})—— 当前只能使用内置 DeepSeek 或自定义厂家。请联系管理员检查安装路径配置。",
|
||||
"ms.catEmpty": "官方厂家目录为空(该部署可能未随附 pi-ai 厂家数据)—— 当前只能使用内置 DeepSeek 或自定义厂家。"
|
||||
};
|
||||
/** English dictionary, key-set complete against zh. */
|
||||
var en = {
|
||||
@@ -722,7 +726,9 @@ window.__ModuleLoader__.load({
|
||||
"ms.e.api": "Unsupported protocol",
|
||||
"ms.e.models": "Add at least one model id",
|
||||
"ms.e.taken": "That provider id is taken — pick another",
|
||||
"ms.e.provider": "That provider is not in the official catalog"
|
||||
"ms.e.provider": "That provider is not in the official catalog",
|
||||
"ms.catUnreadable": "⚠️ The platform could not read the official provider catalog ({dir}) — only the built-in DeepSeek and custom providers are available. Ask your administrator to check the install-path configuration.",
|
||||
"ms.catEmpty": "The official provider catalog is empty (this deployment may not ship the pi-ai provider data) — only the built-in DeepSeek and custom providers are available."
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1616,6 +1622,11 @@ window.__ModuleLoader__.load({
|
||||
var fApi = useState("");
|
||||
var fModels = useState("");
|
||||
var fShow = useState(false);
|
||||
// 后端给的**厂家目录可读性**诊断:读不到时要说清"为什么只剩两项",
|
||||
// 而不是静默给个空列表(2026-09-14:这个静默曾让一个 P1 布局缺陷长期不可见)。
|
||||
var catState = useState(null);
|
||||
var catalog = catState[0];
|
||||
var setCatalog = catState[1];
|
||||
|
||||
function load() {
|
||||
setLoading(true);
|
||||
@@ -1625,7 +1636,10 @@ window.__ModuleLoader__.load({
|
||||
])
|
||||
.then(function (res) {
|
||||
if (res[0]) setData(res[0]);
|
||||
if (res[1] && res[1].providers) setProviders(res[1].providers);
|
||||
if (res[1]) {
|
||||
if (res[1].providers) setProviders(res[1].providers);
|
||||
setCatalog(res[1].catalog || null);
|
||||
}
|
||||
setLoading(false);
|
||||
})
|
||||
.catch(function () { setLoading(false); setMsg(t("ms.loadFailed")); });
|
||||
@@ -1761,6 +1775,14 @@ window.__ModuleLoader__.load({
|
||||
// ── 新增厂家:**先选厂家**,目录厂家只需填 API 密钥(官方「新增」卡片同构)──
|
||||
jsxRuntime.jsxs("div", { className: "pa-box", children: [
|
||||
jsxRuntime.jsx("div", { className: "pa-card-h", children: jsxRuntime.jsx("span", { children: t("ms.add") }) }),
|
||||
providers.length === 0
|
||||
? jsxRuntime.jsx("p", {
|
||||
className: "pa-hint",
|
||||
children: catalog && catalog.readable === false
|
||||
? t("ms.catUnreadable").replace("{dir}", catalog.dir || "?")
|
||||
: t("ms.catEmpty")
|
||||
})
|
||||
: null,
|
||||
jsxRuntime.jsxs("div", { className: "pa-row", children: [
|
||||
jsxRuntime.jsx("span", { className: "pa-hint", style: { margin: 0 }, children: t("ms.pickProvider") }),
|
||||
jsxRuntime.jsx("select", { className: "pa-input", value: pick, onChange: function (e) { fPick[1](e.target.value); setShow(false); }, children: [
|
||||
|
||||
Reference in new issue
Block a user