thread-master/apps/backend/cmd/tools/radarjudgesample/main.go

58 lines
1.5 KiB
Go
Raw Permalink Normal View History

2026-08-03 05:52:02 +00:00
// radarjudgesample exports recent opportunities for human judge calibration (T535).
package main
import (
"context"
"encoding/csv"
"flag"
"fmt"
"os"
"time"
"apps/backend/internal/config"
"apps/backend/internal/module/radar/domain"
"apps/backend/internal/module/radar/repository"
"github.com/zeromicro/go-zero/core/conf"
)
func main() {
f := flag.String("f", "etc/gateway.yaml", "config")
owner := flag.Int64("owner", 0, "owner uid")
out := flag.String("o", "judge-sample.csv", "output csv")
flag.Parse()
var c config.Config
conf.MustLoad(*f, &c)
c.ApplyEnv()
repo := repository.NewMonStore(c.Mongo.URI, c.Mongo.Database)
ctx := context.Background()
list, _, err := repo.ListOpportunities(ctx, *owner, domain.OpportunityListFilter{Page: 1, PageSize: 100})
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
w := csv.NewWriter(os.Stdout)
if *out != "-" {
fp, err := os.Create(*out)
if err != nil {
panic(err)
}
defer fp.Close()
w = csv.NewWriter(fp)
}
_ = w.Write([]string{"id", "status", "intent_score", "intent_band", "region_match", "text", "human_label", "notes"})
for _, o := range list {
_ = w.Write([]string{o.ID, o.Status, fmt.Sprintf("%d", o.IntentScore), o.IntentBand, o.RegionMatch, trim(o.Text, 120), "", ""})
}
w.Flush()
fmt.Fprintf(os.Stderr, "exported %d rows at %s\n", len(list), time.Now().UTC().Format(time.RFC3339))
}
func trim(s string, n int) string {
r := []rune(s)
if len(r) <= n {
return s
}
return string(r[:n])
}