Remove per-report batch notification state

This commit is contained in:
2026-08-01 21:56:25 +00:00
parent 76cd399c76
commit 8d6ab0eb56
3 changed files with 28 additions and 39 deletions

View File

@@ -124,26 +124,22 @@ type BatchNotificationReport struct {
} }
type BatchReportResult struct { type BatchReportResult struct {
ReportID report.ID `json:"reportId"` ReportID report.ID `json:"reportId"`
ReportName string `json:"reportName"` ReportName string `json:"reportName"`
PromptID string `json:"promptId"` PromptID string `json:"promptId"`
RunID string `json:"runId"` RunID string `json:"runId"`
Status string `json:"status"` Status string `json:"status"`
Error string `json:"error,omitempty"` Error string `json:"error,omitempty"`
NotificationStatus string `json:"notificationStatus,omitempty"` GeneratedAt time.Time `json:"generatedAt"`
NotificationRunID string `json:"notificationRunId,omitempty"` ValidPeriod timeutil.Period `json:"validPeriod"`
NotificationPipelineID string `json:"notificationPipelineId,omitempty"` Timezone string `json:"timezone"`
NotificationError string `json:"notificationError,omitempty"` ProfileID string `json:"profileId,omitempty"`
GeneratedAt time.Time `json:"generatedAt"` BackendID string `json:"backendId,omitempty"`
ValidPeriod timeutil.Period `json:"validPeriod"` ModelName string `json:"modelName,omitempty"`
Timezone string `json:"timezone"` SourceWarnings []weatherdata.SourceWarning `json:"sourceWarnings,omitempty"`
ProfileID string `json:"profileId,omitempty"` ValidationStatus promptexec.ValidationStatus `json:"validationStatus,omitempty"`
BackendID string `json:"backendId,omitempty"` LLMDebugPath string `json:"llmDebugPath,omitempty"`
ModelName string `json:"modelName,omitempty"` OutputPath string `json:"outputPath,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 { type BatchError struct {
@@ -358,7 +354,7 @@ func RunBatchDetailed(ctx context.Context, req BatchRequest) (*BatchResult, erro
noNotify: true, noNotify: true,
}) })
if reportResult != nil { if reportResult != nil {
copyBatchReportPaths(&item, reportResult) copyBatchReportDetails(&item, reportResult)
} }
if err != nil { if err != nil {
item.Status = "failed" item.Status = "failed"
@@ -381,7 +377,7 @@ func RunBatchDetailed(ctx context.Context, req BatchRequest) (*BatchResult, erro
return nil, fmt.Errorf("run is not implemented") 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.LLMDebugPath = result.LLMDebugPath
item.OutputPath = result.OutputPath item.OutputPath = result.OutputPath
item.ProfileID = result.ProfileID item.ProfileID = result.ProfileID
@@ -390,11 +386,6 @@ func copyBatchReportPaths(item *BatchReportResult, result *ReportResult) {
item.Timezone = result.Timezone item.Timezone = result.Timezone
item.SourceWarnings = append([]weatherdata.SourceWarning(nil), result.SourceWarnings...) item.SourceWarnings = append([]weatherdata.SourceWarning(nil), result.SourceWarnings...)
item.ValidationStatus = result.ValidationStatus 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) { func batchInspectionCandidates(req BatchRequest, now time.Time) ([]report.Resolved, error) {

View File

@@ -33,21 +33,11 @@ func writeBatchStatus(stderr io.Writer, result *app.BatchResult) {
return return
} }
for _, item := range result.Reports { 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" { 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 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 { if result.Notification != nil {
_, _ = fmt.Fprintf(stderr, "batchNotification status=%q", result.Notification.Status) _, _ = fmt.Fprintf(stderr, "batchNotification status=%q", result.Notification.Status)

View File

@@ -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" { 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) 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) { func TestInspectCommandIsUnknownAndAbsentFromHelp(t *testing.T) {