- Go 81.4%
- HTML 13.7%
- Typst 1.5%
- CSS 1.4%
- Go Template 0.7%
- Other 1.3%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| build | ||
| charts/sm-recruiting | ||
| cmd/cockpit | ||
| docs/superpowers | ||
| internal/cockpit | ||
| k8s | ||
| .gitignore | ||
| AGENTS.md | ||
| BEARBEITUNGSPLAN.md | ||
| CLAUDE.md | ||
| Containerfile | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| README.md | ||
| UMBAUPLAN.md | ||
Spiralmind Recruiting Cockpit
Datenbank und Arbeitsoberfläche für die Personalvermittlung von Spiralmind Solutions. Direktvermittlung in Festanstellung, keine Arbeitnehmerüberlassung.
Ein Go-Binary, drei Container, ein Podman-Pod. Die Oberfläche steckt per
go:embed im Binary; es gibt keine Fremdbibliothek im Browser.
Was es kann
| Mandanten | CRM mit Ansprechpartnern, vereinbartem Honorarsatz, Portalzugang |
| Suchaufträge | was gesucht wird, ab wann, zu welchem Budget, mit Pipeline über neun Zustände |
| Kandidaten | Stammdaten, Stationen, Kompetenzen, drei getrennte Gehaltszahlen |
| Unterlagen | PDF, DOCX, TXT, Bilder · Text wird gewonnen und durchsuchbar gemacht |
| Lebenslauf-Auswertung | schlägt Felder und Stationen vor, trägt nichts von selbst ein |
| Zuordnung | ein Kandidat für einen Mandanten — mit Anonymitätsschalter |
| Exposé | drei Seiten als PDF, namentlich oder anonym, Anlagen je Datei schaltbar |
| Platzierung | vereinbartes Jahresgehalt → zwei Honorarhälften |
| Suche | Meilisearch über den Pool, Rückfall auf Postgres |
| Mandantenportal | der Mandant sieht seine Aufträge und die ihm vorgestellten Profile |
| Mailausgang | Korb mit Wiederholung; ohne SMTP-Zugang geht nichts hinaus |
| Benutzer | anlegen, Kennwort setzen, stilllegen — nie löschen |
Starten
Vorausgesetzt: Podman (entwickelt gegen 6.0.2, applehv, arm64). Kein Go
auf dem Rechner nötig — Bau und Tests laufen im Container.
make einrichten # k8s/sm-recruiting.local.yaml mit Zufallswerten erzeugen
# darin BENUTZER1_PASSWORT und BENUTZER2_PASSWORT setzen
make up # bauen und starten → http://localhost:8110
make status # Zustand der drei Container
make logs # Log des Cockpits
make down # stoppen, Daten bleiben in den Volumes
make test # Tests im Bau-Container
In k8s/sm-recruiting.yaml stehen keine Zugangsdaten — nur Platzhalter.
Die echten Werte stehen in k8s/sm-recruiting.local.yaml, und die liegt nicht
in Git. Ohne COCKPIT_SECRET bricht der Dienst beim Start ab; eine eingebaute
Vorgabe würde bedeuten, dass jede Instanz dieselben Cookies akzeptiert.
Das Mandantenportal liegt unter /portal/. Zugänge richtet man auf der
Mandantenseite je Ansprechpartner ein.
Wo die Regeln stehen
Die fachlichen und datenschutzrechtlichen Entscheidungen stehen in
AGENTS.md — dort, wo sie zum Code gehören, nicht in einer
Notiz daneben. Die drei wichtigsten:
- Das Honorar sind 20 % des vereinbarten Jahresgehalts, in zwei gleichen Hälften: bei Vertragsunterschrift und bei Bestehen der Probezeit. Grundlage ist das vereinbarte Gehalt, nie der Marktwert.
- Kein Merkmal aus § 1 AGG existiert als Feld. Kein Geburtsdatum, keine Herkunft, keine Religion, keine Angabe zu Behinderung — und der Lebenslauf-Parser liest sie bewusst nicht, obwohl sie in fast jedem deutschen Lebenslauf stehen. Ein Test prüft das gegen das Schema.
- Anonymität hängt an der Zuordnung, nicht am Kandidaten. Derselbe Kandidat ist bei einem Mandanten anonym und beim nächsten namentlich.
Stand
Läuft und ist in Gebrauch. Noch nicht gebaut: OCR für gescannte Unterlagen, Migration der Altablage, Löschfristen. Offen und beim Betreiber: die Sicherung der drei Podman-Volumes.