Add the Honestly survey export to Berichte
A participant list for the employee survey on honestly.de, offered as CSV and Excel right under the full data export. Columns: Personalnummer, Email, Firstname, Last Name, Language, Location, OU, OU+1, ... , Role. Language is always "de", Role always "Respondee". The org columns run bottom-up: OU is the person's own unit, OU+1 the one above, up to the top node. Their number follows the deepest chain in the file, shorter chains are padded with empty cells, and there is always at least one OU column so the file keeps its shape. It exports exactly the people the full export would, with the same filters. To guarantee that, the selection moved out of the full export's route into lib/export-auswahl.ts and both routes use it; the full export's columns are untouched. Email is employees.email, which is the private address and optional -- there is no work address in the schema. Missing addresses stay empty rather than getting a placeholder that would receive an invitation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -637,6 +637,30 @@ export function ReportsPageClient(props: ReportsPageClientProps) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Nur im Bestand: eine Befragung richtet sich an Personen, nicht an
|
||||
Ereignisse. Dieselben Filter wie der vollständige Export darüber
|
||||
— was dort steht, steht auch hier. */}
|
||||
{mode === "snapshot" && (
|
||||
<div className="rounded border border-border bg-white p-4">
|
||||
<h3 className="mb-1 text-xs font-semibold uppercase tracking-wide text-ink-muted">Honestly-Report</h3>
|
||||
<p className="mb-1 text-xs text-ink-muted">
|
||||
Teilnehmerliste für die Mitarbeiterbefragung: Personalnummer, E-Mail, Name, Standort und die
|
||||
Organisationskette von der eigenen Einheit bis ganz oben. Sprache immer „de“, Rolle immer „Respondee“.
|
||||
</p>
|
||||
<p className="mb-2 rounded bg-surface px-2 py-1.5 text-xs font-semibold text-ink-body">Status im Export: {statusExportLabel}</p>
|
||||
<div className="flex gap-2">
|
||||
<a href={exportHref("/api/export/honestly", "csv")} className={LINK_BUTTON_CLASS}>
|
||||
<FileText className="h-4 w-4" />
|
||||
CSV
|
||||
</a>
|
||||
<a href={exportHref("/api/export/honestly", "xlsx")} className={LINK_BUTTON_CLASS}>
|
||||
<FileSpreadsheet className="h-4 w-4" />
|
||||
Excel
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{savedReports.length > 0 && (
|
||||
<div className="rounded border border-border bg-white p-4">
|
||||
<h3 className="mb-2 text-xs font-semibold uppercase tracking-wide text-ink-muted">Gespeicherte Berichte</h3>
|
||||
|
||||
Reference in New Issue
Block a user