Ajoute l'historique des versions des questions soumises par les Citoyens
Build and deploy / deploy (push) Successful in 35s

Nouvelle table chariot_submission_history (append-only, comme
points_log) : chariot_submissions ne garde que la valeur actuelle
(upsert), donc sans ce journal les Archontes ne voyaient jamais les
versions précédentes d'une question modifiée plusieurs fois.
submit_chariot_question() y écrit désormais à chaque changement réel.

Sur /char/questions, chaque suggestion affiche un lien "Historique (N)"
(visible seulement si la personne a déjà modifié sa proposition) qui
déplie les versions précédentes avec leur date.
This commit is contained in:
Valentin ROBIN
2026-08-22 00:16:42 +02:00
parent 6badff38af
commit ec6b1920af
4 changed files with 110 additions and 11 deletions
+34
View File
@@ -899,6 +899,37 @@ exception
when duplicate_object then null;
end $$;
-- Historique append-only (comme points_log) des versions successives d'une
-- proposition : chariot_submissions ne garde que la valeur courante (upsert),
-- donc sans ce journal les Archontes ne verraient jamais les versions
-- précédentes d'une question modifiée plusieurs fois. Écrit uniquement par
-- submit_chariot_question() (aucune policy insert, comme points_log).
create table if not exists public.chariot_submission_history (
id bigint generated always as identity primary key,
user_id uuid not null references public.profiles (id) on delete cascade,
text text not null,
created_at timestamptz not null default now()
);
alter table public.chariot_submission_history enable row level security;
revoke insert, update, delete on public.chariot_submission_history from authenticated, anon;
grant select on public.chariot_submission_history to authenticated;
drop policy if exists "chariot_submission_history readable by owner or judges" on public.chariot_submission_history;
create policy "chariot_submission_history readable by owner or judges"
on public.chariot_submission_history for select to authenticated
using (
user_id = auth.uid()
or exists (select 1 from public.profiles p where p.id = auth.uid() and p.role = 'judge')
);
do $$
begin
alter publication supabase_realtime add table public.chariot_submission_history;
exception
when duplicate_object then null;
end $$;
-- Seul point d'entrée pour proposer/modifier sa question. Réutilise
-- settings.tribunal_date comme déclencheur de gel — même philosophie que
-- submit_icarus_score() : une fois l'Agora commencée, no-op silencieux
@@ -943,6 +974,9 @@ begin
set text = excluded.text,
updated_at = now();
insert into public.chariot_submission_history (user_id, text)
values (auth.uid(), trim(p_text));
select * into v_row from public.chariot_submissions where user_id = auth.uid();
return v_row;
end;