Ich habe gestern vergessen zu pushen

Dieser Commit ist enthalten in:
Claude Project Manager
2025-09-29 19:21:38 +02:00
Ursprung e275b8fcd6
Commit 6466b36ddf
12 geänderte Dateien mit 125 neuen und 25 gelöschten Zeilen

Datei anzeigen

@ -63,6 +63,11 @@ export default function EmployeeCard({ employee, onClick }: EmployeeCardProps) {
<p className="text-body text-secondary">
<span className="font-medium">Position:</span> {employee.position}
</p>
{employee.officialTitle && (
<p className="text-body text-secondary">
<span className="font-medium">Amtsbezeichnung:</span> {employee.officialTitle}
</p>
)}
<p className="text-body text-secondary">
<span className="font-medium">Dienststelle:</span> {employee.department}
</p>

Datei anzeigen

@ -168,6 +168,12 @@ export default function EmployeeDetail() {
<span className="text-tertiary">Position:</span>
<p className="text-secondary font-medium">{employee.position}</p>
</div>
{employee.officialTitle && (
<div>
<span className="text-tertiary">Amtsbezeichnung:</span>
<p className="text-secondary font-medium">{employee.officialTitle}</p>
</div>
)}
<div>
<span className="text-tertiary">Dienststelle:</span>
<p className="text-secondary font-medium">{employee.department}</p>

Datei anzeigen

@ -17,6 +17,7 @@ export default function EmployeeForm() {
lastName: '',
employeeNumber: '',
position: '',
officialTitle: '',
department: '',
email: '',
phone: '',
@ -219,6 +220,7 @@ export default function EmployeeForm() {
validUntil: new Date(new Date().setFullYear(new Date().getFullYear() + 5)),
issuedDate: new Date()
} : undefined,
officialTitle: formData.officialTitle || undefined,
createdAt: new Date(),
updatedAt: new Date(),
createdBy: 'admin'
@ -394,6 +396,20 @@ export default function EmployeeForm() {
)}
</div>
<div>
<label className="block text-sm font-medium text-secondary mb-2">
Amtsbezeichnung
</label>
<input
type="text"
name="officialTitle"
value={formData.officialTitle}
onChange={handleChange}
className="input-field"
placeholder="z. B. KOK, KHK, EKHK"
/>
</div>
<div>
<label className="block text-sm font-medium text-secondary mb-2">
Abteilung *

Datei anzeigen

@ -16,12 +16,23 @@ export default function MyProfile() {
const [error, setError] = useState('')
const [success, setSuccess] = useState('')
const [form, setForm] = useState<any | null>(null)
const [catalog, setCatalog] = useState<{ id: string; name: string; subcategories: { id: string; name: string; skills: { id: string; name: string }[] }[] }[]>([])
const [skills, setSkills] = useState<SkillSelection[]>([])
const [activeTab, setActiveTab] = useState<'profile' | 'deputies'>('profile')
const [currentUnitId, setCurrentUnitId] = useState<string | null>(null)
const [myUnits, setMyUnits] = useState<any[]>([])
const [form, setForm] = useState<any | null>(null)
const [catalog, setCatalog] = useState<{ id: string; name: string; subcategories: { id: string; name: string; skills: { id: string; name: string }[] }[] }[]>([])
const [skills, setSkills] = useState<SkillSelection[]>([])
const [activeTab, setActiveTab] = useState<'profile' | 'deputies'>('profile')
const [currentUnitId, setCurrentUnitId] = useState<string | null>(null)
const [myUnits, setMyUnits] = useState<any[]>([])
const AVAILABILITY_OPTIONS = [
{ value: 'available', label: 'Verfügbar' },
{ value: 'busy', label: 'Beschäftigt' },
{ value: 'away', label: 'Abwesend' },
{ value: 'vacation', label: 'Urlaub' },
{ value: 'sick', label: 'Erkrankt' },
{ value: 'training', label: 'Fortbildung' },
{ value: 'operation', label: 'Im Einsatz' },
{ value: 'parttime', label: 'Teilzeit' },
{ value: 'unavailable', label: 'Nicht verfügbar' }
]
useEffect(() => {
if (!employeeId) {
@ -143,6 +154,7 @@ export default function MyProfile() {
firstName: form.firstName,
lastName: form.lastName,
position: form.position || 'Teammitglied',
officialTitle: form.officialTitle || null,
department: form.department || '',
employeeNumber: form.employeeNumber || undefined,
email: user?.email || form.email,
@ -241,8 +253,23 @@ export default function MyProfile() {
</div>
<div>
<label className="block text-body font-medium text-secondary mb-2">Position</label>
<input className="input-field w-full" value={form.position || ''} onChange={(e) => setForm((p: any) => ({ ...p, position: e.target.value }))} placeholder="z. B. Sachbearbeiter; Führungskraft g. D.; Führungskraft h. D." />
<p className="text-small text-tertiary mt-1">Beispiele: Sachbearbeiter, Führungskraft g. D., Führungskraft h. D.</p>
<input
className="input-field w-full"
value={form.position || ''}
onChange={(e) => setForm((p: any) => ({ ...p, position: e.target.value }))}
placeholder="z. B. Sachbearbeitung, Teamleitung"
/>
<p className="text-small text-tertiary mt-1">Beispiele: Sachbearbeitung, Teamleitung, Stabsstelle.</p>
</div>
<div>
<label className="block text-body font-medium text-secondary mb-2">Amtsbezeichnung</label>
<input
className="input-field w-full"
value={form.officialTitle || ''}
onChange={(e) => setForm((p: any) => ({ ...p, officialTitle: e.target.value }))}
placeholder="z. B. KOK, KHK, EKHK"
/>
<p className="text-small text-tertiary mt-1">Freifeld für Amts- bzw. Dienstbezeichnungen (z. B. KOK, RBe, EKHK).</p>
</div>
<div>
<label className="block text-body font-medium text-secondary mb-2">NW-Kennung</label>
@ -273,6 +300,19 @@ export default function MyProfile() {
<input className="input-field w-full" value={form.office || ''} onChange={(e) => setForm((p: any) => ({ ...p, office: e.target.value }))} placeholder="z. B. Gebäude A, 3.OG, Raum 3.12" />
<p className="text-small text-tertiary mt-1">Angabe zum Standort, z. B. Gebäude, Etage und Raum.</p>
</div>
<div>
<label className="block text-body font-medium text-secondary mb-2">Verfügbarkeit</label>
<select
className="input-field w-full"
value={form.availability || 'available'}
onChange={(e) => setForm((p: any) => ({ ...p, availability: e.target.value }))}
>
{AVAILABILITY_OPTIONS.map(option => (
<option key={option.value} value={option.value}>{option.label}</option>
))}
</select>
<p className="text-small text-tertiary mt-1">Dieser Status wird in der Mitarbeitendenübersicht und Teamplanung angezeigt.</p>
</div>
</div>
</div>
</div>

Datei anzeigen

@ -567,6 +567,7 @@ export default function SkillSearch() {
</div>
<div className="text-xs text-tertiary">
{employee.position}
{employee.officialTitle ? `${employee.officialTitle}` : ''}
</div>
</div>
{selectedSkills.size > 0 && (

Datei anzeigen

@ -688,7 +688,9 @@ export default function TeamZusammenstellung() {
{employee.firstName} {employee.lastName}
</div>
<div className="text-sm text-tertiary">
{employee.position} {employee.department}
{employee.position}
{employee.officialTitle ? `${employee.officialTitle}` : ''}
{`${employee.department}`}
</div>
</div>