feat: add distribution release and recovery controls

This commit is contained in:
巫凤萍
2026-08-12 11:12:23 +08:00
parent ddad4b7659
commit 7ef150e08b
16 changed files with 717 additions and 33 deletions

View File

@@ -60,13 +60,23 @@ function shanghaiHourFromTimestamp(timestamp: number) {
);
}
export function isCollectionScheduleDue(
scheduledDate: string,
timestamp: number,
) {
const currentDate = shanghaiDateFromTimestamp(timestamp);
const currentHour = shanghaiHourFromTimestamp(timestamp);
return (
scheduledDate < currentDate ||
(scheduledDate === currentDate && currentHour >= 9)
);
}
function dueSchedules(
startDate: string,
days: number[],
timestamp: number,
) {
const currentDate = shanghaiDateFromTimestamp(timestamp);
const currentHour = shanghaiHourFromTimestamp(timestamp);
return days
.map((scheduleDay) => ({
scheduleDay,
@@ -78,8 +88,7 @@ function dueSchedules(
): value is { scheduleDay: number; scheduledDate: string } =>
Boolean(
value.scheduledDate &&
(value.scheduledDate < currentDate ||
(value.scheduledDate === currentDate && currentHour >= 10)),
isCollectionScheduleDue(value.scheduledDate, timestamp),
),
);
}
@@ -131,8 +140,8 @@ export async function createCollectionRunTasks(
distribution.id,
scheduledDate,
scheduleDay,
`${scheduledDate}T10:00:00+08:00`,
`等待第${scheduleDay}10:00自动采集`,
`${scheduledDate}T09:00:00+08:00`,
`等待第${scheduleDay}天 09:00自动采集`,
),
);
}
@@ -162,7 +171,7 @@ export async function collectDistributionMetrics(
if (!current) throw new Error("分发记录不存在");
if (!current.publish_url) throw new Error("笔记尚未回填发布链接");
const scheduledAt = `${scheduledDate}T10:00:00+08:00`;
const scheduledAt = `${scheduledDate}T09:00:00+08:00`;
const runId = uid("run");
await db
.prepare(
@@ -231,7 +240,7 @@ export async function collectDistributionMetrics(
const dayWeight = scheduleDay ?? 1;
const successDescription =
source === "automatic"
? `成功 · 第${dayWeight}10:00自动采集`
? `成功 · 第${dayWeight}天 09:00自动采集`
: source === "catchup"
? `成功 · 第${dayWeight}天自动追采`
: "成功 · 手动采集";