Close Campaign interface audit gaps
This commit is contained in:
@@ -5,6 +5,7 @@ import { DismissibleAlert } from "@govoplan/core-webui";
|
||||
import { PageTitle } from "@govoplan/core-webui";
|
||||
import VersionLine from "./components/VersionLine";
|
||||
import { LoadingFrame } from "@govoplan/core-webui";
|
||||
import { ActionBlockerHint, DocumentationHelpLink } from "@govoplan/core-webui";
|
||||
import { useCampaignWorkspaceData } from "./hooks/useCampaignWorkspaceData";
|
||||
|
||||
export default function CampaignAuditPage({ settings, campaignId }: {settings: ApiSettings;campaignId: string;}) {
|
||||
@@ -27,7 +28,27 @@ export default function CampaignAuditPage({ settings, campaignId }: {settings: A
|
||||
|
||||
<LoadingFrame loading={loading} label="i18n:govoplan-campaign.loading_audit_data.af52b968">
|
||||
<Card title="i18n:govoplan-campaign.recent_audit_events.7ec32b1d">
|
||||
<p className="muted">i18n:govoplan-campaign.campaign_specific_audit_api_integration_will_be_.e53c8280</p>
|
||||
<ActionBlockerHint
|
||||
tone="info"
|
||||
reason={{
|
||||
summary: "Campaign-specific audit projection is not available on this page.",
|
||||
details: "Campaign actions already emit bounded platform audit evidence. Authorized readers can inspect it in the Audit administration surface.",
|
||||
requiredAction: "Open tenant audit and filter by the campaign identifier.",
|
||||
actor: "Audit reader or system operator",
|
||||
target: "Administration > Tenant audit"
|
||||
}}
|
||||
documentation={{
|
||||
topicId: "campaigns.reference.composition-assurance",
|
||||
documentationType: "admin"
|
||||
}}
|
||||
/>
|
||||
<DocumentationHelpLink
|
||||
reference={{
|
||||
topicId: "campaigns.reference.composition-assurance",
|
||||
documentationType: "user"
|
||||
}}
|
||||
label="Open Campaign assurance documentation"
|
||||
/>
|
||||
</Card>
|
||||
</LoadingFrame>
|
||||
</div>);
|
||||
|
||||
@@ -29,6 +29,11 @@ export default function CampaignJsonView({ settings, campaignId }: {settings: Ap
|
||||
</div>
|
||||
</div>
|
||||
{error && <DismissibleAlert tone="danger" resetKey={error} floating>{error}</DismissibleAlert>}
|
||||
<DismissibleAlert tone="warning" dismissible={false}>
|
||||
This expert view contains the complete authorized campaign configuration,
|
||||
including recipient and message fields that may contain personal data.
|
||||
Download and share it only for an authorized purpose.
|
||||
</DismissibleAlert>
|
||||
<LoadingFrame loading={loading} label="i18n:govoplan-campaign.loading_json.812c7a50">
|
||||
<Card>
|
||||
{!loading || version ? <pre className="code-panel">{JSON.stringify(campaignJson, null, 2)}</pre> : <pre className="code-panel">{"{}"}</pre>}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useState } from "react";
|
||||
import { Link2, X } from "lucide-react";
|
||||
import { Button, Dialog, i18nMessage } from "@govoplan/core-webui";
|
||||
import { Button, Dialog, DismissibleAlert, i18nMessage } from "@govoplan/core-webui";
|
||||
|
||||
import type {
|
||||
CampaignAttachmentPreviewFile,
|
||||
@@ -108,7 +108,11 @@ export default function AttachmentLinkingPreview({
|
||||
value={loading ? "..." : preview?.shared_file_count ?? "—"}
|
||||
/>
|
||||
</div>
|
||||
{error && <p className="review-flow-inline-note is-danger">{error}</p>}
|
||||
{error && (
|
||||
<DismissibleAlert tone="danger" compact dismissible={false}>
|
||||
{error}
|
||||
</DismissibleAlert>
|
||||
)}
|
||||
{!error && unlinkedCount > 0 && (
|
||||
<p className="review-flow-inline-note is-stale">
|
||||
i18n:govoplan-campaign.unlinked_candidate_files_are_not_yet_part_of_the.b8fd5998
|
||||
|
||||
Reference in New Issue
Block a user