Files
Agent-System/scripts/backfill_task_run_projection.go
weichenandCursor 3f42149457 feat(bizdev): snapshot collaborators onto Runtime and Server ports
Composition roots copy Parts once so HTTP/CLI handlers stop calling locator getters on every request.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 13:00:33 +00:00

87 lines
2.1 KiB
Go

// 一次性幂等回填:run_1789111889557885000 / 消息 25548 / doc_proj56_intake
//
// 用法(dev 环境,需 Postgres 可达):
// go run ./scripts/backfill_task_run_projection.go
//
//go:build ignore
package main
import (
"context"
"fmt"
"log"
"os"
"chat-agent-system/internal/bizdev"
"chat-agent-system/internal/config"
"chat-agent-system/internal/docgov"
"chat-agent-system/internal/server"
"chat-agent-system/internal/squad"
"chat-agent-system/internal/taskrun"
)
const (
runID = "run_1789111889557885000"
messageID = int64(25548)
docID = "doc_proj56_intake"
expectedSHA256 = "5329861dadd23ea48baff7079a98fa56e1a1e32a0cf5deda2ca291e57902b94c"
artifactTitle = "用户初始需求收集表"
workDir = "data/dev/workspaces/bizdev/intake_1789111889595658000"
)
func main() {
cfg, err := config.Load("")
if err != nil {
log.Fatal(err)
}
svc, err := bizdev.NewService(cfg)
if err != nil {
fmt.Fprintf(os.Stderr, "NewService: %v\n", err)
os.Exit(1)
}
srv := server.NewServer(cfg, svc)
ctx := context.Background()
pwSvc := bizdev.Snapshot(svc).PW
if pwSvc == nil {
log.Fatal("project workflow service unavailable")
}
record := &taskrun.RunRecord{
RunID: runID,
SessionID: "sess-p56-u3",
ProjectID: 56,
TaskKey: "intake",
AssistantMsgID: messageID,
WorkspaceID: workDir,
}
result := &bizdev.TaskRunResult{
Success: true,
ArtifactTitle: artifactTitle,
WorkDir: workDir,
TaskKey: "intake",
QualityReport: &squad.QualityReport{
Passed: false,
Score: 40,
Violations: []string{"不做展开", "篇幅有限", "从略"},
},
DocRecord: &docgov.DocumentRecord{
DocID: docID,
ContentSHA256: expectedSHA256,
WorkDir: workDir,
},
}
status, finErr := srv.FinalizeTaskRunProjection(ctx, record, result)
if finErr != nil {
log.Fatalf("finalize failed: %v", finErr)
}
fmt.Printf("backfill complete: status=%s run_id=%s message_id=%d doc_id=%s sha=%s\n",
status, runID, messageID, docID, expectedSHA256)
os.Exit(0)
}