squid-main-space / app.html
Zin299's picture
Deploy v4.6.15 product finish system health
1d46957
Raw
History Blame Contribute Delete
11 kB
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Ocean Data Assistant</title>
<link rel="stylesheet" href="/static/css/app.css?v=__APP_VERSION__">
</head>
<body class="auth-pending">
<div class="app">
<aside class="side">
<div class="brand">
<div class="brand-mark">🪼</div>
<div class="brand-text"><strong>Ocean Data Assistant</strong><small>Marine Foundation Platform</small></div>
</div>
<nav class="nav primary-tools">
<button class="nav-btn active" data-view="chat"><span class="nav-ico">💬</span><span class="nav-label">对话助手</span></button>
<button id="navProjectPackage" class="nav-btn" data-view="projectPackage"><span class="nav-ico">📦</span><span class="nav-label">项目数据包</span><span class="nav-badge"></span></button>
<button class="nav-btn" data-view="datasets"><span class="nav-ico">🗄️</span><span class="nav-label">数据集</span><span id="navDatasetsBadge" class="nav-badge"></span></button>
<button class="nav-btn" data-view="tasks"><span class="nav-ico">📋</span><span class="nav-label">我的任务</span><span id="navTasksBadge" class="nav-badge">0</span></button>
</nav>
<div class="side-tools-head">
<span>更多功能</span>
<button id="sidebarToolsToggle" class="side-tools-toggle" type="button" aria-expanded="true" title="折叠更多功能">
<span id="sidebarToolsToggleText">收起</span><span class="side-tools-chevron"></span>
</button>
</div>
<nav id="sidebarTools" class="nav sidebar-tools secondary-tools">
<button class="nav-btn" data-view="favorites"><span class="nav-ico"></span><span class="nav-label">收藏</span><span id="navFavoritesBadge" class="nav-badge">0</span></button>
<button class="nav-btn" data-view="services"><span class="nav-ico">🌐</span><span class="nav-label">数据服务</span><span id="navServicesBadge" class="nav-badge"></span></button>
<button class="nav-btn" data-view="dataHealth"><span class="nav-ico">🩺</span><span class="nav-label">数据质量</span><span id="navHealthBadge" class="nav-badge"></span></button>
<button class="nav-btn" data-view="settings"><span class="nav-ico"></span><span class="nav-label">设置</span></button>
</nav>
<button id="new" class="new">+ 新建对话</button>
<div class="side-quick" aria-label="数据快捷入口"><button class="side-domain" data-domain="ocean">🌊 Ocean</button><button class="side-domain" data-domain="tuna">🐟 Tuna</button><button class="side-domain" data-domain="squid">🦑 Squid</button></div>
<div class="history-head">
<span>近期对话</span>
<div class="history-head-actions">
<button id="historyManage" class="clear-btn" title="批量管理最近对话">管理</button>
<button id="clear" class="clear-btn" title="清空最近对话">清空</button>
</div>
</div>
<div class="history-tools">
<input id="historySearch" class="history-search" type="search" placeholder="搜索对话概括或内容">
<select id="historySort" class="history-sort" title="近期对话排序">
<option value="updated">最近更新</option>
<option value="title">概括名称</option>
</select>
</div>
<div id="historyBatchBar" class="history-batch hidden">
<span id="historyBatchCount">已选 0 项</span>
<button id="historySelectAll" class="clear-btn">全选</button>
<button id="historyDeleteSelected" class="clear-btn danger">删除所选</button>
<button id="historyManageDone" class="clear-btn">完成</button>
</div>
<div id="history"></div>
<div class="side-foot">
<div id="profileAvatar" class="profile-av">🌊</div>
<div class="profile-txt"><b id="profileName">Marine Explorer</b><small id="profileRuntime">Codex Harness · ZAI GLM-5.3 · Marine MCP</small></div>
</div>
</aside>
<main class="main">
<header class="top">
<div style="display:flex;align-items:center;gap:9px">
<button id="mobileNav" class="icon-btn mobile-nav" title="菜单"></button>
<div id="pageTitle" class="title">Global Marine Foundation Data Agent <span style="font-size:11px;opacity:.58;font-weight:600;margin-left:8px">v__APP_VERSION__</span></div>
</div>
<div class="top-right">
<div class="stat"><span id="dot" class="dot"></span><span id="st">正在连接…</span></div>
<button id="accountBtn" class="account-btn" title="账户"><span id="accountAvatar">U</span><span id="accountName">账户</span></button>
<button id="serviceDiagGlobal" class="view-btn primary service-diag-global" type="button" title="打开服务诊断详情">诊断详情</button>
<button id="refresh" class="icon-btn" title="刷新状态"></button>
</div>
</header>
<section id="chat" class="chat">
<div class="inner">
<div id="welcome" class="welcome">
<div class="hero">
<h1>欢迎使用海洋数据助手 🌊</h1>
<p>查询、裁剪与导出 Ocean、Tuna 和 Squid 数据。Codex Harness 使用智谱 ZAI 的 GLM-5.3,学校服务器真实数据通过 Marine MCP 安全访问。</p>
</div>
<div class="cards">
<div class="data-card domain-card" data-domain="ocean" role="button" tabindex="0" aria-label="打开 Ocean 数据中心" onclick="openDomainPanel('ocean')" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();openDomainPanel('ocean')}">
<div class="card-top"><div class="card-ico">🌊</div><div><span class="card-name">Ocean</span><span class="card-tag">海洋</span></div></div>
<div class="card-desc">海洋物理、生化、海气与遥感数据;直接查看实时目录、变量和服务状态。</div>
<div class="card-foot"><span id="oceanCardCount">实时读取中…</span><span id="oceanCardStatus">检测中</span></div>
<div id="oceanCardLive" class="card-live">正在连接学校 Marine API</div>
<div class="card-actions-home"><button type="button" class="card-mini-btn" data-action="browse" data-domain="ocean" onclick="event.stopPropagation();openDomainPanel('ocean')">打开数据中心</button><button type="button" class="card-mini-btn" data-action="query" data-domain="ocean" onclick="event.stopPropagation();goChat(DOMAIN_PROMPTS['ocean'])">快速查询</button></div>
</div>
<div class="data-card domain-card" data-domain="tuna" role="button" tabindex="0" aria-label="打开 Tuna 数据中心" onclick="openDomainPanel('tuna')" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();openDomainPanel('tuna')}">
<div class="card-top"><div class="card-ico">🐟</div><div><span class="card-name">Tuna</span><span class="card-tag">金枪鱼</span></div></div>
<div class="card-desc">金枪鱼捕捞、努力量、CPUE 与区域渔业组织数据;实时读取 Tuna 仓库。</div>
<div class="card-foot"><span id="tunaCardCount">实时读取中…</span><span id="tunaCardStatus">检测中</span></div>
<div id="tunaCardLive" class="card-live">正在读取 Hugging Face main 分支</div>
<div class="card-actions-home"><button type="button" class="card-mini-btn" data-action="browse" data-domain="tuna" onclick="event.stopPropagation();openDomainPanel('tuna')">打开数据中心</button><button type="button" class="card-mini-btn" data-action="query" data-domain="tuna" onclick="event.stopPropagation();goChat(DOMAIN_PROMPTS['tuna'])">快速查询</button></div>
</div>
<div class="data-card domain-card" data-domain="squid" role="button" tabindex="0" aria-label="打开 Squid 数据中心" onclick="openDomainPanel('squid')" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();openDomainPanel('squid')}">
<div class="card-top"><div class="card-ico">🦑</div><div><span class="card-name">Squid</span><span class="card-tag">柔鱼</span></div></div>
<div class="card-desc">柔鱼/鱿鱼捕捞、努力量、CPUE、渔船活动与资源评估数据;实时读取 Squid 仓库。</div>
<div class="card-foot"><span id="squidCardCount">实时读取中…</span><span id="squidCardStatus">检测中</span></div>
<div id="squidCardLive" class="card-live">正在读取 Hugging Face main 分支</div>
<div class="card-actions-home"><button type="button" class="card-mini-btn" data-action="browse" data-domain="squid" onclick="event.stopPropagation();openDomainPanel('squid')">打开数据中心</button><button type="button" class="card-mini-btn" data-action="query" data-domain="squid" onclick="event.stopPropagation();goChat(DOMAIN_PROMPTS['squid'])">快速查询</button></div>
</div>
</div>
</div>
<div id="msgs" class="msgs"></div>
</div>
</section>
<section id="workspace" class="workspace hidden">
<div id="workspaceInner" class="workspace-inner"></div>
</section>
<div id="composerWrap" class="composer-wrap">
<div class="composer">
<div class="composer-row">
<button class="tool-ico" title="附件入口预留"></button>
<button id="uploadBtn" type="button"
title="上传文件"
style="width:42px;height:42px;border:0;border-radius:11px;background:rgba(20,70,105,.55);color:#bfe7ff;cursor:pointer;flex:0 0 auto;font-size:18px">📎</button>
<input id="uploadInput" type="file" multiple style="display:none">
<textarea id="p" rows="1" placeholder="输入你的问题,例如:给我 2026年7月15日 120–121°E、20–21°N 的 ERA5 v10,导出 Excel"></textarea>
<button id="send" class="send" title="发送"></button>
</div>
<div class="composer-foot">
<span id="hint" class="hint"><span class="mini-dot"></span>Ocean + Fisheries 数据路由</span>
<span>Enter 发送 · Shift+Enter 换行</span>
</div>
</div>
</div>
</main>
</div>
<div id="domainOverlay" class="domain-overlay hidden"><div id="domainPanel" class="domain-panel"></div></div>
<div id="toast" class="toast"></div>
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.min.js"></script>
<script>
window.__SQUID_CONFIG__ = {
authEnabled: __AUTH_ENABLED_JSON__,
supabaseUrl: __SUPABASE_URL_JSON__,
supabaseKey: __SUPABASE_KEY_JSON__,
appVersion: "__APP_VERSION__"
};
</script>
<script src="/static/js/app.js?v=__APP_VERSION__"></script>
<script src="/static/js/system-health.js?v=__APP_VERSION__"></script>
<script src="/static/js/data-health.js?v=__APP_VERSION__"></script>
<script src="/static/js/project-package.js?v=__APP_VERSION__"></script>
</body>
</html>