Baustein 9: Auswertung, Rahmenplanabdeckung, Feedbackgespraech
Die Abdeckung des Ausbildungsrahmenplans ist die Ansicht, die gegenueber
der IHK zaehlt. Sie unterscheidet vier Lagen statt "erledigt/offen":
vermittelt eine abgenommene Aufgabe oder ein abgeschlossener
Checklisten-Durchlauf, oder zwei gelesene Handouts
angefangen etwas erledigt, aber noch nicht genug
geplant Inhalt vorhanden, nichts davon bearbeitet
ohne Inhalt zu dieser Position gibt es im Lehrgang gar nichts
Die vierte Lage ist die wichtigste: Sie ist keine Luecke beim Azubi,
sondern eine im Lehrgang, und wird getrennt ausgewiesen. Die Regel steht
als reine Funktion in src/lib/auswertung/abdeckung.ts, mit 17 Tests.
Das Feedbackgespraech laesst beide Seiten getrennt bewerten. Wo sie um
zwei Stufen oder mehr auseinanderliegen, wird das hervorgehoben - in der
Ansicht, in der Uebersicht und im PDF, alle drei ueber dieselbe Funktion
liegtWeitAuseinander(). Nach beidseitiger Bestaetigung ist das Gespraech
unveraenderlich und wird nur noch gelesen.
Durchstich in scripts/pruefungen/baustein-9.mjs: alle fuenf Luecken
erkannt, getrennte Spalten, Sperre serverseitig, PDF nur mit Anmeldung,
ein fremder Azubi bekommt 404 - auch auf das PDF.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d226a6bae8
commit
be2a674c7a
@@ -739,6 +739,13 @@ a.glossarbegriff:hover {
|
||||
}
|
||||
.offen-liste li > span:first-of-type { flex: 1; }
|
||||
|
||||
/* Steht neben einem Eintrag „bestätigt", darf davor kein offener Kreis
|
||||
stehen – das Zeichen soll den Zustand sagen, nicht ihm widersprechen. */
|
||||
.offen-liste li[data-erledigt="ja"]::before {
|
||||
content: "✓";
|
||||
color: var(--gut);
|
||||
}
|
||||
|
||||
.wochentage {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
@@ -1675,3 +1682,167 @@ a.kontrollzeile:hover { background: var(--flaeche-kraeftig); color: var(--text);
|
||||
@media print {
|
||||
.kontrolle-kopf { position: static !important; }
|
||||
}
|
||||
|
||||
/* --- Auswertung --- */
|
||||
|
||||
.abdeckungsgruppe > summary {
|
||||
cursor: pointer;
|
||||
list-style: none;
|
||||
min-height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.4rem;
|
||||
}
|
||||
.abdeckungsgruppe > summary::-webkit-details-marker { display: none; }
|
||||
.abdeckungsgruppe > summary::before { content: "▸"; color: var(--petrol); }
|
||||
.abdeckungsgruppe[open] > summary::before { content: "▾"; }
|
||||
|
||||
.abdeckungsliste { list-style: none; margin: 0.6rem 0 0; padding: 0; display: grid; gap: 0.35rem; }
|
||||
.abdeckungsliste li {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 0.7rem;
|
||||
flex-wrap: wrap;
|
||||
padding: 0.5rem 0.6rem;
|
||||
border-radius: var(--radius-klein);
|
||||
background: var(--grund);
|
||||
border: 1px solid var(--rand-zart);
|
||||
border-left: 4px solid var(--rand);
|
||||
}
|
||||
.abdeckungsliste li[data-stufe="abgedeckt"] { border-left-color: var(--gut); }
|
||||
.abdeckungsliste li[data-stufe="angefangen"] { border-left-color: var(--bernstein); }
|
||||
.abdeckungsliste li[data-stufe="ohne_inhalt"] { border-left-color: var(--fehler); background: var(--fehler-flaeche); }
|
||||
|
||||
.abdeckung-kuerzel {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 2.6rem;
|
||||
padding: 0.1rem 0.5rem;
|
||||
border-radius: var(--radius-klein);
|
||||
background: var(--flaeche-kraeftig);
|
||||
font-weight: 700;
|
||||
font-size: 0.82rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.abdeckung-titel { flex: 1 1 260px; font-weight: 600; line-height: 1.4; }
|
||||
|
||||
.nachweisliste { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-top: 0.3rem; }
|
||||
.nachweis {
|
||||
font-size: 0.75rem;
|
||||
font-weight: 600;
|
||||
padding: 0.05rem 0.4rem;
|
||||
border-radius: 3px;
|
||||
background: var(--flaeche);
|
||||
color: var(--text-leise);
|
||||
cursor: help;
|
||||
}
|
||||
.nachweis[data-erledigt="ja"] { background: var(--gut-flaeche); color: var(--gut); }
|
||||
|
||||
.verlaufsliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
|
||||
.verlaufsliste li {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.8rem;
|
||||
flex-wrap: wrap;
|
||||
background: var(--flaeche);
|
||||
border: 1px solid var(--rand-zart);
|
||||
border-radius: var(--radius);
|
||||
padding: 0.6rem 0.9rem;
|
||||
}
|
||||
.verlauf-titel { flex: 1 1 200px; font-weight: 650; }
|
||||
.verlauf-balken { display: flex; align-items: center; gap: 0.5rem; flex: 0 1 180px; }
|
||||
.verlauf-balken .balken { flex: 1; }
|
||||
.note-klein { width: 2rem; height: 2rem; font-size: 1.1rem; }
|
||||
|
||||
/* --- Feedbackgespräch --- */
|
||||
|
||||
.gespraechsliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
|
||||
.gespraechszeile {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.85rem;
|
||||
flex-wrap: wrap;
|
||||
background: var(--flaeche);
|
||||
border: 1px solid var(--rand-zart);
|
||||
border-radius: var(--radius);
|
||||
padding: 0.7rem 0.9rem;
|
||||
text-decoration: none;
|
||||
color: var(--text);
|
||||
}
|
||||
.gespraechszeile:hover { background: var(--flaeche-kraeftig); color: var(--text); }
|
||||
.gespraech-inhalt { flex: 1 1 220px; font-weight: 650; }
|
||||
|
||||
.gespraech-datum {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.15rem 0.6rem;
|
||||
border-radius: var(--radius-klein);
|
||||
background: var(--petrol);
|
||||
color: var(--text-auf-petrol);
|
||||
font-weight: 700;
|
||||
font-size: 0.82rem;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.gespraech-datum-gross { font-size: 0.95rem; padding: 0.25rem 0.7rem; }
|
||||
|
||||
.kriterienbogen { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
|
||||
.kriterienbogen > li {
|
||||
display: grid;
|
||||
gap: 0.4rem;
|
||||
background: var(--grund);
|
||||
border: 1px solid var(--rand);
|
||||
border-radius: var(--radius);
|
||||
padding: 0.75rem 0.9rem;
|
||||
}
|
||||
.kriterienbogen > li[data-abweichung="ja"] { border-color: var(--bernstein); background: var(--warnung-flaeche); }
|
||||
|
||||
.kriterium-kopf { display: grid; gap: 0.1rem; }
|
||||
.kriterium-kopf .leise { font-size: 0.85rem; }
|
||||
|
||||
.stufenwahl {
|
||||
display: flex;
|
||||
gap: 0.35rem;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.stufenwahl:disabled { opacity: 0.6; }
|
||||
|
||||
.stufe {
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
font-weight: 400;
|
||||
}
|
||||
.stufe input { position: absolute; opacity: 0; width: 0; height: 0; }
|
||||
.stufe > span {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: 2.4rem;
|
||||
height: 2.4rem;
|
||||
border-radius: var(--radius-klein);
|
||||
border: 2px solid var(--rand);
|
||||
background: var(--grund);
|
||||
font-weight: 700;
|
||||
}
|
||||
.stufe input:checked + span {
|
||||
border-color: var(--petrol);
|
||||
background: var(--petrol);
|
||||
color: var(--text-auf-petrol);
|
||||
}
|
||||
.stufe input:focus-visible + span { outline: 3px solid var(--bernstein); outline-offset: 2px; }
|
||||
|
||||
.kriterium-fuss {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.6rem;
|
||||
flex-wrap: wrap;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.abdeckungsgruppe > summary { display: none; }
|
||||
.abdeckungsgruppe[open] .abdeckungsliste { margin-top: 0; }
|
||||
.stufe input:checked + span { border-color: #000; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user