refactor: 抽离 AI pipeline 与调度共享能力逻辑

This commit is contained in:
fawney19
2026-04-10 01:46:14 +08:00
parent b901a6ffc7
commit 5014e2f5fd
255 changed files with 15057 additions and 3115 deletions

View File

@@ -91,7 +91,7 @@ impl AnnouncementReadRepository for InMemoryAnnouncementReadRepository {
.is_pinned
.cmp(&left.is_pinned)
.then_with(|| right.priority.cmp(&left.priority))
.then_with(|| right.created_at_unix_secs.cmp(&left.created_at_unix_secs))
.then_with(|| right.created_at_unix_ms.cmp(&left.created_at_unix_ms))
.then_with(|| left.id.cmp(&right.id))
});

View File

@@ -21,7 +21,7 @@ SELECT
u.username AS author_username,
EXTRACT(EPOCH FROM a.start_time)::bigint AS start_time_unix_secs,
EXTRACT(EPOCH FROM a.end_time)::bigint AS end_time_unix_secs,
EXTRACT(EPOCH FROM a.created_at)::bigint AS created_at_unix_secs,
EXTRACT(EPOCH FROM a.created_at)::bigint AS created_at_unix_ms,
EXTRACT(EPOCH FROM a.updated_at)::bigint AS updated_at_unix_secs
FROM announcements a
LEFT JOIN users u ON u.id = a.author_id
@@ -42,7 +42,7 @@ SELECT
u.username AS author_username,
EXTRACT(EPOCH FROM a.start_time)::bigint AS start_time_unix_secs,
EXTRACT(EPOCH FROM a.end_time)::bigint AS end_time_unix_secs,
EXTRACT(EPOCH FROM a.created_at)::bigint AS created_at_unix_secs,
EXTRACT(EPOCH FROM a.created_at)::bigint AS created_at_unix_ms,
EXTRACT(EPOCH FROM a.updated_at)::bigint AS updated_at_unix_secs
FROM announcements a
LEFT JOIN users u ON u.id = a.author_id
@@ -125,7 +125,7 @@ RETURNING
(SELECT username FROM users WHERE id = announcements.author_id) AS author_username,
EXTRACT(EPOCH FROM start_time)::bigint AS start_time_unix_secs,
EXTRACT(EPOCH FROM end_time)::bigint AS end_time_unix_secs,
EXTRACT(EPOCH FROM created_at)::bigint AS created_at_unix_secs,
EXTRACT(EPOCH FROM created_at)::bigint AS created_at_unix_ms,
EXTRACT(EPOCH FROM updated_at)::bigint AS updated_at_unix_secs
"#;
@@ -154,7 +154,7 @@ RETURNING
(SELECT username FROM users WHERE id = announcements.author_id) AS author_username,
EXTRACT(EPOCH FROM start_time)::bigint AS start_time_unix_secs,
EXTRACT(EPOCH FROM end_time)::bigint AS end_time_unix_secs,
EXTRACT(EPOCH FROM created_at)::bigint AS created_at_unix_secs,
EXTRACT(EPOCH FROM created_at)::bigint AS created_at_unix_ms,
EXTRACT(EPOCH FROM updated_at)::bigint AS updated_at_unix_secs
"#;
@@ -350,7 +350,7 @@ fn map_announcement_row(row: &PgRow) -> Result<StoredAnnouncement, DataLayerErro
row.try_get("author_username").map_postgres_err()?,
row.try_get("start_time_unix_secs").map_postgres_err()?,
row.try_get("end_time_unix_secs").map_postgres_err()?,
row.try_get("created_at_unix_secs").map_postgres_err()?,
row.try_get("created_at_unix_ms").map_postgres_err()?,
row.try_get("updated_at_unix_secs").map_postgres_err()?,
)
}

View File

@@ -13,7 +13,7 @@ pub struct StoredAnnouncement {
pub author_username: Option<String>,
pub start_time_unix_secs: Option<u64>,
pub end_time_unix_secs: Option<u64>,
pub created_at_unix_secs: u64,
pub created_at_unix_ms: u64,
pub updated_at_unix_secs: u64,
}
@@ -31,7 +31,7 @@ impl StoredAnnouncement {
author_username: Option<String>,
start_time_unix_secs: Option<i64>,
end_time_unix_secs: Option<i64>,
created_at_unix_secs: i64,
created_at_unix_ms: i64,
updated_at_unix_secs: i64,
) -> Result<Self, crate::DataLayerError> {
if id.trim().is_empty() {
@@ -71,10 +71,7 @@ impl StoredAnnouncement {
end_time_unix_secs: end_time_unix_secs
.map(|value| parse_timestamp(value, "announcements.end_time"))
.transpose()?,
created_at_unix_secs: parse_timestamp(
created_at_unix_secs,
"announcements.created_at",
)?,
created_at_unix_ms: parse_timestamp(created_at_unix_ms, "announcements.created_at")?,
updated_at_unix_secs: parse_timestamp(
updated_at_unix_secs,
"announcements.updated_at",