Files
knowledge-governance/internal/platform/postgres/qa_downvote_migration_test.go
T
姚章浩 2c0bb32183
build / build (push) Successful in 1m11s
fix(qaops): 点踩问题统一判为不正确
通过持久来源关联读取最新本地反馈,强制总表有效正确性为否,保留原问答和人工证据。统一列表、详情、指标和两阶段读取的反馈快照,拒绝冲突选择并保留其他字段编辑。已通过完整本地门禁、隔离PG竞态和真实恢复库52条点踩逐条读回、桌面及手机验收;未调用模型或连接源生产库。
2026-10-20 08:18:03 +08:00

31 lines
1.4 KiB
Go

package postgres
import (
"strings"
"testing"
)
func TestMasterDownvoteMigrationPreservesOriginalAndSavedHumanData(t *testing.T) {
migrations, err := loadMigrations()
if err != nil {
t.Fatal(err)
}
m := migrations[58]
if m.Version != 59 {
t.Fatal("missing feedback-rule migration")
}
for _, marker := range []string{"CREATE FUNCTION qa_ops_feedback_is_down", "qa_ops_master_source_links", "l.master_id=m.id", "l.source_kind='dobotai_2_0'", "current_feedback", "'{\"is_correct\":\"否\"}'::jsonb", "e.input_hash=m.quality_hash AND e.review_revision=COALESCE(h.review_revision,0)", "qa_mirror_feedback_master_revision", "CREATE INDEX idx_qa_master_source_feedback"} {
if !strings.Contains(m.UpSQL, marker) {
t.Fatalf("downvote read contract missing: %s", marker)
}
}
for _, marker := range []string{"UPDATE qa_ops_master_records", "UPDATE qa_ops_quality_reviews", "UPDATE qa_ops_master_field_overrides", "DELETE FROM", "DROP TABLE"} {
if strings.Contains(m.UpSQL, marker) || strings.Contains(m.DownSQL, marker) {
t.Fatalf("derived feedback migration mutates saved business or human evidence: %s", marker)
}
}
if !strings.Contains(m.DownSQL, "AS inline_fields") || !strings.Contains(m.DownSQL, "DROP TRIGGER qa_mirror_feedback_master_revision") {
t.Fatal("rollback must retain sparse human fields and remove only the new derived feedback contract")
}
}