# Phase 9: Admin Panel Rearchitecture - Pattern Map **Mapped:** 2026-06-12 **Files analyzed:** 14 **Analogs found:** 14 / 14 --- ## File Classification | New/Modified File | Role | Data Flow | Closest Analog | Match Quality | |---|---|---|---|---| | `frontend/src/layouts/AdminLayout.vue` | layout | request-response | `frontend/src/layouts/AuthLayout.vue` | exact | | `frontend/src/components/admin/AdminSidebar.vue` | component | request-response | `frontend/src/components/layout/AppSidebar.vue` | exact | | `frontend/src/views/admin/AdminOverviewView.vue` | view | request-response | `frontend/src/components/admin/AdminUsersTab.vue` | role-match | | `frontend/src/views/admin/AdminUsersView.vue` | view | CRUD | `frontend/src/components/admin/AdminUsersTab.vue` | exact | | `frontend/src/views/admin/AdminQuotasView.vue` | view | CRUD | `frontend/src/components/admin/AdminQuotasTab.vue` | exact | | `frontend/src/views/admin/AdminAiView.vue` | view | CRUD | `frontend/src/components/admin/AdminAiConfigTab.vue` | exact | | `frontend/src/views/admin/AdminAuditView.vue` | view | request-response | `frontend/src/components/admin/AuditLogTab.vue` | exact | | `frontend/src/router/index.js` | config | request-response | `frontend/src/router/index.js` (self) | exact | | `frontend/src/views/auth/LoginView.vue` | view | request-response | `frontend/src/views/auth/LoginView.vue` (self) | exact | | `frontend/tailwind.config.js` | config | — | `frontend/tailwind.config.js` (self) | exact | | `backend/api/admin/overview.py` | controller | request-response | `backend/api/admin/users.py` | exact | | `backend/api/admin/__init__.py` | config | — | `backend/api/admin/__init__.py` (self) | exact | | `backend/tests/test_admin_overview.py` | test | request-response | `backend/tests/test_admin_api.py` | exact | | Phase 8 backend sub-packages (comment purge) | — | — | All files in `backend/api/admin/`, `backend/api/auth/`, `backend/api/documents/` | — | --- ## Pattern Assignments ### `frontend/src/layouts/AdminLayout.vue` (layout, request-response) **Analog:** `frontend/src/layouts/AuthLayout.vue` **Complete analog** (lines 1–12): ```vue ``` **AdminLayout pattern to implement** (mirrors above structure, adapted for sidebar layout): ```vue ``` **Critical constraint:** `App.vue` already has `` in its `v-else` branch. When `/admin` resolves, that router-view renders `AdminLayout`, and `AdminLayout`'s own `` renders child views. Do NOT add a third `v-else-if` branch to `App.vue` — this causes double rendering (RESEARCH.md Pitfall 2). The padding `p-8 max-w-5xl mx-auto` moves from `AdminView.vue` line 2 to `AdminLayout.vue`'s content wrapper. The four tab components have no top-level padding, so double-padding risk does not apply here. --- ### `frontend/src/components/admin/AdminSidebar.vue` (component, request-response) **Analog:** `frontend/src/components/layout/AppSidebar.vue` **Container pattern** (lines 2–7): ```vue