feat(api): add workflow document list, content read, and backfill script
Expose project controlled documents from DocGov, serve authenticated output.md content by doc_id, and add idempotent backfill for run_1789111889557885000. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
// 一次性幂等回填: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/projectworkflow"
|
||||
"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 := bizdev.NewService(cfg)
|
||||
srv := server.NewServer(cfg, svc)
|
||||
ctx := context.Background()
|
||||
|
||||
pwSvc := svc.ProjectWorkflow()
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user