package qaopsmirror import ( "context" "encoding/json" "knowledge-governance/internal/dobotaiops" pg "knowledge-governance/internal/platform/postgres" "testing" ) func TestMasterReadsDeriveLanguageAndCoverageWithoutChangingSourceOrStoredFields(t *testing.T) { pool := mirrorFixture(t) ctx := context.Background() s := NewStore(pool, "fixture-local-fields") queue := pg.NewStore(pool) entry := fixtureEntry("local-language", "已有资料") var wire map[string]any _ = json.Unmarshal(entry.Payload, &wire) wire["question"] = "MG400 怎么连接 PLC?" entry.Payload, _ = json.Marshal(wire) job := claimMirrorJob(t, s, queue, "local-field-seed") if err := s.HandleSync(ctx, *job, func(context.Context) (Source, error) { return &fixtureSource{rows: []dobotaiops.MirrorRecord{entry}}, nil }); err != nil { t.Fatal(err) } got, err := s.GetMasterRecord(ctx, s.tenant, "local-language") if err != nil { t.Fatal(err) } if got.MasterFields["language"] != "中文" || got.MasterFields["question_chinese"] != got.Question || got.Coverage.Verdict != "covered" { t.Fatalf("master derivation not served: language=%q translation=%q coverage=%q", got.MasterFields["language"], got.MasterFields["question_chinese"], got.Coverage.Verdict) } var changed bool if err = pool.QueryRow(ctx, `SELECT payload?'master_fields' FROM qa_ops_master_records WHERE tenant_key=$1 AND id=$2`, s.tenant, got.ID).Scan(&changed); err != nil || changed { t.Fatal("read projection mutated stored master input", err) } source, err := s.GetRecord(ctx, s.tenant, got.ID) if err != nil || source.Coverage.Verdict != "" || source.MasterFields != nil { t.Fatal("master rule silently changed legacy/source projection", err) } }