fix(evidence): traffic_search 描述迁移出错不再中断后续 reporter 迁移

description UPDATE 失败时原会 return 整个 seedFindingWorkflowTools,连累
independent 的 v2_reporter 迁移一起被跳过。改为出错仅 log、不置 flag(下次
启动重试),继续执行后续迁移。
This commit is contained in:
Autumn-27 committed 2026-09-14 12:44:15 -04:00
1 parent 7c8b55ca6c
commit 5db71f7c53
1 file changed
+5 -2
+5 -2
View File
@@ -21,10 +21,13 @@ func (s *Server) seedFindingWorkflowTools() {
// authoritative and must survive upgrades. // authoritative and must survive upgrades.
legacy := "查询记录代理已抓取的目标流量(必须指定 host,可再按 URL 子串或正文关键词过滤)。body_contains 会在已抓取的请求/响应头与正文中做全文搜索,支持任意子串和中文(至少 3 个字符),可用来找响应里的密码、密钥、报错、内网地址等。仅返回极轻量索引(id/method/url/status/resp_len),不含任何响应内容。默认只返回 3 条、每页最多 10 条;结果多时用 page 翻页(page=0 起);要看某条的请求/响应原文用 traffic_get(id)。回看已访问资源、找端点先用它,避免重复 curl 同一 URL。" legacy := "查询记录代理已抓取的目标流量(必须指定 host,可再按 URL 子串或正文关键词过滤)。body_contains 会在已抓取的请求/响应头与正文中做全文搜索,支持任意子串和中文(至少 3 个字符),可用来找响应里的密码、密钥、报错、内网地址等。仅返回极轻量索引(id/method/url/status/resp_len),不含任何响应内容。默认只返回 3 条、每页最多 10 条;结果多时用 page 翻页(page=0 起);要看某条的请求/响应原文用 traffic_get(id)。回看已访问资源、找端点先用它,避免重复 curl 同一 URL。"
if _, err := s.m.pg.Exec(`UPDATE tools SET description=$1,updated_at=now() WHERE key='traffic_search' AND system AND description=$2`, traffic.TrafficSearchDescription, legacy); err != nil { if _, err := s.m.pg.Exec(`UPDATE tools SET description=$1,updated_at=now() WHERE key='traffic_search' AND system AND description=$2`, traffic.TrafficSearchDescription, legacy); err != nil {
// Log and leave the flag unset so the next startup retries; do not
// return, or a transient error here would also skip the reporter
// migration below — the two are independent.
log.Printf("[evidence] upgrade traffic_search description: %v", err) log.Printf("[evidence] upgrade traffic_search description: %v", err)
return } else {
_ = s.m.pg.SetSetting(hostSearchDescriptionFlag, "true")
} }
_ = s.m.pg.SetSetting(hostSearchDescriptionFlag, "true")
} }
const flag = "finding_workflow_tools_v2_reporter" const flag = "finding_workflow_tools_v2_reporter"
if value, _, _ := s.m.pg.GetSetting(flag); value == "true" { if value, _, _ := s.m.pg.GetSetting(flag); value == "true" {