40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class HealthReport:
|
|
"""Transparent aggregate findings from a read-only library analysis."""
|
|
|
|
score: Optional[float]
|
|
total_references: int
|
|
scored_references: int
|
|
healthy_references: int
|
|
missing_references: int
|
|
unique_missing_filenames: int
|
|
disk_tracks: int
|
|
duplicate_filename_groups: int
|
|
duplicate_files: int
|
|
suspected_cloud_conflict_groups: int
|
|
suspected_cloud_conflict_files: int
|
|
unused_tracks: int
|
|
suggested_matches: int
|
|
broken_symlinks: int
|
|
static_crates: int
|
|
smart_crates: int
|
|
smart_crate_containers: int
|
|
unknown_crates: int
|
|
dynamic_references_excluded: int
|
|
database_present: bool
|
|
database_entries: int
|
|
database_library_matches: int
|
|
database_unmatched_entries: int
|
|
database_missing_paths: int
|
|
database_missing_unique_filenames: int
|
|
tracks_missing_from_database: int
|
|
duplicate_database_paths: int
|
|
|
|
@property
|
|
def score_basis(self) -> str:
|
|
return "Resolved non-dynamic references / non-dynamic references scored"
|