feat: split name into first_name + last_name across users, persons, and companies
Cross-cutting migration affecting the entire stack: - Database: 3 migrations splitting name columns with data migration - Models: first_name/last_name on User, Person; contact_first_name/contact_last_name on Company; backward-compatible name accessors - API: all resources return first_name, last_name, full_name; assignablePersons endpoint updated - Requests: validation rules updated for all person/user/company forms - Services: VolunteerRegistrationService, ShiftAssignmentService, InvitationService updated - Frontend: TypeScript types, Zod schemas, all forms split into Voornaam/Achternaam fields - Display: all person/user name references use full_name; initials use first_name[0]+last_name[0] - Tests: all 371 tests passing - Docs: SCHEMA.md and API.md updated Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ const { mutate: logout, isPending: isLoggingOut } = useLogout()
|
||||
const user = computed(() => authStore.user)
|
||||
|
||||
const initials = computed(() => {
|
||||
const name = user.value?.name?.trim() ?? ''
|
||||
const name = user.value?.full_name?.trim() ?? ''
|
||||
if (!name)
|
||||
return '?'
|
||||
const parts = name.split(/\s+/).filter(Boolean)
|
||||
@@ -48,7 +48,7 @@ function handleLogout() {
|
||||
<VImg
|
||||
v-if="avatarSrc"
|
||||
:src="avatarSrc"
|
||||
:alt="user?.name ?? ''"
|
||||
:alt="user?.full_name ?? ''"
|
||||
cover
|
||||
/>
|
||||
<span
|
||||
@@ -67,7 +67,7 @@ function handleLogout() {
|
||||
<VList>
|
||||
<VListItem class="text-high-emphasis">
|
||||
<VListItemTitle class="font-weight-semibold">
|
||||
{{ user?.name ?? '—' }}
|
||||
{{ user?.full_name ?? '—' }}
|
||||
</VListItemTitle>
|
||||
<VListItemSubtitle class="text-wrap">
|
||||
{{ user?.email ?? '' }}
|
||||
|
||||
Reference in New Issue
Block a user