diff --git a/web/storyforge-web-v4/assets/app.js b/web/storyforge-web-v4/assets/app.js index 629f3e9..69f7bd3 100644 --- a/web/storyforge-web-v4/assets/app.js +++ b/web/storyforge-web-v4/assets/app.js @@ -1121,8 +1121,33 @@ function renderDiscoveryScreen() { +
+ ${accounts.map((account) => { + const active = account.id === appState.selectedAccountId; + return ` + + `; + }).join("") || `
当前没有抖音账号数据。
`} +
- +
@@ -1167,6 +1192,12 @@ function renderDiscoveryScreen() {

${escapeHtml(selected?.profile_url || selected?.signature || "左侧点一个账号,这里会展示详情。")}

+
+ 作品 ${escapeHtml(formatNumber(selected?.video_summary?.count))} + 高分 ${escapeHtml(formatNumber(topVideos.length))} + 报告 ${escapeHtml(formatNumber(reports.length))} + 对标 ${escapeHtml(formatNumber(linkedAccounts.length))} +
作品数${escapeHtml(formatNumber(selected?.video_summary?.count))}
高分作品${escapeHtml(formatNumber(topVideos.length))}
@@ -1298,9 +1329,14 @@ function renderTrackingScreen() {

跟踪列表

真实跟踪对象与绑定 Agent
${escapeHtml(formatNumber(trackedAccounts.length))} 个
+
+ 跟踪 ${escapeHtml(formatNumber(trackedAccounts.length))} + 日报 ${escapeHtml(formatNumber(digestItems.length))} + ${escapeHtml(daysSince(appState.lastSeenAt))} 天窗口 +
${trackedAccounts.map((item) => ` -
+

${escapeHtml(item.account?.nickname || "未命名账号")}

最近作品 ${escapeHtml(formatNumber(item.account?.video_summary?.count))} 条 · 平均播放 ${escapeHtml(formatNumber(item.account?.video_summary?.avg_play))}

@@ -1318,7 +1354,7 @@ function renderTrackingScreen() {

更新日报

优先看最近更新的作品摘要
${escapeHtml(formatNumber(digestItems.length))} 条
${digestItems.map((item) => ` -
+

${escapeHtml(item.account?.nickname || "账号")} · ${escapeHtml(item.video?.title || item.video?.description || "最新作品")}

${escapeHtml(item.summary || `发布时间 ${formatDateTime(item.video?.published_at)},建议继续判断借鉴点。`)}

@@ -1491,6 +1527,11 @@ function renderProductionScreen() {

AI 视频

最近 ${escapeHtml(formatNumber(jobs.filter((item) => item.line_type === "ai_video").length))} 条

内容源同步

最近 ${escapeHtml(formatNumber(jobs.filter((item) => item.line_type === "content_source_sync").length))} 条

+
+ 分析 ${escapeHtml(formatNumber(jobs.filter((item) => item.line_type === "analysis").length))} + 实拍 ${escapeHtml(formatNumber(jobs.filter((item) => item.line_type === "real_cut").length))} + AI 视频 ${escapeHtml(formatNumber(jobs.filter((item) => item.line_type === "ai_video").length))} +
@@ -1498,7 +1539,7 @@ function renderProductionScreen() {

当前任务

来自 recent_jobs
${(activeJobs.length ? activeJobs : jobs.slice(0, 4)).map((job) => ` -
+

${escapeHtml(job.title)}

${escapeHtml(brief(job.style_summary || job.transcript_text || job.error || "暂无摘要", 80))}

@@ -1518,7 +1559,7 @@ function renderProductionScreen() {

作品与成片

先看真实作品,再补文档与成片
${works.map((video) => ` -
+

${escapeHtml(describeVideo(video))}

${escapeHtml(`发布时间 ${formatDateTime(video.published_at)} · 播放 ${formatNumber(video.stats?.play)} · 点赞 ${formatNumber(video.stats?.like)}`)}

@@ -1529,7 +1570,7 @@ function renderProductionScreen() {
`).join("")} ${recentDocs.map((doc) => ` -
+

${escapeHtml(doc.title)}

${escapeHtml(brief(doc.style_summary || doc.combined_text || doc.transcript_text, 92))}

${escapeHtml(doc.source_type || "document")}学习素材
diff --git a/web/storyforge-web-v4/assets/styles.css b/web/storyforge-web-v4/assets/styles.css index 941f978..3a55c27 100644 --- a/web/storyforge-web-v4/assets/styles.css +++ b/web/storyforge-web-v4/assets/styles.css @@ -680,6 +680,50 @@ select { cursor: pointer; } +.mobile-only { + display: none; +} + +.desktop-only { + display: initial; +} + +.mobile-account-list { + padding: 14px; + border-top: 1px solid var(--line); + background: linear-gradient(180deg, #fbfdff 0%, #f4f9ff 100%); +} + +.account-select-card { + width: 100%; + display: grid; + gap: 10px; + text-align: left; + padding: 14px; + border-radius: 18px; + border: 1px solid var(--line); + background: linear-gradient(180deg, #fff 0%, #f7fbff 100%); + color: var(--text); + cursor: pointer; + margin-bottom: 10px; +} + +.account-select-card:last-child { + margin-bottom: 0; +} + +.account-select-card.is-active { + border-color: rgba(79, 143, 238, 0.24); + background: linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%); + box-shadow: inset 0 0 0 1px rgba(79, 143, 238, 0.08); +} + +.compact-summary-row { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + .sheet-html { border: 1px solid var(--line); border-radius: 16px; @@ -1120,6 +1164,14 @@ tbody tr:hover { } @media (max-width: 760px) { + .mobile-only { + display: block; + } + + .desktop-only { + display: none !important; + } + .sidebar { padding: 14px 14px 12px; } @@ -1235,6 +1287,10 @@ tbody tr:hover { font-size: 24px; } + .screen-head p { + font-size: 12px; + } + .action-row { width: 100%; } @@ -1285,6 +1341,10 @@ tbody tr:hover { padding: 14px; } + .table-wrap .account-table { + display: none; + } + .search-inline { width: 100%; min-width: 0; @@ -1299,6 +1359,25 @@ tbody tr:hover { flex: 1 1 calc(50% - 4px); } + .mobile-account-list { + padding: 12px; + } + + .account-select-card { + padding: 12px; + gap: 8px; + } + + .account-select-card .kpi-inline { + justify-content: space-between; + } + + .account-select-card .task-meta .tag { + flex: 1 1 calc(50% - 4px); + justify-content: center; + text-align: center; + } + .entity-cell { align-items: flex-start; } @@ -1314,6 +1393,11 @@ tbody tr:hover { gap: 6px; } + .kpi-inline { + gap: 8px; + row-gap: 6px; + } + table { min-width: 680px; } @@ -1427,6 +1511,38 @@ tbody tr:hover { width: 100%; } + .hero-card .chip-row { + flex-wrap: nowrap; + overflow-x: auto; + padding-bottom: 2px; + scrollbar-width: none; + } + + .hero-card .chip-row::-webkit-scrollbar { + display: none; + } + + .compact-summary-row .tag { + width: calc(50% - 4px); + text-align: center; + } + + .task-item.compact, + .review-card.compact { + padding: 12px; + } + + .task-item.compact h4, + .review-card.compact h4 { + font-size: 14px; + line-height: 1.4; + } + + .task-item.compact p, + .review-card.compact p { + font-size: 11px; + } + .filter { min-width: 100%; flex-basis: 100%;
账号