feat(web): site origin view tab with polling screenshot, coordinate input and takeover

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-09-28 20:17:46 +08:00
1 parent adffe36846
commit 8574d34144
5 files changed
+555 -3

No files matched your search

@@ -19,6 +19,7 @@ import { useInventory } from "~/api/inventory.ts";
import { type ReleaseFilters, useSiteReleases } from "~/api/releases.ts";
import { snapshotStale, useSites, useSnapshotSite } from "~/api/sites.ts";
import { openAgentDrawer } from "~/components/agent/agent-store.ts";
import { SiteOriginView } from "~/components/browser/site-origin-view.tsx";
import { DetailSection } from "~/components/console/detail-sheet.tsx";
import { EmptyState, ErrorState, LoadingState } from "~/components/console/empty-state.tsx";
import { FilterBar, FilterSelect } from "~/components/console/filter-bar.tsx";
@@ -97,9 +98,9 @@ function useDebounced<T>(value: T, ms = 400) {
return v;
}
const TABS = ["overview", "resources", "snapshots", "accounts"] as const;
/** 旧页签(整理视图 / 原站视图)落到"资源" */
const LEGACY_TAB: Record<string, string> = { organized: "resources", origin: "resources" };
const TABS = ["overview", "resources", "origin", "snapshots", "accounts"] as const;
/** 旧页签(整理视图)落到"资源" */
const LEGACY_TAB: Record<string, string> = { organized: "resources" };
export const meta = () => [{ title: "站点 · UHD 媒体自动化控制台" }];
@@ -274,6 +275,7 @@ export default function SiteWorkbenchPage() {
<TabsList aria-label="站点分节">
<TabsTrigger value="overview">概览</TabsTrigger>
<TabsTrigger value="resources">资源</TabsTrigger>
<TabsTrigger value="origin">原站视图</TabsTrigger>
<TabsTrigger value="snapshots">快照与 Feed</TabsTrigger>
<TabsTrigger value="accounts">账号</TabsTrigger>
</TabsList>
@@ -419,6 +421,8 @@ export default function SiteWorkbenchPage() {
</div>
</TabsContent>
<TabsContent value="origin">{s ? <SiteOriginView site={s} /> : <LoadingState rows={4} />}</TabsContent>
<TabsContent value="snapshots">
<div className="space-y-8">
{s ? <SnapshotPanel site={s} /> : <LoadingState rows={3} />}