test: centralize evidence passport states

This commit is contained in:
ik
2026-09-21 17:54:40 +07:00
parent 2729e7a035
commit de2470010c
5 changed files with 21 additions and 5 deletions
+2 -2
View File
@@ -1,10 +1,10 @@
---
import SourceBadge from "./SourceBadge.astro";
import { ago, freshnessStatus } from "../lib/api";
import { ago, freshnessStatus, passportDisplayStatus } from "../lib/api";
type Props = { sources: string[]; sourceUrl?: string | null; observedAt?: string | null; periodLabel?: string | null; completeness?: number | null; confidence?: number | null; sampleSize?: number | null; independentPlayers?: number | null; coordinatePrecision?: "exact" | "approximate" | "area" | "missing" | null; sourceConflicts?: string[]; status?: "verified" | "unverified" | "incomplete" | "insufficient" | "blocked" };
const { sources, sourceUrl, observedAt, periodLabel = null, completeness = null, confidence = null, sampleSize = null, independentPlayers = null, coordinatePrecision = null, sourceConflicts = [], status = "verified" } = Astro.props as Props;
const freshness = freshnessStatus(observedAt);
const displayStatus = sourceConflicts.length ? "conflict" : status === "verified" && freshness === "stale" ? "stale" : status;
const displayStatus = passportDisplayStatus(status, freshness, sourceConflicts.length > 0);
const statusLabels = { verified: "Учтено", unverified: "Ждёт проверки", incomplete: "Неполные данные", insufficient: "Недостаточно данных", blocked: "Источник ограничен", conflict: "Источники расходятся", stale: "Данные устарели" };
const completenessLabel = completeness == null ? "Не рассчитана" : `${Math.min(100, Math.max(0, completeness))}% полей`;
const precisionLabels = { exact: "точные", approximate: "приблизительные", area: "район", missing: "не указаны" };