feat(storage): index exact content references
This commit is contained in:
@@ -36,8 +36,17 @@ export interface ArtifactHealth {
|
||||
limitations: string[];
|
||||
};
|
||||
content_references: {
|
||||
state: "not-indexed";
|
||||
storage_model: "materialized-copies";
|
||||
state: "not-indexed" | "indexed";
|
||||
storage_model:
|
||||
| "materialized-copies"
|
||||
| "materialized-copies-with-reference-index";
|
||||
result_id: string | null;
|
||||
indexed_at_utc: string | null;
|
||||
logical_reference_count: number;
|
||||
canonical_content_count: number;
|
||||
duplicate_reference_count: number;
|
||||
exact_duplicate_bytes: number;
|
||||
physical_reclamation_applied: false;
|
||||
storage_migration_authorized: false;
|
||||
next_gate: string;
|
||||
};
|
||||
@@ -66,6 +75,15 @@ export async function fetchArtifactHealth(
|
||||
|| !Array.isArray(document.inventory.scopes)
|
||||
|| !isRecord(document.exact_audit)
|
||||
|| !isRecord(document.content_references)
|
||||
|| !["not-indexed", "indexed"].includes(
|
||||
String(document.content_references.state),
|
||||
)
|
||||
|| ![
|
||||
"materialized-copies",
|
||||
"materialized-copies-with-reference-index",
|
||||
].includes(String(document.content_references.storage_model))
|
||||
|| document.content_references.physical_reclamation_applied !== false
|
||||
|| document.content_references.storage_migration_authorized !== false
|
||||
) {
|
||||
throw new Error("Ответ здоровья данных не соответствует контракту.");
|
||||
}
|
||||
|
||||
@@ -135,6 +135,7 @@ export function ArtifactHealthWorkspace() {
|
||||
1,
|
||||
);
|
||||
const exactCurrent = health.exact_audit.state === "exact-current";
|
||||
const referencesIndexed = health.content_references.state === "indexed";
|
||||
return (
|
||||
<div className="artifact-health-workspace">
|
||||
<section className="artifact-health-lead">
|
||||
@@ -242,21 +243,55 @@ export function ArtifactHealthWorkspace() {
|
||||
<header>
|
||||
<div>
|
||||
<span className="section-eyebrow">CONTENT REFERENCES</span>
|
||||
<h3>Материализованные копии</h3>
|
||||
<h3>
|
||||
{referencesIndexed
|
||||
? "Индекс точного контента"
|
||||
: "Материализованные копии"}
|
||||
</h3>
|
||||
</div>
|
||||
<StatusBadge tone="warning">Не индексировано</StatusBadge>
|
||||
<StatusBadge tone={referencesIndexed ? "success" : "warning"}>
|
||||
{referencesIndexed ? "Индекс активен" : "Не индексировано"}
|
||||
</StatusBadge>
|
||||
</header>
|
||||
<p>
|
||||
Content-addressed ссылки ещё не включены. Миграция хранения не
|
||||
авторизована: сначала выбираются классы дублей с максимальным
|
||||
измеренным эффектом.
|
||||
</p>
|
||||
<dl>
|
||||
<div><dt>Режим</dt><dd>Наблюдение</dd></div>
|
||||
<div><dt>Удаление</dt><dd>Запрещено</dd></div>
|
||||
<div><dt>Автомиграция</dt><dd>Запрещена</dd></div>
|
||||
<div><dt>Следующий gate</dt><dd>Content refs / chunking</dd></div>
|
||||
</dl>
|
||||
{referencesIndexed ? (
|
||||
<>
|
||||
<p>
|
||||
Логические пути сведены к проверяемым SHA-256-ссылкам. Исходные
|
||||
файлы не изменены, физическое освобождение места не выполнялось.
|
||||
</p>
|
||||
<dl>
|
||||
<div>
|
||||
<dt>Логических путей</dt>
|
||||
<dd>{formatInteger(health.content_references.logical_reference_count)}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>Канонических объектов</dt>
|
||||
<dd>{formatInteger(health.content_references.canonical_content_count)}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>Ссылок на дубли</dt>
|
||||
<dd>{formatInteger(health.content_references.duplicate_reference_count)}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>Измеренный резерв</dt>
|
||||
<dd>{formatBytes(health.content_references.exact_duplicate_bytes)}</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<p>
|
||||
Content-addressed ссылки ещё не включены. Исходные файлы
|
||||
остаются только наблюдаемыми, автоматическое удаление запрещено.
|
||||
</p>
|
||||
<dl>
|
||||
<div><dt>Режим</dt><dd>Наблюдение</dd></div>
|
||||
<div><dt>Удаление</dt><dd>Запрещено</dd></div>
|
||||
<div><dt>Автомиграция</dt><dd>Запрещена</dd></div>
|
||||
<div><dt>Индекс</dt><dd>Отсутствует</dd></div>
|
||||
</dl>
|
||||
</>
|
||||
)}
|
||||
</GlassSurface>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user