feat: complete governed documentation sources

This commit is contained in:
2026-07-30 14:26:43 +02:00
parent 511930ea56
commit da15645dba
6 changed files with 1104 additions and 36 deletions

View File

@@ -54,9 +54,20 @@ export type DocsOptionalModuleEvidence = {
};
export type DocsSource = {
id: string;
kind: string;
owner_module_id: string;
label: string;
source: string;
layer: string;
state: "configured" | "disabled" | "unavailable";
state_reason?: string | null;
inspection_url: string;
provenance: {
source: string;
version?: string | null;
revision?: string | null;
published_at?: string | null;
checksum?: string | null;
};
};
export type DocsDocumentationCondition = {
@@ -94,6 +105,7 @@ export type DocsDocumentationTopic = {
modules: string[];
capabilities: string[];
scopes: string[];
configuration: string[];
};
audience: string[];
order: number;
@@ -105,6 +117,12 @@ export type DocsDocumentationTopic = {
related_modules: string[];
unlocks: string[];
configuration_keys: string[];
configuration_states: Array<{
key: string;
state: "enabled" | "disabled" | "inherited" | "unavailable";
source?: string | null;
reason?: string | null;
}>;
metadata: Record<string, unknown>;
};

View File

@@ -559,7 +559,8 @@ function UnavailableDocumentationReason({ topic }: { topic: DocsDocumentationTop
const rows = [
["i18n:govoplan-docs.modules.04e9462c", topic.blockers.modules],
["i18n:govoplan-docs.capabilities.ca09c54b", topic.blockers.capabilities],
["i18n:govoplan-docs.permissions.d06d5557", topic.blockers.scopes]
["i18n:govoplan-docs.permissions.d06d5557", topic.blockers.scopes],
["Configuration", topic.blockers.configuration]
].filter(([, values]) => Array.isArray(values) && values.length);
return (
<div className="docs-unavailable-reason">
@@ -975,9 +976,9 @@ function EvidenceList({ modules, sources }: { modules: DocsOptionalModuleEvidenc
</div>
)}
{sources.map((item) =>
<div key={item.source}>
<dt>{item.layer}</dt>
<dd><strong>{item.label}</strong><span className="muted"> · {item.source}</span></dd>
<div key={item.id}>
<dt><StatusBadge status={item.state === "configured" ? "success" : item.state === "disabled" ? "inactive" : "warning"} label={item.state} /></dt>
<dd><strong>{item.label}</strong><span className="muted"> · {item.owner_module_id} · {item.kind} · {item.provenance.source}</span></dd>
</div>
)}
</dl>