feat(granskning): concept review queue (UI migration PR 6) (#1126)

* feat(granskning): concept scene 11 for the review queue

Reskins /pending to the concept: serif header with a Godkann alla primary,
Vantar/Godkanda/Avvisade seg with a count chip on the queue, source filter
as the far-right context picker, and op rows in the concept's row language
(source line, title, risk chip, inline Godkann pill + quiet Avvisa, hover
checkbox). Row click opens the detail as a right slide-over (convention 13)
with the operation preview, period-lock banner, and approve/reject in the
footer. The select-all header becomes the standard bulkbar that pops in on
first selection, carrying the type quick-picks as quiet links. All existing
functionality is preserved: bulk approve/reject with confirm dialogs,
rejection category + feedback, high-risk warnings, period-lock gating,
conversation deep-link filter, realtime refetch, auto-expired markers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(bookkeeping): concept seg styling for the Verifikat/Utkast toggle

The toggle used the old bordered container with a beige active tab: the
inverse of the concept seg used on every other page (muted container,
card-white active with hairline border). Founder feedback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(granskning): match concept scene 11 row language

Founder feedback against the rendered concept: the seg becomes
Vantar/Historik (Historik merges committed + rejected via two parallel
fetches, newest resolution first, distinguished by Godkand/Avvisad chips
with the rejection reason in the sub line); op rows get the concept's
actor circle with a thread line, uppercase source line, and the three
tinted action pills under the text (Godkann sage, Avvisa terracotta,
Visa detaljer neutral) instead of right-aligned hover actions. Risk chip
stays on the right edge; hover checkboxes and the bulkbar are unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(granskning): curved actor thread + boxed, legible detail panel

Founder feedback vs the rendered concept: the thread under the actor icon
now elbows toward the action row (rounded border corner) instead of a
straight line, and the slide-over frames the operation in its own bordered
box with the warning/rejection notes as separate boxed lines. preview_data
arrays shaped like a kontering (account/debit/credit rows, e.g.
preview_lines) now render as a proper Konto/Beskrivning/Debet/Kredit table
instead of the generic '3 rader' dump, so the panel actually says what the
agent is about to post.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(granskning): carry #842 failed_partial rendering through the rework

The failed_partial status (irreversible posting followed by a failed
step) landed on main while the review-queue rework was in flight; the
Historik rows and the detail slide-over now render its warning chip,
explanation, and posted_ids like main did.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-07-23 21:51:41 +02:00
committed by GitHub
co-authored by Claude Fable 5
parent 7a6f9dd167
commit 008b4710d3
4 changed files with 597 additions and 325 deletions
+14 -4
View File
@@ -415,7 +415,7 @@
"pending": {
"title": "Review",
"subtitle": "Operations waiting for approval",
"tab_pending": "Pending",
"tab_pending": "Waiting",
"tab_committed": "Approved",
"tab_rejected": "Rejected",
"tab_all": "All",
@@ -445,10 +445,10 @@
"badge_high_risk": "High risk",
"badge_approved": "Approved",
"badge_rejected": "Rejected",
"empty_pending_title": "No pending operations",
"empty_pending_title": "All clear.",
"empty_committed_title": "No approved operations",
"empty_rejected_title": "No rejected operations",
"empty_pending_description": "When an operation needs approval it will appear here for review.",
"empty_pending_description": "Nothing is waiting for your review. Operations that need approval appear here.",
"empty_finished_description": "Operations you have approved or rejected appear here.",
"bulk_confirm_intro": "Confirming will perform the following:",
"bulk_confirm_footer": "Operations run in order. Failed ones are skipped and reported afterwards.",
@@ -515,7 +515,17 @@
"badge_auto_expired": "Expired automatically",
"auto_expired_detail": "Expired automatically after 30 days without action. Nothing was booked.",
"badge_failed_partial": "Partially completed",
"failed_partial_detail": "The action was interrupted after an irreversible posting had already been made. What was posted remains and may need manual correction."
"failed_partial_detail": "The action was interrupted after an irreversible posting had already been made. What was posted remains and may need manual correction.",
"approve_all": "Approve all ({count})",
"bulkbar_selected": "selected",
"bulk_excluded_note": "{count, plural, one {1 needs individual review} other {# need individual review}}",
"badge_medium_risk": "Medium risk",
"badge_low_risk": "Low risk",
"show_conversation": "Show the conversation",
"tab_history": "History",
"details_btn": "Show details",
"empty_history_title": "No history yet",
"history_reason": "reason: \"{reason}\""
},
"deadlines": {
"title": "Deadlines",
+14 -4
View File
@@ -415,7 +415,7 @@
"pending": {
"title": "Granskning",
"subtitle": "Operationer som väntar på godkännande",
"tab_pending": "Väntande",
"tab_pending": "Väntar",
"tab_committed": "Godkända",
"tab_rejected": "Avvisade",
"tab_all": "Alla",
@@ -445,10 +445,10 @@
"badge_high_risk": "Hög risk",
"badge_approved": "Godkänd",
"badge_rejected": "Avvisad",
"empty_pending_title": "Inga väntande operationer",
"empty_pending_title": "Allt klart.",
"empty_committed_title": "Inga godkända operationer",
"empty_rejected_title": "Inga avvisade operationer",
"empty_pending_description": "När en operation kräver godkännande visas den här för granskning.",
"empty_pending_description": "Inget väntar på din granskning. När en operation kräver godkännande visas den här.",
"empty_finished_description": "Operationer du har godkänt eller avvisat visas här.",
"bulk_confirm_intro": "Genom att bekräfta utförs följande:",
"bulk_confirm_footer": "Operationerna körs i ordning. Misslyckade hoppas över och rapporteras efteråt.",
@@ -515,7 +515,17 @@
"badge_auto_expired": "Utgick automatiskt",
"auto_expired_detail": "Utgick automatiskt efter 30 dagar utan åtgärd. Inget bokfördes.",
"badge_failed_partial": "Delvis genomförd",
"failed_partial_detail": "Åtgärden avbröts efter att en oåterkallelig bokföring redan hade skett. Det som bokfördes står kvar och kan behöva rättas manuellt."
"failed_partial_detail": "Åtgärden avbröts efter att en oåterkallelig bokföring redan hade skett. Det som bokfördes står kvar och kan behöva rättas manuellt.",
"approve_all": "Godkänn alla ({count})",
"bulkbar_selected": "{count, plural, one {markerad} other {markerade}}",
"bulk_excluded_note": "{count, plural, one {1 kräver enskild granskning} other {# kräver enskild granskning}}",
"badge_medium_risk": "Medel risk",
"badge_low_risk": "Låg risk",
"show_conversation": "Visa konversationen",
"tab_history": "Historik",
"details_btn": "Visa detaljer",
"empty_history_title": "Ingen historik ännu",
"history_reason": "orsak: \"{reason}\""
},
"deadlines": {
"title": "Deadlines",