fix: 7 项 E2E Bug 修复 — Dashboard 404 / 记忆去重 / 记忆注入 / invoice_id / Prompt 版本
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
P0: - BUG-H1: Dashboard 路由 /api/v1/stats/dashboard → /api/v1/admin/dashboard P1: - BUG-H2: viking_add 预检查 content_hash 去重,返回 "deduped" 状态;SqliteStorage 启动时回填已有条目 content_hash - BUG-M5: saas-relay-client 发送前调用 viking_inject_prompt 注入跨会话记忆 P2: - BUG-M1: PaymentResult 添加 invoice_id 字段,query_payment_status 返回 invoice_id - BUG-M2: UpdatePromptRequest 添加内容字段,更新时自动创建新版本并递增 current_version - BUG-M3: viking_find scope 参数文档化(设计行为,调用方需传 agent scope) - BUG-M4: Dashboard 路由缺失已修复,handler 层 require_admin 已正确返回 403 P3 (确认已修复/非代码问题): - BUG-L1: pain_seed_categories 已统一,无 pain_seeds 残留 - BUG-L2: pipeline_create 参数格式正确,E2E 测试方法问题
This commit is contained in:
@@ -179,6 +179,36 @@ impl SqliteStorage {
|
||||
.execute(&self.pool)
|
||||
.await;
|
||||
|
||||
// Backfill content_hash for existing entries that have NULL content_hash
|
||||
{
|
||||
use std::hash::{Hash, Hasher};
|
||||
|
||||
let rows: Vec<(String, String)> = sqlx::query_as(
|
||||
"SELECT uri, content FROM memories WHERE content_hash IS NULL"
|
||||
)
|
||||
.fetch_all(&self.pool)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
if !rows.is_empty() {
|
||||
for (uri, content) in &rows {
|
||||
let normalized = content.trim().to_lowercase();
|
||||
let mut hasher = std::collections::hash_map::DefaultHasher::new();
|
||||
normalized.hash(&mut hasher);
|
||||
let hash = format!("{:016x}", hasher.finish());
|
||||
let _ = sqlx::query("UPDATE memories SET content_hash = ? WHERE uri = ?")
|
||||
.bind(&hash)
|
||||
.bind(uri)
|
||||
.execute(&self.pool)
|
||||
.await;
|
||||
}
|
||||
tracing::info!(
|
||||
"[SqliteStorage] Backfilled content_hash for {} existing entries",
|
||||
rows.len()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Create metadata table
|
||||
sqlx::query(
|
||||
r#"
|
||||
|
||||
Reference in New Issue
Block a user