Files
姚章浩 9470a127f7
build / build (push) Successful in 1m11s
feat(qaops): 完成流水表六项体验与AI执行修正
统一AI分析入口及双任务安全确认,采用全量载入的可见行渲染,保留完整原文。
右侧非模态详情固定五项质量字段,清理冗余展示并对齐查询和同步按钮。
默认4并发由数据库准入与逐任务租约保护,保留共享限流冷却、截断归因和有界重试。
兼容真实引用标题字段,不伪造证据或准确率,不修改源生产问答与公司区域规则。

验证:完整make verify退出0,710项Go通过、124项已声明可选跳过且必需0跳过;
另全量mirror隔离PostgreSQL race退出0,AI单元race退出0。
真实本地浏览器通过六项交互、390px内滚动及显式AI部分失败/零缺口故障夹具。
治理原生备份已真实恢复,schema57、72表计数与29张QA内容哈希一致。
候选镜像、精确提交CI与正式上线验收待本次提交后执行,不宣称已部署。
2026-10-19 22:09:32 +08:00

33 lines
1.1 KiB
Go

package qaopsai
import (
"context"
"encoding/json"
"knowledge-governance/internal/dobotaiops"
"testing"
"time"
)
func TestRunWithUnavailableStoreFailsClosed(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Millisecond)
defer cancel()
defer func() {
if recover() != nil {
t.Fatal("unavailable worker panicked")
}
}()
called := false
(&Store{}).Run(ctx, func(err error) { called = err == ErrUnavailable })
if !called {
t.Fatal("unavailable worker failed silently")
}
}
func TestReferencesPreserveSourceKnowledgeTitleWithoutInventingEvidence(t *testing.T) {
r := dobotaiops.Record{References: json.RawMessage(`[{"knowledge_title":"MG400官方连接说明","id":"only-title"},{"title":"原始标题","knowledge_title":"不能覆盖","content":"逐字证据"}]`)}
refs := referencesFor(r)
if len(refs) != 2 || refs[0].Title != "MG400官方连接说明" || refs[0].Excerpt != "" || refs[1].Title != "原始标题" || refs[1].Excerpt != "逐字证据" {
t.Fatalf("source citation titles lost or title-only treated as evidence: %+v", refs)
}
}