feat: complete Epic 0 — foundation migration & infrastructure setup

Stories 0.2-0.5: rename folders→declarations (backend+frontend), configure
Redis for cache/queue/sessions, add foundation database migrations
(permissions, archived_at), replace DeclarationStatus enum with architecture
lifecycle values, create DeclarationObserver for status transition validation
and auto-archive, fix controller status transitions to respect observer rules.

93 tests pass (240 assertions).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 18:25:32 +00:00
parent d380df4074
commit fd43a6f429
105 changed files with 3899 additions and 1558 deletions

View File

@@ -1,6 +1,14 @@
<script setup lang="ts">
import { Link, usePage } from '@inertiajs/vue3';
import { BookOpen, Briefcase, Building2, Folder, HelpCircle, LayoutGrid, Users } from 'lucide-vue-next';
import {
BookOpen,
Briefcase,
Building2,
FileStack,
HelpCircle,
LayoutGrid,
Users,
} from 'lucide-vue-next';
import { computed } from 'vue';
import NavFooter from '@/components/NavFooter.vue';
import NavMain from '@/components/NavMain.vue';
@@ -14,9 +22,9 @@ import {
SidebarMenuButton,
SidebarMenuItem,
} from '@/components/ui/sidebar';
import { dashboard } from '@/routes';
import type { NavItem } from '@/types';
import AppLogo from './AppLogo.vue';
import { dashboard } from '@/routes';
import WorkspaceSwitcher from './WorkspaceSwitcher.vue';
const page = usePage();
@@ -36,9 +44,9 @@ const mainNavItems = computed<NavItem[]>(() => {
icon: Briefcase,
},
{
title: 'Dossiers',
href: '/folders',
icon: Folder,
title: 'Déclarations',
href: '/declarations',
icon: FileStack,
},
);
}
@@ -90,9 +98,16 @@ const footerNavItems: NavItem[] = [
<SidebarContent>
<NavMain :items="mainNavItems" />
<template
v-if="['admin', 'superadmin'].includes(String($page.props.auth.user?.group ?? ''))"
v-if="
['admin', 'superadmin'].includes(
String($page.props.auth.user?.group ?? ''),
)
"
>
<NavMain :items="administrationNavItems" label="Administration" />
<NavMain
:items="administrationNavItems"
label="Administration"
/>
</template>
</SidebarContent>