Migrate omsorgapp to browser SPA, add Docker/CI build setup
Docker-Images bauen und veröffentlichen / build (, omsorgCore/Dockerfile, omsorgcore) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (, omsorgWeb/Dockerfile, omsorgweb) (push) Failing after 4s
Docker-Images bauen und veröffentlichen / build (VITE_OMSORG_CORE_URL=${{ vars.OMSORG_CORE_PUBLIC_URL }}, omsorgapp/Dockerfile, omsorgapp) (push) Successful in 3s

- omsorgapp: drop Electron, run as a plain Vite/React browser app; refresh
  token moves to an HttpOnly cookie (omsorgCore), CORS added for the new
  browser origin, document download/preview switched to Blob-based browser
  APIs.
- Add Dockerfiles for omsorgCore, omsorgapp, and omsorgWeb, a docker-compose.yml
  wiring Postgres/MySQL/all three apps together, and a Gitea Actions workflow
  that builds and pushes images to the repo's container registry on push to
  main and on version tags.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Felix Kemmler
2026-08-10 17:42:45 +02:00
co-authored by Claude Sonnet 5
parent e9e96a57dc
commit 598dfcd38a
461 changed files with 59753 additions and 2859 deletions
@@ -73,6 +73,7 @@ export function employeeFormToPayload(form, { includeStatus = false } = {}) {
export default function EmployeeForm({ form, onChange, includeStatus = false }) {
const { items: statusOptions } = useValueListItems("EmployeeStatus");
const { items: employmentTypes } = useValueListItems("EmploymentType");
const { items: qualifications } = useValueListItems("Qualification");
function updateField(field) {
return (event) => onChange({ ...form, [field]: event.target.value });
@@ -168,7 +169,14 @@ export default function EmployeeForm({ form, onChange, includeStatus = false })
<label className="form-field">
<span>Qualifikation</span>
<input value={form.qualification} onChange={updateField("qualification")} />
<select value={form.qualification} onChange={updateField("qualification")}>
<option value=""> nicht angegeben </option>
{qualifications.map((option) => (
<option key={option.id} value={option.value}>
{option.value}
</option>
))}
</select>
</label>
<fieldset className="form-field form-field--fieldset">