Die Uebergabe geht an einen Dev, der den Einbau mit einem Coding-Agenten macht. Dafuer reicht "hier ist das Repo" nicht. Vier neue Artefakte, alle gegen das Zielsystem geprueft, nicht aus dem Gedaechtnis geschrieben. **EINBAU.md** ist der Einstieg. Der wichtigste Satz darin steht ganz oben: Das Dashboard in HiveGrid ist kein leeres Blatt. Route, Widget-Registry, Rollen-Layouts, Drilldown, Export, Live-Updates und Layout-Speicherung sind gebaut. Wer dort eine neue Seite anlegt, wirft funktionierende Software weg. Das ist nicht meine Einschaetzung: Der Brief P30 im Zielsystem sagt woertlich "Delta-Phase, kein Neubau ... Dashboard/Widget-Registry voll gebaut". Analytics dagegen gibt es noch nicht und wird nach dem Muster von leads.analytics.tsx neu gebaut. Dazu eine Tabelle, welche Datei wohin wandert, und eine zweite, was ausdruecklich nicht mitwandert und warum. **docs/port/TICKET-ANALYTICS.md und TICKET-DASHBOARD.md** sind im Format von .planning/ticket-docs/ geschrieben, mit Header-Tabelle, Abhaengigkeiten, Definition of Done, Technischen Bausteinen, Quellen und Dev-Nachzug. Sie koennen dorthin kopiert werden; dann greift der bestehende Ablauf, statt dass wir einen zweiten danebenstellen. **docs/port/i18n-*.json plus TEXTE.md.** pnpm run verify:i18n ist in HiveGrid ein Gate: keine hartkodierten Strings. Dieser Prototyp ist zu 100 % hartkodiertes Deutsch. 185 Texte mit Schluesselvorschlag und Fundstelle, dazu derselbe Inhalt als einfuegbarer Baum. Erzeugt von scripts/i18n-inventar.py (npm run i18n:inventar), damit das Inventar nicht auseinanderlaeuft, wenn sich am Prototyp noch etwas aendert. Dabei gefunden: app.dashboard.widgets.* enthaelt bereits 17 Widgets, darunter genau fuenf, die dieser Prototyp gestaltet (receivables, orderIntake, daysToPayment, winRate, stageDistribution) und genau die drei, die er als reserviert markiert (myTasks, scheduleToday, hrRequests). Neue Schluessel dafuer waeren Dubletten; die acht sind in TEXTE.md einzeln aufgefuehrt. Die Anrede stimmt ebenfalls schon ueberein, HiveGrid duzt. **CLAUDE.md** als Einstiegspunkt, den Claude Code beim Oeffnen des Repos von selbst liest: was dieses Repo ist, die drei Dinge, an denen ein Einbau sonst scheitert, und wo was steht. Jeder in den Dokumenten genannte Pfad wurde in beiden Repos nachgeprueft. Ein Fehler dabei gefunden und behoben: der Designer-Brief heisst P11-suche-dashboard.md, nicht P11.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QPeZNwSeU7qG3RRCwaxEZX
928 lines
29 KiB
JSON
928 lines
29 KiB
JSON
[
|
|
{
|
|
"key": "app.shared.alerts.keineOffenenPunkte",
|
|
"de": "Keine offenen Punkte",
|
|
"quelle": "features/dashboard/components/cards/AlertList.tsx:25"
|
|
},
|
|
{
|
|
"key": "app.shared.kpi.vorperiode",
|
|
"de": "Vorperiode",
|
|
"quelle": "features/dashboard/components/cards/KPICard.tsx:36"
|
|
},
|
|
{
|
|
"key": "app.shared.chart.aktuellerZeitraum",
|
|
"de": "Aktueller Zeitraum",
|
|
"quelle": "features/dashboard/components/charts/AreaVerlauf.tsx:112"
|
|
},
|
|
{
|
|
"key": "app.shared.chart.vorjahr",
|
|
"de": "Vorjahr",
|
|
"quelle": "features/dashboard/components/charts/AreaVerlauf.tsx:124"
|
|
},
|
|
{
|
|
"key": "app.shared.chart.wert",
|
|
"de": "Wert",
|
|
"quelle": "features/dashboard/components/charts/BalkenVertikal.tsx:94"
|
|
},
|
|
{
|
|
"key": "app.shared.chart.keineDatenGewaehltenZeitraum",
|
|
"de": "Keine Daten im gewählten Zeitraum",
|
|
"quelle": "features/dashboard/components/charts/ChartLeer.tsx:6"
|
|
},
|
|
{
|
|
"key": "app.dashboard.widget.detailsAnsehen",
|
|
"de": "Details ansehen",
|
|
"quelle": "features/dashboard/components/dashboard/WidgetKachel.tsx:51"
|
|
},
|
|
{
|
|
"key": "app.analytics.filter.gewerk",
|
|
"de": "Gewerk",
|
|
"quelle": "features/dashboard/components/filters/AnalyticsToolbar.tsx:111"
|
|
},
|
|
{
|
|
"key": "app.analytics.filter.status",
|
|
"de": "Status",
|
|
"quelle": "features/dashboard/components/filters/AnalyticsToolbar.tsx:121"
|
|
},
|
|
{
|
|
"key": "app.analytics.filter.quelle",
|
|
"de": "Quelle",
|
|
"quelle": "features/dashboard/components/filters/AnalyticsToolbar.tsx:134"
|
|
},
|
|
{
|
|
"key": "app.analytics.filter.region",
|
|
"de": "Region",
|
|
"quelle": "features/dashboard/components/filters/AnalyticsToolbar.tsx:144"
|
|
},
|
|
{
|
|
"key": "app.analytics.filter.mitarbeiter",
|
|
"de": "Mitarbeiter",
|
|
"quelle": "features/dashboard/components/filters/AnalyticsToolbar.tsx:154"
|
|
},
|
|
{
|
|
"key": "app.analytics.shell.navigation",
|
|
"de": "Navigation",
|
|
"quelle": "features/dashboard/components/layout/AppShell.tsx:265"
|
|
},
|
|
{
|
|
"key": "app.analytics.shell.suchen",
|
|
"de": "Suchen",
|
|
"quelle": "features/dashboard/components/layout/AppShell.tsx:287"
|
|
},
|
|
{
|
|
"key": "app.analytics.shell.benachrichtigungen",
|
|
"de": "Benachrichtigungen",
|
|
"quelle": "features/dashboard/components/layout/AppShell.tsx:294"
|
|
},
|
|
{
|
|
"key": "app.analytics.shell.hilfe",
|
|
"de": "Hilfe",
|
|
"quelle": "features/dashboard/components/layout/AppShell.tsx:300"
|
|
},
|
|
{
|
|
"key": "app.analytics.actions.ansichtAktualisieren",
|
|
"de": "Ansicht aktualisieren",
|
|
"quelle": "features/dashboard/components/layout/PageHeader.tsx:60"
|
|
},
|
|
{
|
|
"key": "app.analytics.actions.aktualisieren",
|
|
"de": "Aktualisieren",
|
|
"quelle": "features/dashboard/components/layout/PageHeader.tsx:63"
|
|
},
|
|
{
|
|
"key": "app.analytics.actions.ansichtExportieren",
|
|
"de": "Ansicht exportieren",
|
|
"quelle": "features/dashboard/components/layout/PageHeader.tsx:68"
|
|
},
|
|
{
|
|
"key": "app.analytics.actions.export",
|
|
"de": "Export",
|
|
"quelle": "features/dashboard/components/layout/PageHeader.tsx:71"
|
|
},
|
|
{
|
|
"key": "app.analytics.actions.ansichtTeilen",
|
|
"de": "Ansicht teilen",
|
|
"quelle": "features/dashboard/components/layout/PageHeader.tsx:76"
|
|
},
|
|
{
|
|
"key": "app.shared.state.kennzahlenBerechnet",
|
|
"de": "Kennzahlen werden berechnet …",
|
|
"quelle": "features/dashboard/components/layout/SeitenZustand.tsx:29"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.uebersicht",
|
|
"de": "Übersicht",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:108"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.kennzahlenDenenBetriebGesteuert",
|
|
"de": "Die Kennzahlen, nach denen der Betrieb gesteuert wird: Umsatz, Auslastung, offene Posten und Handlungsbedarf.",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:110"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.finanzen",
|
|
"de": "Finanzen",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:115"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.umsatzZahlungseingangOffeneForderungen",
|
|
"de": "Umsatz, Zahlungseingang und offene Forderungen: die Sicht der Buchhaltung auf den Betrieb.",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:117"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.anfrageBisAbnahmeWo",
|
|
"de": "Von der Anfrage bis zur Abnahme: wo die Vorgänge stehen, was gebunden ist und was über Termin läuft.",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:124"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.kunden",
|
|
"de": "Kunden",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:129"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.woherKundenKommenWie",
|
|
"de": "Woher Kunden kommen, wie viel sie bringen und wo Nachfassen lohnt.",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:131"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.team",
|
|
"de": "Team",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:136"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.auslastungProduktiveStundenAbschluesse",
|
|
"de": "Auslastung, produktive Stunden und Abschlüsse der Monteure: die Kennzahl hinter der Terminplanung.",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:138"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.dashboard",
|
|
"de": "Dashboard",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:52"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.analytics",
|
|
"de": "Analytics",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:60"
|
|
},
|
|
{
|
|
"key": "app.analytics.nav.komponenten",
|
|
"de": "Komponenten",
|
|
"quelle": "features/dashboard/components/layout/navigation.ts:83"
|
|
},
|
|
{
|
|
"key": "app.shared.table.vorherigeSeite",
|
|
"de": "Vorherige Seite",
|
|
"quelle": "features/dashboard/components/tables/DataTable.tsx:200"
|
|
},
|
|
{
|
|
"key": "app.shared.table.naechsteSeite",
|
|
"de": "Nächste Seite",
|
|
"quelle": "features/dashboard/components/tables/DataTable.tsx:211"
|
|
},
|
|
{
|
|
"key": "app.shared.table.keineEintraege",
|
|
"de": "Keine Einträge",
|
|
"quelle": "features/dashboard/components/tables/DataTable.tsx:37"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.zahlungszielUeberschritten",
|
|
"de": "Zahlungsziel überschritten",
|
|
"quelle": "features/dashboard/data/calculations.ts:478"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.mahnlaufStarten",
|
|
"de": "Mahnlauf starten",
|
|
"quelle": "features/dashboard/data/calculations.ts:480"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.forderungenAelter90Tage",
|
|
"de": "Forderungen älter als 90 Tage",
|
|
"quelle": "features/dashboard/data/calculations.ts:487"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.einbringungsquoteSinktDeutlich",
|
|
"de": "Einbringungsquote sinkt deutlich",
|
|
"quelle": "features/dashboard/data/calculations.ts:488"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.inkassoPruefen",
|
|
"de": "Inkasso prüfen",
|
|
"quelle": "features/dashboard/data/calculations.ts:490"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.termineNeuPlanen",
|
|
"de": "Termine neu planen",
|
|
"quelle": "features/dashboard/data/calculations.ts:500"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.seitUeber21Tagen",
|
|
"de": "Seit über 21 Tagen offen",
|
|
"quelle": "features/dashboard/data/calculations.ts:512"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.nachfassen",
|
|
"de": "Nachfassen",
|
|
"quelle": "features/dashboard/data/calculations.ts:514"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.bescheidAusstehend",
|
|
"de": "Bescheid ausstehend",
|
|
"quelle": "features/dashboard/data/calculations.ts:524"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.statusPruefen",
|
|
"de": "Status prüfen",
|
|
"quelle": "features/dashboard/data/calculations.ts:526"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.bewilligt",
|
|
"de": "Bewilligt",
|
|
"quelle": "features/dashboard/data/calculations.ts:563"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.beantragt",
|
|
"de": "Beantragt",
|
|
"quelle": "features/dashboard/data/calculations.ts:564"
|
|
},
|
|
{
|
|
"key": "app.analytics.alerts.nichtBeantragt",
|
|
"de": "Nicht beantragt",
|
|
"quelle": "features/dashboard/data/calculations.ts:565"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.neueVorgaenge",
|
|
"de": "Neue Vorgänge",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:102"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.anlagedatumGezaehlt",
|
|
"de": "Nach Anlagedatum gezählt",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:104"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.aktiveAuftraege",
|
|
"de": "Aktive Aufträge",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:110"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.ueberTermin",
|
|
"de": "Über Termin",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:117"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.abschlussquote",
|
|
"de": "Abschlussquote",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:129"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.angebotAuftrag",
|
|
"de": "Aus Angebot wird Auftrag",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:131"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.durchlaufzeit",
|
|
"de": "Ø Durchlaufzeit",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:136"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.anfrageBisAbnahme",
|
|
"de": "Anfrage bis Abnahme",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:138"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.auftragseingang",
|
|
"de": "Auftragseingang",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:148"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.neuAngelegteVorgaengeZeitverlauf",
|
|
"de": "Neu angelegte Vorgänge im Zeitverlauf",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:149"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.auftragswert",
|
|
"de": "Ø Auftragswert",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:158"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.vertriebstrichter",
|
|
"de": "Vertriebstrichter",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:167"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.angebotsgeschaeftAb6000",
|
|
"de": "Angebotsgeschäft ab 6.000 €, nach erreichter Stufe",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:168"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.vorgaengeStatus",
|
|
"de": "Vorgänge nach Status",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:178"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.alleVorgaengeSeitBeginn",
|
|
"de": "Alle Vorgänge seit Beginn, unabhängig vom Zeitraumfilter",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:179"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.vorgaengeGewerk",
|
|
"de": "Vorgänge nach Gewerk",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:191"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.anzahlSeitBeginnStichtag",
|
|
"de": "Anzahl seit Beginn, zum Stichtag",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:192"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.foerderquoteBafaKfw",
|
|
"de": "Förderquote BAFA / KfW",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:204"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.bezugsgroesseNurFoerderfaehigeLeistungen",
|
|
"de": "Bezugsgröße sind nur förderfähige Leistungen: Wärmepumpe, PV-Anlage, Batteriespeicher und Lüftungsanlage. Über alle Aufträge gerechnet wäre die Quote wertlos.",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:208"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.foerdersumme",
|
|
"de": "Fördersumme",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:219"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.jeAuftrag",
|
|
"de": "Ø je Auftrag",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:221"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.beauftragtArbeit",
|
|
"de": "Beauftragt oder in Arbeit",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:232"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.keineAktivenAuftraege",
|
|
"de": "Keine aktiven Aufträge",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:241"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.auftrag",
|
|
"de": "Auftrag",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:42"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.verantwortlich",
|
|
"de": "Verantwortlich",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:63"
|
|
},
|
|
{
|
|
"key": "app.analytics.auftraege.termin",
|
|
"de": "Termin",
|
|
"quelle": "features/dashboard/pages/AuftraegeSeite.tsx:73"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.handlungsbedarf",
|
|
"de": "Handlungsbedarf",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:100"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.sortiertDringlichkeitJedeZeile",
|
|
"de": "Sortiert nach Dringlichkeit, jede Zeile führt in die zugehörige Arbeitsliste",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:101"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.zahlungseingangZeitverlauf",
|
|
"de": "Zahlungseingang im Zeitverlauf",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:111"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.aktuellerZeitraumGegenVorjahreszeitraum",
|
|
"de": "Aktueller Zeitraum gegen den Vorjahreszeitraum",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:112"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.gezaehltTagZahlungseingangsNicht",
|
|
"de": "Gezählt wird der Tag des Zahlungseingangs, nicht das Rechnungsdatum. Dadurch entspricht die Kurve dem tatsächlichen Geldfluss.",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:113"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.finanzenAuswerten",
|
|
"de": "In den Finanzen auswerten",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:117"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.umsatzGewerk",
|
|
"de": "Umsatz nach Gewerk",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:140"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.zahlungseingangLetzten30Tage",
|
|
"de": "Zahlungseingang der letzten 30 Tage",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:141"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.fuenfGewerkeFesterRangfolge",
|
|
"de": "Fünf Gewerke in fester Rangfolge: dieselbe Kodierung wie auf der Finanzseite.",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:142"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.angebotsgeschaeftAb6000",
|
|
"de": "Angebotsgeschäft ab 6.000 €, zum Stichtag",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:158"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.nurVorhabenFuerSchriftliches",
|
|
"de": "Nur Vorhaben, für die ein schriftliches Angebot erstellt wird. Wartung und Notdienst laufen ohne Angebot und würden die Quoten verfälschen.",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:159"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.auftraegeAuswerten",
|
|
"de": "Aufträge auswerten",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:163"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.auslastungMonteure",
|
|
"de": "Auslastung Monteure",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:171"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.produktiveStundenGegenVerfuegbare",
|
|
"de": "Produktive Stunden gegen verfügbare Stunden",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:172"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.nurAuftraegeGebuchteStunden",
|
|
"de": "Nur auf Aufträge gebuchte Stunden zählen als produktiv. Über 100 % bedeutet Überstunden.",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:173"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.ganzesTeamAnsehen",
|
|
"de": "Ganzes Team ansehen",
|
|
"quelle": "features/dashboard/pages/DashboardSeite.tsx:177"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.umsatzBezahlt",
|
|
"de": "Umsatz (bezahlt)",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:105"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.zahlungseingangZeitraum",
|
|
"de": "Zahlungseingang im Zeitraum",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:107"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.offeneForderungen",
|
|
"de": "Offene Forderungen",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:113"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.zahlungsdauer",
|
|
"de": "Ø Zahlungsdauer",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:128"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.rechnungBisZahlungseingang",
|
|
"de": "Rechnung bis Zahlungseingang",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:130"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.deckungsbeitrag",
|
|
"de": "Deckungsbeitrag",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:136"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.gewichtetUeberAbschluesse",
|
|
"de": "Gewichtet über Abschlüsse",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:138"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.aktuellerZeitraumGegenVorjahr",
|
|
"de": "Aktueller Zeitraum gegen Vorjahr",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:147"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.grundlageBezahlteAusgangsrechnungenZahlungsdatum",
|
|
"de": "Grundlage sind bezahlte Ausgangsrechnungen zum Zahlungsdatum.",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:148"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.veraenderung",
|
|
"de": "Veränderung",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:171"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.offenerBestandStatus",
|
|
"de": "Offener Bestand nach Status",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:180"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.wieVielOffenenBestands",
|
|
"de": "Wie viel des offenen Bestands bereits überfällig ist",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:181"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.bezugsgroesseAusschliesslichOffeneBestand",
|
|
"de": "Bezugsgröße ist ausschließlich der offene Bestand zum Stichtag. Bezahlte Rechnungen sind nicht enthalten, sie würden über 90 % des Rings belegen und die Aussage erdrücken.",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:182"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.offeneForderungenAlter",
|
|
"de": "Offene Forderungen nach Alter",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:198"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.alterAbFaelligkeitsdatumAb",
|
|
"de": "Alter ab Fälligkeitsdatum. Ab 60 Tagen sinkt die Einbringungsquote erfahrungsgemäß deutlich.",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:200"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.aelter90Tage",
|
|
"de": "Älter als 90 Tage",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:213"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.abschreibungsrisiko",
|
|
"de": "Abschreibungsrisiko",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:217"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.ueberfaelligGesamt",
|
|
"de": "Überfällig gesamt",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:219"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.sortiertFaelligkeitArbeitslisteFuer",
|
|
"de": "Sortiert nach Fälligkeit, die Arbeitsliste für den Mahnlauf",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:242"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.keineOffenenRechnungen",
|
|
"de": "Keine offenen Rechnungen",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:249"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.rechnung",
|
|
"de": "Rechnung",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:50"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.gestellt",
|
|
"de": "Gestellt",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:65"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.ueberfaellig",
|
|
"de": "Überfällig",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:71"
|
|
},
|
|
{
|
|
"key": "app.analytics.finanzen.betrag",
|
|
"de": "Betrag",
|
|
"quelle": "features/dashboard/pages/FinanzenSeite.tsx:92"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.neueKunden",
|
|
"de": "Neue Kunden",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:105"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.wiederkehrendeKunden",
|
|
"de": "Wiederkehrende Kunden",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:113"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.mehrAuftrag",
|
|
"de": "Mehr als ein Auftrag",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:115"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.kundenwert",
|
|
"de": "Ø Kundenwert",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:120"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.jeKundeMindestensEinem",
|
|
"de": "Je Kunde mit mindestens einem Auftrag",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:122"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.reaktivierbar",
|
|
"de": "Reaktivierbar",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:127"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.ueber12MonateOhne",
|
|
"de": "Über 12 Monate ohne Auftrag",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:129"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.neukundenZeitverlauf",
|
|
"de": "Neukunden im Zeitverlauf",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:139"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.anlagedatumKundendatensatzes",
|
|
"de": "Anlagedatum des Kundendatensatzes",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:140"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.kundenQuelle",
|
|
"de": "Kunden nach Quelle",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:148"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.wieErstkontaktZustandeKam",
|
|
"de": "Wie der Erstkontakt zustande kam",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:149"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.empfehlungenBestandskundenZusammenZeigen",
|
|
"de": "Empfehlungen und Bestandskunden zusammen zeigen, wie stark der Betrieb ohne Werbebudget wächst.",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:150"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.kundenstruktur",
|
|
"de": "Kundenstruktur",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:162"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.privatGewerbeVerwaltung",
|
|
"de": "Privat, Gewerbe, Verwaltung",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:162"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.topKundenUmsatz",
|
|
"de": "Top-Kunden nach Umsatz",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:174"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.bezahlterGesamtumsatz",
|
|
"de": "Bezahlter Gesamtumsatz",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:175"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.kundenHistorieAberUeber",
|
|
"de": "Kunden mit Historie, aber über 12 Monate ohne Auftrag",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:185"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.alleKundenWarenZuletzt",
|
|
"de": "Alle Kunden waren zuletzt aktiv",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:192"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.durchschnittlichUeber30Tage",
|
|
"de": "Durchschnittlich über 30 Tage bis zum Zahlungseingang",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:199"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.keineAuffaelligkeiten",
|
|
"de": "Keine Auffälligkeiten",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:206"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.kunde",
|
|
"de": "Kunde",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:35"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.auftraege",
|
|
"de": "Aufträge",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:53"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.umsatz",
|
|
"de": "Umsatz",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:60"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.zahlung",
|
|
"de": "Ø Zahlung",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:67"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.letzterAuftrag",
|
|
"de": "Letzter Auftrag",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:81"
|
|
},
|
|
{
|
|
"key": "app.analytics.kunden.kundenGesamt",
|
|
"de": "Kunden gesamt",
|
|
"quelle": "features/dashboard/pages/KundenSeite.tsx:98"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.einsatz",
|
|
"de": "Im Einsatz",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:112"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.auslastung",
|
|
"de": "Ø Auslastung",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:119"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.produktiveStundenZuVerfuegbaren",
|
|
"de": "Produktive Stunden zu verfügbaren",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:121"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.produktivquote",
|
|
"de": "Produktivquote",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:126"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.anteilAuftragsbezogenerStunden",
|
|
"de": "Anteil auftragsbezogener Stunden",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:128"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.erfassteStunden",
|
|
"de": "Erfasste Stunden",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:132"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.abwesenheit",
|
|
"de": "Abwesenheit",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:138"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.urlaubKrankheitFortbildung",
|
|
"de": "Urlaub, Krankheit, Fortbildung",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:140"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.auslastungJeMitarbeiter",
|
|
"de": "Auslastung je Mitarbeiter",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:148"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.produktiveStundenGegenVertraglich",
|
|
"de": "Produktive Stunden gegen vertraglich verfügbare Stunden",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:149"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.werteUeber100Bedeuten",
|
|
"de": "Werte über 100 % bedeuten Überstunden. Dauerhaft über 95 % ist ein Warnsignal für Terminrisiken.",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:150"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.abschluesseJeMitarbeiter",
|
|
"de": "Abschlüsse je Mitarbeiter",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:165"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.anzahlGewaehltenZeitraumDahinter",
|
|
"de": "Anzahl im gewählten Zeitraum, dahinter der zugehörige Auftragswert",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:166"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.abwesenheiten",
|
|
"de": "Abwesenheiten",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:183"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.stundenGewaehltenZeitraum",
|
|
"de": "Stunden im gewählten Zeitraum",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:184"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.mitarbeiteruebersicht",
|
|
"de": "Mitarbeiterübersicht",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:197"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.alleGewerblichBeschaeftigtenKennzahlen",
|
|
"de": "Alle gewerblich Beschäftigten mit Kennzahlen",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:198"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.stunden",
|
|
"de": "Stunden",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:59"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.davonProduktiv",
|
|
"de": "davon produktiv",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:66"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.auslastung2",
|
|
"de": "Auslastung",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:73"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.abgeschlossen",
|
|
"de": "Abgeschlossen",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:92"
|
|
},
|
|
{
|
|
"key": "app.analytics.team.auftragswert",
|
|
"de": "Auftragswert",
|
|
"quelle": "features/dashboard/pages/TeamSeite.tsx:99"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.auslastungMonteure",
|
|
"de": "Ø Auslastung Monteure",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:111"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.zahlungseingangGewaehltenZeitraum",
|
|
"de": "Zahlungseingang im gewählten Zeitraum",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:173"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.fuenfGewerkeFesterRangfolge",
|
|
"de": "Fünf Gewerke in fester Rangfolge. Dieselbe Kodierung wie auf der Finanzseite. Ein Ring und eine Balkenliste für dieselbe Zahl wären zwei Bilder für einen Sachverhalt.",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:174"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.nurVorhabenFuerSchriftliches",
|
|
"de": "Nur Vorhaben, für die ein schriftliches Angebot erstellt wird. Wartung und Notdienst laufen ohne Angebot und würden die Quoten verfälschen. Rechte Spalte: Übergang von der vorherigen Stufe.",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:189"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.faelligkeitsdatumUeberschrittenNochNicht",
|
|
"de": "Fälligkeitsdatum überschritten, noch nicht abgeschlossen",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:214"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.keinAuftragUeberTermin",
|
|
"de": "Kein Auftrag ist über Termin: sehr gut.",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:221"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.faelligSeit",
|
|
"de": "Fällig seit",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:64"
|
|
},
|
|
{
|
|
"key": "app.analytics.uebersicht.umsatzZahlungseingang",
|
|
"de": "Umsatz (Zahlungseingang)",
|
|
"quelle": "features/dashboard/pages/UebersichtSeite.tsx:88"
|
|
},
|
|
{
|
|
"key": "app.shared.chart.161616",
|
|
"de": "#161616",
|
|
"quelle": "features/dashboard/utils/chartTheme.ts:149"
|
|
},
|
|
{
|
|
"key": "app.shared.chart.sonstige",
|
|
"de": "Sonstige",
|
|
"quelle": "features/dashboard/utils/chartTheme.ts:232"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.zahlungseingang",
|
|
"de": "Zahlungseingang",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:180"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.beauftragtArbeit",
|
|
"de": "beauftragt oder in Arbeit",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:204"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.meineAufgaben",
|
|
"de": "Meine Aufgaben",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:254"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.wasHeuteAnstehtWer",
|
|
"de": "Was heute ansteht und wer zugewiesen ist.",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:255"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.aufgaben",
|
|
"de": "Aufgaben",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:257"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.termineHeute",
|
|
"de": "Termine heute",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:262"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.einsaetzeAufmasseAbnahmenTages",
|
|
"de": "Einsätze, Aufmaße und Abnahmen des Tages.",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:263"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.termine",
|
|
"de": "Termine",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:265"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.hrAntraege",
|
|
"de": "HR-Anträge",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:270"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.offeneUrlaubsZeitkorrekturantraege",
|
|
"de": "Offene Urlaubs- und Zeitkorrekturanträge.",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:271"
|
|
},
|
|
{
|
|
"key": "app.dashboard.page.hrHub",
|
|
"de": "HR-Hub",
|
|
"quelle": "features/dashboard/view-models/dashboard.vm.ts:273"
|
|
}
|
|
]
|