package events

import (
	"bit.admedia.com/scm/ad/adpilot-indexing-commit-intel.com/internal/contracts/metadata"
)

// CommitAnalysisReadyEvent is published when commit intelligence analysis completes.
type CommitAnalysisReadyEvent struct {
	metadata.Envelope
	RepoID             string   `json:"repo_id"`
	CommitSHA          string   `json:"commit_sha"`
	AnalysisID         string   `json:"analysis_id"`
	ImpactedSymbols    []string `json:"impacted_symbols,omitempty"`
	ChangedFiles       []string `json:"changed_files,omitempty"`
	Summary            string   `json:"summary,omitempty"`
	GraphSchemaVersion string   `json:"graph_schema_version,omitempty"`
}

// NewCommitAnalysisReadyEvent creates a v1 commit-analysis-ready event.
func NewCommitAnalysisReadyEvent(eventID, repoID, commitSHA, analysisID string) CommitAnalysisReadyEvent {
	return CommitAnalysisReadyEvent{
		Envelope:   metadata.NewEnvelope(eventID),
		RepoID:     repoID,
		CommitSHA:  commitSHA,
		AnalysisID: analysisID,
	}
}
