fix: 完成态判据统一为曝光+阅读齐+交互断点三处修复

- 创作者凭证提交(manual_metrics/submit_creator_metrics)的完成判据从
  d7_likes(全库无赋值方,永不触发)改为 exposure+views 齐,与采集侧口径
  对齐;管理端手动回填后同步 refreshTaskStatus 联动任务状态
- 回收队列头部改为「已发布 N / 总数」口径,未回填链接行不再计入
- 行内更新/补填笔记链接从原生 prompt 改为弹窗表单,失败保留已输入内容
- 顶栏「获取KOC领取链接」从导航跳转改为弹窗直接列出各任务领取链接,
  一键复制;弹窗内点击不冒泡误关
This commit is contained in:
ABAPPLO
2026-10-08 15:17:14 +08:00
parent c54649258b
commit c686003cfb
5 changed files with 275 additions and 14 deletions

View File

@@ -24,6 +24,7 @@ import {
type CollectionMcpBindings,
} from "../../../lib/mcp-collection-client";
import { adminForbidden, isAdminRequest } from "../../../lib/admin-auth";
import { refreshTaskStatus } from "../../../lib/task-service";
import {
FeishuSourceError,
readFeishuSource,
@@ -663,12 +664,19 @@ export async function POST(request: Request) {
exposure = ?,
views = ?,
ocr_status = 'manual',
status = CASE WHEN d7_likes IS NOT NULL THEN 'complete' ELSE status END,
status = CASE WHEN exposure IS NOT NULL AND views IS NOT NULL THEN 'complete' ELSE status END,
updated_at = CURRENT_TIMESTAMP
WHERE id = ?`,
)
.bind(exposure, views, distributionId)
.run();
const ownerTask = await db
.prepare("SELECT task_id FROM distributions WHERE id = ?")
.bind(distributionId)
.first<{ task_id: string }>();
if (ownerTask) {
await refreshTaskStatus(ownerTask.task_id, db).catch(() => undefined);
}
} else if (body.action === "bind_wecom_external_id") {
const forbidden = managerGate();
if (forbidden) return forbidden;