新增: F-01模型能力阶段1+2(ModelConfig数据模型+model_probe探测器+df-storage兼容V18)

This commit is contained in:
2026-06-16 23:33:45 +08:00
parent d3e6f80d2b
commit b3e78e6061
13 changed files with 1216 additions and 7 deletions

View File

@@ -34,7 +34,7 @@ pub fn run(conn: &Connection) -> Result<()> {
// 迁移步骤链: 顺序执行,跳过已应用的版本(current_version < N 才跑)。
// 新增版本时,在此数组追加一项 (N, migrate_vN) 即可,无需改逻辑。
let steps: [(i32, fn(&Connection) -> Result<()>); 17] = [
let steps: [(i32, fn(&Connection) -> Result<()>); 18] = [
(1, migrate_v1),
(2, migrate_v2),
(3, migrate_v3),
@@ -52,6 +52,7 @@ pub fn run(conn: &Connection) -> Result<()> {
(15, migrate_v15),
(16, migrate_v16),
(17, migrate_v17),
(18, migrate_v18),
];
for (version, migrate_fn) in steps {
@@ -312,6 +313,21 @@ fn migrate_v17(conn: &Connection) -> Result<()> {
Ok(())
}
/// V18: 幂等补 ai_providers.model_configs 列(模型能力配置,F-01 阶段1)
///
/// 模型 4 维度(模态/能力/价格/智力)+ 路由控制配置 JSON 字符串。TEXT NULL 向后兼容:
/// 老库行默认 NULL,from_row 经 deserialize_model_configs 解析为空 Vec(配合 default_model 过渡)。
/// 用 PRAGMA 探测列存在性,缺失才 ALTER(同 v4/v5/v6/v8/v10/v11/v14/v15/v16/v17 模式),对新库/老库均安全。
fn migrate_v18(conn: &Connection) -> Result<()> {
if !column_exists(conn, "ai_providers", "model_configs") {
conn.execute("ALTER TABLE ai_providers ADD COLUMN model_configs TEXT", [])?;
tracing::info!("v18: 补建 ai_providers.model_configs 列(模型能力配置)");
}
conn.execute("INSERT INTO schema_version (version) VALUES (?)", [18])?;
tracing::info!("迁移 v18 完成");
Ok(())
}
/// V1 建表 SQL
const V1_SQL: &str = "
-- 想法表