修复: gen_stream判重+重试分类+状态机最短路径+既有测试修复

This commit is contained in:
lxy
2026-08-12 00:29:06 +08:00
parent 9407f821b9
commit d31a27512c
36 changed files with 2614 additions and 264 deletions
@@ -215,19 +215,30 @@ use rusqlite::OptionalExtension;
#[cfg(test)]
mod tests {
use super::*;
use crate::crud::project_repo::ProjectRepo;
use crate::db::Database;
use crate::models::{ProjectRecord, ProjectModuleRecord};
use df_types::types::ProjectStatus;
/// 建库 + 建占位 project 满足 FK 约束 + 返回 repo(对标 project_service_repo::setup)。
async fn setup() -> (Database, ProjectModuleRepo, String) {
let db = Database::open_in_memory().await.expect("open_in_memory");
let project_id = "proj-test".to_string();
db.conn()
.blocking_lock()
.execute(
"INSERT INTO projects (id, name, status, path, stack, created_at, updated_at) \
VALUES (?1, ?2, 'active', '/tmp', 'rust', '0', '0')",
params![project_id, "Test Project"],
)
// 用异步 repo API 建占位 project(勿在 async 上下文直接 blocking_lock,会触发
// "Cannot block the current thread from within a runtime" panic,实证 2026-08-11)。
ProjectRepo::new(&db)
.insert(ProjectRecord {
id: project_id.clone(),
name: "Test Project".to_string(),
description: String::new(),
status: ProjectStatus::InProgress,
idea_id: None,
path: Some("/tmp".into()),
stack: Some("rust".into()),
created_at: "0".to_string(),
updated_at: "0".to_string(),
})
.await
.expect("insert placeholder project");
let repo = ProjectModuleRepo::new(&db);
(db, repo, project_id)