From c686003cfb216ab968455e65920c85adce2d9b5c Mon Sep 17 00:00:00 2001 From: ABAPPLO <1134226402@qq.com> Date: Thu, 8 Oct 2026 15:17:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E6=88=90=E6=80=81=E5=88=A4?= =?UTF-8?q?=E6=8D=AE=E7=BB=9F=E4=B8=80=E4=B8=BA=E6=9B=9D=E5=85=89+?= =?UTF-8?q?=E9=98=85=E8=AF=BB=E9=BD=90+=E4=BA=A4=E4=BA=92=E6=96=AD?= =?UTF-8?q?=E7=82=B9=E4=B8=89=E5=A4=84=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创作者凭证提交(manual_metrics/submit_creator_metrics)的完成判据从 d7_likes(全库无赋值方,永不触发)改为 exposure+views 齐,与采集侧口径 对齐;管理端手动回填后同步 refreshTaskStatus 联动任务状态 - 回收队列头部改为「已发布 N / 总数」口径,未回填链接行不再计入 - 行内更新/补填笔记链接从原生 prompt 改为弹窗表单,失败保留已输入内容 - 顶栏「获取KOC领取链接」从导航跳转改为弹窗直接列出各任务领取链接, 一键复制;弹窗内点击不冒泡误关 --- app/admin-app.tsx | 126 ++++++++++++++++++++++++++++--- app/api/action/route.ts | 10 ++- app/api/partner/route.ts | 2 +- app/globals.css | 46 +++++++++++ tests/interaction-fixes.test.mjs | 105 ++++++++++++++++++++++++++ 5 files changed, 275 insertions(+), 14 deletions(-) create mode 100644 tests/interaction-fixes.test.mjs diff --git a/app/admin-app.tsx b/app/admin-app.tsx index d71233f..12df605 100644 --- a/app/admin-app.tsx +++ b/app/admin-app.tsx @@ -548,6 +548,11 @@ export default function Home({ currentUser }: { currentUser: AuthUser }) { const [ownerLinksTask, setOwnerLinksTask] = useState(null); const [customerChatTask, setCustomerChatTask] = useState(null); const [metricModal, setMetricModal] = useState(null); + const [publishUrlModal, setPublishUrlModal] = useState<{ + distribution: Distribution; + value: string; + } | null>(null); + const [claimLinksOpen, setClaimLinksOpen] = useState(false); const [taskForm, setTaskForm] = useState({ id: "", platform: "小红书" as "小红书" | "抖音", @@ -905,27 +910,29 @@ export default function Home({ currentUser }: { currentUser: AuthUser }) { const updateDistributionPublishUrl = async ( distribution: Distribution, ) => { - const publishInput = window.prompt( - distribution.publish_url - ? "更新小红书笔记链接(支持长链、短链或完整分享文案)" - : "填写小红书笔记链接(支持长链、短链或完整分享文案)", - distribution.publish_url || "", - ); - if (publishInput === null) return; - if (!publishInput.trim()) { + setPublishUrlModal({ distribution, value: distribution.publish_url || "" }); + }; + + const submitPublishUrl = async (event: FormEvent) => { + event.preventDefault(); + if (!publishUrlModal) return; + const publishInput = publishUrlModal.value.trim(); + if (!publishInput) { setToast("请填写笔记链接"); return; } - await runAction( + const distribution = publishUrlModal.distribution; + const updated = await runAction( { action: "update_distribution_publish_url", distributionId: distribution.id, - publishUrl: publishInput.trim(), + publishUrl: publishInput, }, distribution.publish_url ? "笔记链接已更新,旧公开采集数据已清空" : "笔记链接已补充,可开始数据采集", ); + if (updated) setPublishUrlModal(null); }; const retryFailedMetrics = async (taskId: string, failedCount: number) => { @@ -1233,7 +1240,7 @@ export default function Home({ currentUser }: { currentUser: AuthUser }) {
飞书内容表已接入 - {isManager && ( @@ -1699,6 +1706,98 @@ export default function Home({ currentUser }: { currentUser: AuthUser }) {
)} + {publishUrlModal && ( +
setPublishUrlModal(null)}> +
event.stopPropagation()}> +
+
+

发布链接

+

{publishUrlModal.distribution.publish_url ? "更新笔记链接" : "填写笔记链接"}

+
+ +
+
+ {publishUrlModal.distribution.account_nickname || "待识别账号"} + {publishUrlModal.distribution.content_title} +
+
+