rdev/internal/domain/sdlc_callback.go
jordan d69da6d627 feat: add structured logging infrastructure and SDLC extensions
Major changes:
- Add internal/logging package with field constants, context propagation,
  sensitive data auto-redaction, and per-component log levels
- Add worker timeout constants (TimeoutQuickOp, TimeoutHealthCheck, etc.)
- Extend SDLC with callback handlers, generate endpoints, and executor
- Add new cookbook trees for aeries and slackpath progression
- Add skeleton templates for queue, realtime, and microservices
- Add worker component template with async job processing
- Refactor services and handlers to use new logging infrastructure
- Split component.go into component_infra.go and component_listing.go

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 22:56:04 -07:00

73 lines
2.4 KiB
Go

// Package domain contains pure domain models with no external dependencies.
package domain
import "slices"
// SDLCGenerateRequest describes an artifact generation request.
type SDLCGenerateRequest struct {
// ArtifactType is the type of artifact to generate: spec, design, tasks, code, qa
ArtifactType string `json:"artifact_type"`
// TaskID is the specific task to implement (required for artifact_type: "code")
TaskID string `json:"task_id,omitempty"`
// Provider specifies which code agent to use (optional, defaults to system default)
Provider string `json:"provider,omitempty"`
}
// ValidArtifactTypesForGenerate lists artifact types that can be generated.
var ValidArtifactTypesForGenerate = []string{"spec", "design", "tasks", "code", "qa"}
// IsValidGenerateArtifactType returns true if the artifact type is valid for generation.
func IsValidGenerateArtifactType(artifactType string) bool {
return slices.Contains(ValidArtifactTypesForGenerate, artifactType)
}
// SDLCCallbackPayload is sent when a build completes to update SDLC artifact status.
type SDLCCallbackPayload struct {
// TaskID is the work queue task identifier
TaskID string `json:"task_id"`
// ProjectID is the project this task belongs to
ProjectID string `json:"project_id"`
// Feature is the feature slug this artifact belongs to
Feature string `json:"feature"`
// ArtifactType identifies which artifact was generated
ArtifactType string `json:"artifact_type"`
// Success indicates whether the generation succeeded
Success bool `json:"success"`
// CommitSHA is the git commit SHA if changes were committed
CommitSHA string `json:"commit_sha,omitempty"`
// Error contains the error message if generation failed
Error string `json:"error,omitempty"`
}
// SDLCGenerateResponse is the response for artifact generation requests.
type SDLCGenerateResponse struct {
// TaskID is the work queue task identifier for tracking
TaskID string `json:"task_id"`
// ProjectID is the project identifier
ProjectID string `json:"project_id"`
// Feature is the feature slug
Feature string `json:"feature"`
// ArtifactType is the type of artifact being generated
ArtifactType string `json:"artifact_type"`
// Status is the initial task status (always "pending")
Status string `json:"status"`
// StatusURL is the URL to check task status
StatusURL string `json:"status_url"`
// StreamURL is the URL for real-time event streaming
StreamURL string `json:"stream_url"`
}