From 8d6ab0eb56be7b970796720df5ba36e774559901 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Sat, 1 Aug 2026 21:56:25 +0000 Subject: [PATCH] Remove per-report batch notification state --- internal/app/app.go | 45 ++++++++++++++++------------------------ internal/cli/output.go | 14 ++----------- internal/cli/run_test.go | 8 +++++++ 3 files changed, 28 insertions(+), 39 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 2b51663..c7888e3 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -124,26 +124,22 @@ type BatchNotificationReport struct { } type BatchReportResult struct { - ReportID report.ID `json:"reportId"` - ReportName string `json:"reportName"` - PromptID string `json:"promptId"` - RunID string `json:"runId"` - Status string `json:"status"` - Error string `json:"error,omitempty"` - NotificationStatus string `json:"notificationStatus,omitempty"` - NotificationRunID string `json:"notificationRunId,omitempty"` - NotificationPipelineID string `json:"notificationPipelineId,omitempty"` - NotificationError string `json:"notificationError,omitempty"` - GeneratedAt time.Time `json:"generatedAt"` - ValidPeriod timeutil.Period `json:"validPeriod"` - Timezone string `json:"timezone"` - ProfileID string `json:"profileId,omitempty"` - BackendID string `json:"backendId,omitempty"` - ModelName string `json:"modelName,omitempty"` - SourceWarnings []weatherdata.SourceWarning `json:"sourceWarnings,omitempty"` - ValidationStatus promptexec.ValidationStatus `json:"validationStatus,omitempty"` - LLMDebugPath string `json:"llmDebugPath,omitempty"` - OutputPath string `json:"outputPath,omitempty"` + ReportID report.ID `json:"reportId"` + ReportName string `json:"reportName"` + PromptID string `json:"promptId"` + RunID string `json:"runId"` + Status string `json:"status"` + Error string `json:"error,omitempty"` + GeneratedAt time.Time `json:"generatedAt"` + ValidPeriod timeutil.Period `json:"validPeriod"` + Timezone string `json:"timezone"` + ProfileID string `json:"profileId,omitempty"` + BackendID string `json:"backendId,omitempty"` + ModelName string `json:"modelName,omitempty"` + SourceWarnings []weatherdata.SourceWarning `json:"sourceWarnings,omitempty"` + ValidationStatus promptexec.ValidationStatus `json:"validationStatus,omitempty"` + LLMDebugPath string `json:"llmDebugPath,omitempty"` + OutputPath string `json:"outputPath,omitempty"` } type BatchError struct { @@ -358,7 +354,7 @@ func RunBatchDetailed(ctx context.Context, req BatchRequest) (*BatchResult, erro noNotify: true, }) if reportResult != nil { - copyBatchReportPaths(&item, reportResult) + copyBatchReportDetails(&item, reportResult) } if err != nil { item.Status = "failed" @@ -381,7 +377,7 @@ func RunBatchDetailed(ctx context.Context, req BatchRequest) (*BatchResult, erro return nil, fmt.Errorf("run is not implemented") } -func copyBatchReportPaths(item *BatchReportResult, result *ReportResult) { +func copyBatchReportDetails(item *BatchReportResult, result *ReportResult) { item.LLMDebugPath = result.LLMDebugPath item.OutputPath = result.OutputPath item.ProfileID = result.ProfileID @@ -390,11 +386,6 @@ func copyBatchReportPaths(item *BatchReportResult, result *ReportResult) { item.Timezone = result.Timezone item.SourceWarnings = append([]weatherdata.SourceWarning(nil), result.SourceWarnings...) item.ValidationStatus = result.ValidationStatus - if result.Notification != nil { - item.NotificationStatus = result.Notification.Status - item.NotificationRunID = result.Notification.RunID - item.NotificationPipelineID = result.Notification.PipelineID - } } func batchInspectionCandidates(req BatchRequest, now time.Time) ([]report.Resolved, error) { diff --git a/internal/cli/output.go b/internal/cli/output.go index 4e6426c..c293669 100644 --- a/internal/cli/output.go +++ b/internal/cli/output.go @@ -33,21 +33,11 @@ func writeBatchStatus(stderr io.Writer, result *app.BatchResult) { return } for _, item := range result.Reports { - notificationFields := "" - if item.NotificationStatus != "" { - notificationFields += fmt.Sprintf(" notificationStatus=%q", item.NotificationStatus) - } - if item.NotificationRunID != "" { - notificationFields += fmt.Sprintf(" notificationRunId=%q", item.NotificationRunID) - } - if item.NotificationError != "" { - notificationFields += fmt.Sprintf(" notificationError=%q", item.NotificationError) - } if item.Status == "failed" { - _, _ = fmt.Fprintf(stderr, "report=%s status=failed error=%q%s\n", item.ReportID, item.Error, notificationFields) + _, _ = fmt.Fprintf(stderr, "report=%s status=failed error=%q\n", item.ReportID, item.Error) continue } - _, _ = fmt.Fprintf(stderr, "report=%s status=succeeded output=%q%s\n", item.ReportID, item.OutputPath, notificationFields) + _, _ = fmt.Fprintf(stderr, "report=%s status=succeeded output=%q\n", item.ReportID, item.OutputPath) } if result.Notification != nil { _, _ = fmt.Fprintf(stderr, "batchNotification status=%q", result.Notification.Status) diff --git a/internal/cli/run_test.go b/internal/cli/run_test.go index 48f9510..e77ab95 100644 --- a/internal/cli/run_test.go +++ b/internal/cli/run_test.go @@ -118,6 +118,14 @@ func TestRunActionReturnsFailureForBatchNotificationFailure(t *testing.T) { if summary.Status != summaryStatusFailed || summary.Total != 2 || summary.Succeeded != 2 || summary.Failed != 0 || summary.Notification == nil || summary.Notification.Status != "failed" { t.Fatalf("summary = %#v", summary) } + if !strings.Contains(stderr.String(), `batchNotification status="failed"`) { + t.Fatalf("stdout/stderr = %q/%q", stdout.String(), stderr.String()) + } + for _, field := range []string{"notificationStatus", "notificationRunId", "notificationPipelineId", "notificationError"} { + if strings.Contains(stdout.String(), field) || strings.Contains(stderr.String(), field) { + t.Fatalf("stdout/stderr includes removed field %q: %q/%q", field, stdout.String(), stderr.String()) + } + } } func TestInspectCommandIsUnknownAndAbsentFromHelp(t *testing.T) {