report

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package report generates certification reports from records.

Package report generates certification reports from records.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BadgeMarkdown

func BadgeMarkdown(repo, branch string) string

BadgeMarkdown returns a markdown snippet to embed in a README. repo is "owner/repo", branch is typically "main".

func FormatBadgeJSON

func FormatBadgeJSON(b Badge) ([]byte, error)

FormatBadgeJSON marshals the badge to pretty JSON.

func FormatCardMarkdown

func FormatCardMarkdown(c Card) string

FormatCardMarkdown renders the report card as a GitHub-friendly markdown block.

func FormatCardText

func FormatCardText(c Card) string

FormatCardText renders the report card as a human-readable text block.

func FormatDetailedText

func FormatDetailedText(d DetailedReport) string

FormatDetailedText produces a human-readable detailed report.

func FormatFullMarkdown

func FormatFullMarkdown(r FullReport) string

FormatFullMarkdown renders the complete report as a markdown document.

func FormatJSON

func FormatJSON(v any) ([]byte, error)

FormatJSON produces JSON output for a report.

func FormatText

func FormatText(h HealthReport) string

FormatText produces a human-readable text report.

Types

type AreaSummary

type AreaSummary struct {
	Path         string  `json:"path"`
	Total        int     `json:"total"`
	Failing      int     `json:"failing"`
	AverageScore float64 `json:"average_score"`
}

AreaSummary summarizes certification for a directory or package.

type Badge

type Badge struct {
	SchemaVersion int    `json:"schemaVersion"`
	Label         string `json:"label"`
	Message       string `json:"message"`
	Color         string `json:"color"`
	Style         string `json:"style,omitempty"`
	LogoColor     string `json:"logoColor,omitempty"`
}

Badge is a shields.io-compatible endpoint badge. See https://shields.io/badges/endpoint-badge

func GenerateBadge

func GenerateBadge(c Card) Badge

GenerateBadge creates a shields.io endpoint badge from a report card.

type Card

type Card struct {
	// Header
	Repository  string `json:"repository"`
	GeneratedAt string `json:"generated_at"`
	CommitSHA   string `json:"commit_sha,omitempty"`

	// Overall grade
	OverallGrade string  `json:"overall_grade"`
	OverallScore float64 `json:"overall_score"`
	PassRate     float64 `json:"pass_rate"`

	// Counts
	TotalUnits   int `json:"total_units"`
	Passing      int `json:"passing"`
	Failing      int `json:"failing"`
	Expired      int `json:"expired"`
	Observations int `json:"observations"`

	// Grade distribution
	GradeDistribution map[string]int `json:"grade_distribution"`

	// By-language summary
	Languages []LanguageCard `json:"languages"`

	// Top issues (up to 10)
	TopIssues []IssueCard `json:"top_issues,omitempty"`
}

Card is a concise, shareable certification report card.

func GenerateCard

func GenerateCard(records []domain.CertificationRecord, repo, commit string, now time.Time) Card

GenerateCard creates a report card from certification records.

type DetailedReport

type DetailedReport struct {
	HealthReport

	// Dimension-level averages
	Dimensions map[string]float64 `json:"dimensions,omitempty"`

	// By-language breakdown
	ByLanguage map[string]LanguageBreakdown `json:"by_language,omitempty"`

	// Expiring-soon units (within 14 days)
	ExpiringSoon []UnitSummary `json:"expiring_soon,omitempty"`

	// Highest-risk units (lowest scores)
	HighestRisk []UnitSummary `json:"highest_risk,omitempty"`

	// Failing/non-passing units with explanations
	Failing []UnitSummary `json:"failing,omitempty"`

	// Recurrently failing areas (directories with multiple failing units)
	RecurrentlyFailing []AreaSummary `json:"recurrently_failing,omitempty"`
}

DetailedReport extends HealthReport with richer analysis.

func Detailed

func Detailed(records []domain.CertificationRecord, now time.Time) DetailedReport

Detailed computes a full detailed report from certification records. Detailed computes a full detailed report from certification records.

type FullReport

type FullReport struct {
	// Header
	Repository  string `json:"repository"`
	CommitSHA   string `json:"commit_sha,omitempty"`
	GeneratedAt string `json:"generated_at"`

	// Summary card
	Card Card `json:"card"`

	// Every unit with full details
	Units []UnitReport `json:"units"`

	// Dimension averages across all units
	DimensionAverages map[string]float64 `json:"dimension_averages"`

	// By-language detail
	LanguageDetail []LanguageDetail `json:"language_detail"`
}

FullReport is a complete, per-unit certification report.

func GenerateFullReport

func GenerateFullReport(records []domain.CertificationRecord, repo, commit string, now time.Time) FullReport

GenerateFullReport creates a comprehensive per-unit report.

type HealthReport

type HealthReport struct {
	TotalUnits       int     `json:"total_units"`
	Certified        int     `json:"certified"`
	CertifiedWithObs int     `json:"certified_with_observations"`
	Probationary     int     `json:"probationary"`
	Expired          int     `json:"expired"`
	Decertified      int     `json:"decertified"`
	Exempt           int     `json:"exempt"`
	PassRate         float64 `json:"pass_rate"`
	AverageScore     float64 `json:"average_score"`
}

HealthReport summarizes the certification state of a repository.

func Health

func Health(records []domain.CertificationRecord) HealthReport

Health computes a health report from certification records.

type IssueCard

type IssueCard struct {
	UnitID string  `json:"unit_id"`
	Grade  string  `json:"grade"`
	Score  float64 `json:"score"`
	Reason string  `json:"reason"`
}

IssueCard describes a single unit needing attention.

type LanguageBreakdown

type LanguageBreakdown struct {
	Total        int     `json:"total"`
	Passing      int     `json:"passing"`
	AverageScore float64 `json:"average_score"`
}

LanguageBreakdown summarizes certification status for a single language.

type LanguageCard

type LanguageCard struct {
	Name         string  `json:"name"`
	Units        int     `json:"units"`
	AverageScore float64 `json:"average_score"`
	Grade        string  `json:"grade"`
}

LanguageCard summarizes one language in the report card.

type LanguageDetail

type LanguageDetail struct {
	Name              string         `json:"name"`
	Units             int            `json:"units"`
	AverageScore      float64        `json:"average_score"`
	Grade             string         `json:"grade"`
	GradeDistribution map[string]int `json:"grade_distribution"`
	TopScore          float64        `json:"top_score"`
	BottomScore       float64        `json:"bottom_score"`
}

LanguageDetail extends LanguageCard with grade distribution.

type UnitReport

type UnitReport struct {
	UnitID       string             `json:"unit_id"`
	UnitType     string             `json:"unit_type"`
	Path         string             `json:"path"`
	Language     string             `json:"language"`
	Symbol       string             `json:"symbol,omitempty"`
	Status       string             `json:"status"`
	Grade        string             `json:"grade"`
	Score        float64            `json:"score"`
	Confidence   float64            `json:"confidence"`
	Dimensions   map[string]float64 `json:"dimensions"`
	Observations []string           `json:"observations,omitempty"`
	Actions      []string           `json:"actions,omitempty"`
	CertifiedAt  string             `json:"certified_at"`
	ExpiresAt    string             `json:"expires_at"`
	Source       string             `json:"source"`
}

UnitReport is the complete certification detail for a single unit.

type UnitSummary

type UnitSummary struct {
	UnitID       string   `json:"unit_id"`
	Path         string   `json:"path"`
	Status       string   `json:"status"`
	Grade        string   `json:"grade"`
	Score        float64  `json:"score"`
	ExpiresAt    string   `json:"expires_at,omitempty"`
	Explanation  string   `json:"explanation,omitempty"`
	Observations []string `json:"observations,omitempty"`
}

UnitSummary is a compact representation of a unit for report lists.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL