feat: align capability empty states with live collector
This commit is contained in:
@@ -3875,10 +3875,17 @@ function renderOneLinerActionRegistryPanel() {
|
||||
<div class="panel-head">
|
||||
<div>
|
||||
<h3>OneLiner 动作注册表</h3>
|
||||
<div class="panel-subtitle">当前后端还没返回动作注册表,先沿用默认动作。</div>
|
||||
<div class="panel-subtitle">当前项目还没有单独动作配置,OneLiner 会继续沿用系统默认动作。</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="task-item">
|
||||
<h4>当前沿用系统默认动作</h4>
|
||||
<p>你可以等真实使用场景稳定后,再回来给当前项目单独开关、改名或补充动作说明。</p>
|
||||
<div class="task-meta">
|
||||
<span class="tag blue">系统默认仍可执行</span>
|
||||
<span class="tag">当前项目未单独覆盖</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="task-item"><h4>暂未接入</h4><p>等 <code>/v2/oneliner/action-registry</code> 可用后,这里会显示动作开关、描述和租户级配置。</p></div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
@@ -3923,8 +3930,20 @@ function renderTenantQuotaPanel() {
|
||||
if (!quota && !usage) {
|
||||
return `
|
||||
<div class="panel pad">
|
||||
<div class="panel-head"><div><h3>租户额度与审计</h3><div class="panel-subtitle">当前后端还没接入 quota / usage。</div></div></div>
|
||||
<div class="task-item"><h4>暂未接入</h4><p>等 live collector 同步 `/v2/tenant/quota` 和 `/v2/tenant/usage` 后,这里会展示本周期预算、动作配额和最近计量记录。</p></div>
|
||||
<div class="panel-head">
|
||||
<div>
|
||||
<h3>租户额度与审计</h3>
|
||||
<div class="panel-subtitle">当前项目还没有额度配置,会先按默认不限额模式运行。</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="task-item">
|
||||
<h4>当前项目还没有额度配置</h4>
|
||||
<p>先给这个项目补预算、动作配额和存储上限,再逐步收紧风险控制。</p>
|
||||
<div class="task-meta">
|
||||
<span class="tag clickable-tag" data-action="open-tenant-quota">创建额度策略</span>
|
||||
<span class="tag blue">默认不限额</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
@@ -4236,8 +4255,24 @@ function renderPlatformAgentPanel() {
|
||||
if (!items.length) {
|
||||
return `
|
||||
<div class="panel pad">
|
||||
<div class="panel-head"><div><h3>平台 Agent</h3><div class="panel-subtitle">当前后端还没接入平台 Agent 控制面。</div></div></div>
|
||||
<div class="task-item"><h4>暂未接入</h4><p>等 live collector 同步 `/v2/platform-agents` 后,这里会切成真实视图。</p></div>
|
||||
<div class="panel-head">
|
||||
<div>
|
||||
<h3>平台 Agent</h3>
|
||||
<div class="panel-subtitle">当前项目还没有平台 Agent 配置,先从最常用的平台补起。</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="three-col">
|
||||
${ACTIVE_PLATFORMS.map((platformItem) => `
|
||||
<div class="entity-card pad">
|
||||
<div class="cell-title">${escapeHtml(platformItem.label)} Agent</div>
|
||||
<div class="cell-desc">当前还没有单独配置,主 Agent 会先沿用系统默认平台方法论。</div>
|
||||
<div class="entity-meta">
|
||||
<span class="tag blue">未单独配置</span>
|
||||
<span class="tag clickable-tag" data-action="open-platform-agent-profile" data-platform="${escapeHtml(platformItem.value)}">开始配置</span>
|
||||
</div>
|
||||
</div>
|
||||
`).join("")}
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -254,6 +254,23 @@ test("discovery, production, and admin screens use page tabs for heavy content",
|
||||
assert.match(strategy, /renderPolicyAuditFeed\(/);
|
||||
});
|
||||
|
||||
test("governance and quota panels use real empty-state language instead of backend-sync placeholders", () => {
|
||||
const actionRegistry = extractBetween(APP, "function renderOneLinerActionRegistryPanel()", "function renderTenantQuotaPanel()");
|
||||
const tenantQuota = extractBetween(APP, "function renderTenantQuotaPanel()", "function policyScopeTagLabel(");
|
||||
const platformAgents = extractBetween(APP, "function renderPlatformAgentPanel()", "function renderTrackingScreen()");
|
||||
|
||||
assert.doesNotMatch(actionRegistry, /等 <code>\/v2\/oneliner\/action-registry<\/code> 可用后/);
|
||||
assert.match(actionRegistry, /当前项目还没有单独动作配置/);
|
||||
|
||||
assert.doesNotMatch(tenantQuota, /等 live collector 同步 `\/v2\/tenant\/quota` 和 `\/v2\/tenant\/usage` 后/);
|
||||
assert.match(tenantQuota, /当前项目还没有额度配置/);
|
||||
assert.match(tenantQuota, /data-action="open-tenant-quota"/);
|
||||
|
||||
assert.doesNotMatch(platformAgents, /等 live collector 同步 `\/v2\/platform-agents` 后/);
|
||||
assert.match(platformAgents, /当前项目还没有平台 Agent 配置/);
|
||||
assert.match(platformAgents, /open-platform-agent-profile/);
|
||||
});
|
||||
|
||||
test("discovery and production screens expose compact mobile flow summaries", () => {
|
||||
const discovery = extractBetween(APP, "function renderDiscoveryScreen()", "function renderTrackingScreen()");
|
||||
const production = extractBetween(APP, "function renderProductionScreen()", "function renderReviewScreen()");
|
||||
|
||||
Reference in New Issue
Block a user