feat(monitor): 评论接口带上 a_bogus 签名;修好作品导出的空列
**评论能采了。** 之前 comment/list 一直回 200 + 空 body,被读成「这条没评论」—— 而它其实只是被网关挡了。缺的就是 a_bogus 签名,仓库里本来就有 (libs/douyin.js + execjs)。签上之后实测 200 / 9960 字节真评论。 只给评论接口签:作品、详情、博主资料三个不带签名也照常返回,而给它们加签名是 没验证过的改动。签名按需 import —— 那个模块 import 时就把 JS 喂给 execjs, 不该拖进监控层热路径。 **作品导出那几列一直是空的。** 列名写的是裸键 liked_count,而作品行的指标嵌在 metrics / deltas 里,row.get() 永远取到 None —— 导出来的表有「点赞/评论/收藏/ 分享」四列,每一格都没有数。原来的测试只断言了「作品ID」,所以没发现。 顺手补上:导出带上 博主备注/昵称、作品备注、发布时间,时间戳格式化成人能读的 形态(原来是一串 13 位毫秒,Excel 里没法看也没法排序)。
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import { useState } from 'react'
|
||||
import { Activity, BellRing, FileText, MessageSquare, Plus } from 'lucide-react'
|
||||
import { Activity, BellRing, Download, FileText, MessageSquare, Plus } from 'lucide-react'
|
||||
|
||||
import { Badge } from '@/components/ui/badge'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
|
||||
import { useMonitorOverview, useMonitorTasks } from '@/hooks/useMonitor'
|
||||
import { monitorApi } from '@/lib/api'
|
||||
import type { MonitorTask } from '@/types/monitor'
|
||||
import { useCookieStatus, useWebhookStatus } from '@/hooks/useMonitor'
|
||||
import { useCurrentPlatform } from '@/hooks/usePlatform'
|
||||
@@ -166,6 +167,23 @@ export function MonitorDashboard() {
|
||||
>
|
||||
只看新增
|
||||
</Button>
|
||||
{/* 导出的是**这个任务**的全部作品,不是屏幕上这 200 条 —— 屏幕上那份是
|
||||
为了好看才截断的,导出跟着截断就成了「导出来的比看到的少」。
|
||||
走 window.open 而不是 blob:鉴权在 Cookie 上,浏览器自己会带上。 */}
|
||||
<Button
|
||||
variant="outline"
|
||||
size="sm"
|
||||
className="ml-auto"
|
||||
onClick={() =>
|
||||
window.open(
|
||||
monitorApi.getExportUrl({ kind: 'notes', taskId: selectedTask.id }),
|
||||
'_blank',
|
||||
)
|
||||
}
|
||||
>
|
||||
<Download className="w-3 h-3 mr-1" />
|
||||
导出 CSV
|
||||
</Button>
|
||||
</div>
|
||||
<NotesTable taskId={selectedTask.id} onlyNew={onlyNew} />
|
||||
</TabsContent>
|
||||
|
||||
Reference in New Issue
Block a user