SIMticketsystem
AktivEigenes Ticketsystem (Teamleader-Ablösung): Mailimport und Versand, Personen, Firmen, Mailverlauf, KI-Formulierer, Zeiterfassung, Kundenabgleich mit der Zentrale
- Bereich
- Zentrale
- Start
- 30.05.2026
- Zuletzt
- 10.10.2026
- Am Zug
- René
Ticket #851 (Thomas, Life X) einer Firma zuordnen und beantworten; Commit e12f4c7 beim nächsten gesammelten Deploy pushen
Worum es geht
Das SIMticketsystem ist unser eigenes Support-Ticketsystem. Aus Mails an service@ (seit 16.07. über das Sammelpostfach tickets@) werden Tickets, die wir beantworten, zuordnen und abrechnen. Es löst Teamleader Stück für Stück ab: Personen und Firmen, Mailverlauf, Zeiterfassung mit Abrechnung, Rechnungen (eigene Akte: rechnungsmodul) und Übergabe an die Zentrale für Website-Aufträge (eigene Akte: website-auftraege-pipeline). Die Triage per KI läuft über OpenRouter (eigene Akte: ticket-triage).
Stand
- Live auf ticketsystem.sim-tools.cloud als zwei Coolify-Apps aus dem Team-Repo: Backend (Fastify, Postgres) und Frontend (Vue 3, Vite, Tailwind, nginx). Letzter ausgelieferter Stand ist 3371e69 (08.10.).
- Mail: IMAP-Import von tickets@ alle 60 s, Versand per SMTP als service@ (seit 13.07.), Threading über [SIM-id] und Header, Weiterleitungs-Erkennung, Beteiligte als sichtbares CC, optional HTML-Fassung mit Logo und Blindkopie (05.10.), Betreff änderbar.
- Personen: Bereich mit Suche, mehreren Firmen und mehreren E-Mail-Adressen je Person, Zusammenführen von Dubletten, E-Mail-Verlauf mit Reiter „Gesendet“, „Nachhaken“ aus einer Mail ohne Ticket (01.10.).
- KI: Antwort-Formulierer im Ticket und im E-Mail-Dialog, Assistent mit Werkzeugen (nur Vorschläge mit Bestätigungskarte), Stil-Lernen aus Korrekturen (seit 20.08.).
- Zeiterfassung: Wochenansicht, Projekte, Stundensätze, Abrechnung je Firma, einzelne Positionen abrechnen oder nicht berechnen, monatliche Zeitberichte per Mail, Excel und CSV, Umsatz-Übersicht für Berechtigte, externer Mitarbeiter Udo (09/2026 importiert).
- Zentrale: Hub-Modul
tickets.ts(Nav Betrieb › Tickets, Karte in der Kundenakte), automatischer Kunden-Abgleich Firma und Ansprechpartner (Hub v0.318.0, 18.09.). - Offene Arbeit im Repo: Commit e12f4c7 (10.10., Herausgeber-Artikel für mitfitINSIGHT als Ereignis an die Zentrale) liegt lokal, ist nicht gepusht.
Offen
- René Ticket #851 (Thomas, Life X, Agilea-Instanztrennung 20.10., Verträge über die Website bis 06.11.) einer Firma zuordnen (Kontakt 1404 ohne Firma, Life X Firmen 201 und 203 ohne Domain) und Thomas antworten.
- ich Commit e12f4c7 beim nächsten gesammelten Deploy pushen (Push ist Deploy, Go von René abwarten).
- René Preview-Mail an Tine (info@injoy-schwerin.de, 24.09.) kam unzustellbar zurück, kein erneuter Versand an info@newcircles-schwerin.de gespeichert; Frank Mäschig hat auf keine der drei Mails geantwortet.
- ich Gesendet-Ordner von service@ synchronisieren, damit Outlook-Antworten im Verlauf stehen (vorgemerkt 08.10.).
- ich ersten echten CC-Versand an Beteiligte beobachten (bisher nicht gesehen).
- ich Stil-Regeln im Admin beobachten, sobald echte Korrekturen vorliegen (Karte „KI-Stilregeln“).
- René
sim-tools.cloudin die Einstellunginternal_domainsaufnehmen (04.09., Stand heute prüfen). - René bei by Charlie info@bycharlie.de als weitere Adresse von Charleen Strunk hinterlegen (18.09., Stand heute prüfen).
- ich Hub-Härtung: Port 3000 des Backends war am 02.08. öffentlich erreichbar (Stand prüfen).
- Kleinigkeiten ohne Frist: Escape schließt Modale nicht, KI-Analyse-Karte sitzt im Ticket über dem Verlauf, Heller Modus mit Eyebrow-Texten auf dem Hintergrundbild schlecht lesbar (alles bewusst nicht ohne Renés Go angefasst).
Entscheidungen und Regeln
- 2026-10-08: Deploys sammeln, etwa einmal am Tag, nicht nach jedem Fix. Ausnahme nur bei akutem Bedarf nach Rücksprache.
- 2026-10-01: Zeitstempel überall in Berliner Zeit. Alte Zeiten vor dem 01.10.2026 (12:51 Uhr) bleiben in UTC, René will sie nicht umgerechnet haben.
- 2026-09-24: Kundenmails immer WEITERLEITEN (WG:), nie beantworten. Anhänge an einer Antwort erreichen das System nie.
- 2026-09-18: Jede Personensuche per Adresse geht über
KONTAKT_PER_EMAILausservices/contactEmails.js, nie nur übercontacts.email. - 2026-09-15: Mitarbeiter-Notizen stehen als eigene Karte im Ticket, zwei Kacheln unter dem Kopf (Renés Wunsch).
- 2026-08-20: Auto-Deploy der beiden Coolify-Apps ist AN. Ein Push auf main geht sofort live, deshalb Freigabe vor dem Push und danach Image-Tag und
/api/healthprüfen. - 2026-08-11: Eigene Postfächer kommen nie in den Verteiler (Schleifengefahr), Kollegen aus unserer Domain bleiben drin, Versand als sichtbares CC. Nie eine Firma raten, nie eine vorhandene Person überschreiben.
- 2026-08-05: Rechnungen werden automatisch dem Mitarbeiter „Buchhaltung“ zugewiesen. Regeln mit einer Freemail-Domain oder der eigenen Domain als einzigem Merkmal treffen nie.
- 2026-08-02: Zusammenspiel mit der Zentrale in zwei Stufen statt Verschmelzung. Kein Design-Angleich, René mag den eigenen Look (Token-Paket liegt in /root/transfer/sim-design-tokens).
- 2026-07-16: Posteingang ist tickets@, Versand bleibt service@. Cursor
mail_sync_state.last_uid_seenimmer erst NACH dem Neustart zurücksetzen. - 2026-07-12: LLM ist OpenRouter, nicht Anthropic (Env
OPENROUTER_API_KEY, Modell überAI_TRIAGE_MODEL). - Technik: Entfernen läuft über POST statt DELETE (Fastify weist DELETE ohne Body ab). Overlays nie mit
@click.selfschließen, sondern mitv-overlay-close.@click.stopnie auf die Tabellenzelle. Neue Bausteine auf Theme-Variablen bauen und beide Modi ansehen. Frontend-Build nur mit Node 22 (Host hat Node 18).
Verlauf
- Commit e12f4c7: Mails von René oder Dominik mit „Artikel … Insight“ im Betreff werden als Ereignis an die Zentrale gemeldet (Herausgeber-Artikel für mitfitINSIGHT). Lokal, nicht gepusht.
- Ticket #717 (Thomas, Life X): neue Mail landete über Outlook-References im alten Ticket. Abgespalten als Ticket #851, Code-Fix 3371e69 (
passtZumFaden, Folge-Analyseai_triage_folge) auf Renés Go („alles ausrollen“) um ca. 05:55 UTC gepusht. - dcd15cd und 734f24b: frei geschriebene Mails optional als gestaltete HTML-Fassung mit Logo und mit Blindkopie. Erster Einsatz: neun Nachfass-Mails an die Golf-Circle-Clubs (Tickets #815 bis #823).
- Rechnungsmodul bekommt Zugriffsliste, „Buchung zurückziehen“ und Dauerrechnungs-Text (Details in der Akte rechnungsmodul). Zeit-Import des externen Mitarbeiters Udo (09/2026, 136 h, 36 Einträge, Mitarbeiter 173) mit Skript zeit-import-extern.sh.
- aea92b2 E-Mail-Verlauf auf der Personenseite und Reiter „Gesendet“; 97a526e „Nachhaken“; bcdb4b6 Datenbank-Sitzung in Europe/Berlin.
- 6ad7cbc Kopfleiste umgebaut: runder blauer Plus-Knopf mit „Ticket erstellen“ und „Zeit erfassen“, E-Mail unter Einstellungen.
- ac846d5 Betreff ändern (
PATCH /subject) und Auftrags-Dialog mit Anweisungsfeld für den Website-Agenten (Hub v0.343.1). - df4a781 KI-Formulierer auch im E-Mail-Dialog. Vorfall Ticket #762 (SecData): Antwort statt Weiterleitung, Anhänge fehlten.
- 8e5d05e mehrere E-Mail-Adressen je Person und Zusammenführen live; a7a3ccd Hinweistext Kursplan.
- 038e236 Kontaktauswahl für Beteiligte live. Hub v0.318.0 (sim-ops 3c23058): neue Kunden bekommen Firma und Ansprechpartner automatisch im Ticketsystem, Knopf „Mit Ticketsystem abgleichen“ für Bestandskunden.
- bf12968 und f76d826 Mitarbeiter-Notizen im Ticket.
- 4d4e503 E-Mail von der Personenseite und weitere Firmen je Person (Anlass Frank Mäschig, InForm und Fit501).
- 488207c Ticket #689 (Balance Kassel): umgebrochene Von-Zeile in Outlook und Betreff-Regel mit Kombination mehrerer Wörter.
- dd87e83 Kunde im Betreff erkennen (
services/subjectCompany.js), Anlass Ticket #654 (K5). - 536c45a einzelne Positionen abrechnen oder „nicht berechnen“.
- 0328834 Gesamtstunden in der CSV, Excel-Export und versteckte Umsatz-Übersicht (Zugriff über
revenue_dashboard_employee_ids). - afd630b monatliche Zeitberichte je Kunde, August-Berichte an pfeiffer@ versendet (acht Kunden).
- Ausfall „Oberfläche lädt, keine Inhalte“ (IMAP-Fehler ohne Listener und nginx mit veralteter Backend-IP), Fix ebe1cfb.
- a9bb276 Modale schließen nicht mehr beim Markieren im Betreff; 910faae Weiterleitungen werden von Regel 56 nicht mehr verschluckt.
- a338cd4 Listenvorschau zeigt die neueste Kundennachricht.
- edd9978 Stil-Lernen aus Antwort-Korrekturen, 431b6e4 ganze Listenzeile klickbar. Abschluss dieses Tages: Stand 20.08.
- 3186fa9 Bereich „Personen“ (1.744 Personen, 1.244 ohne Firma), 3a86a24 Beteiligte in Kopie.
- 0fcb025 Weiterleitungs-Erkennung und
PATCH /tickets/:id/sender; 491e9b8 neueste Nachricht oben im Ticket. - 3fb4737 Absender-Spalte, Auto-Zuweisung bei erster aktiver Aktion, Kontakt-Zuordnung, Compose-Dialog mit Vorlagen.
- 67da36f Rechnungen automatisch an Buchhaltung, Freemail-Sicherung bei Absender-Regeln.
- Hub v0.69.0 (dae1c33) bindet das Ticketsystem an die Zentrale an; Repo-Freigabe für Agenten durch René; fa48a2c Zeiterfassungs-UX-Paket; 516d2f6 Abrechnung je Firma mit CSV.
- Repo-Konsolidierung: Org-Repo studios-in-motion-team ist die einzige aktive Quelle (02b5a3f), Coolify auf die Org-GitHub-App umgestellt.
- Mail-Quelle auf tickets@ umgestellt (676fadc); 336 alte Tickets auf Wunsch gelöscht (487 auf 151, vorher gesichert).
- SMTP-Versand live (692b768) und Threading (c88a830).
- OpenRouter-Triage, Team-Chat, Zeiterfassung (8272239), Stundensätze, KI-Assistent; Repo-Zugang wiederhergestellt.
- erster Commit im Repo.
Wo liegt was
- Arbeitskopie: /root/system-sim-ticketsystem (Push auf main = Coolify-Deploy beider Apps, Push in der Form
git -C /root/system-sim-ticketsystem push, dafür gibt es eine dauerhafte Permission-Regel). Remote über den SSH-Aliasgh-ticket-backup. - Alte Kopien: Volume des Hermes-Ticketagenten (…_sim-ticketsystem-data/_data/workspace, HEAD 93ca66d, hinter origin/main, nicht maßgeblich); /root/sim-ticketsystem-data ist eine Restkopie ohne Git und ohne Code. Vollsicherung der Historie vom 12.07.: /root/transfer/ticketsystem-notsicherung-20260712/system-sim-ticketsystem-full.bundle.
- Container: Backend
backend-g5qsxkkptephybb6gvmklma2-*(Coolify-App-ID 2, Port 3000), Frontend nginx (App-ID 4). Datenbank Postgres im Supabase-Container (Host 10.0.5.1). Manuelles Deploy überdocker exec coolify php artisan tinkermitqueue_application_deployment, danach Image-Tag und/api/healthprüfen. Die Coolify-API ist vom Host aus gesperrt. - Wichtige Env-Namen (Coolify, Backend):
OPENROUTER_API_KEY,AI_TRIAGE_MODEL,MAIL_IMAP_*,MAIL_SMTP_*,MAIL_ADDRESS,MAIL_SEND_ENABLED,MAIL_MARK_SEEN_AFTER_IMPORT,BILLING_REPORT_ENABLED,STYLE_LEARNING_ENABLED,HUB_SOURCE_TOKEN,JWT_SECRET. - Code:
backend/src/services(mailSync, mailSend, mailThreading, forwardedSender, subjectCompany, ticketContacts, ticketParticipants, contactEmails, styleLearning, billingReport, replyDraft, assistantService),backend/src/routes,frontend/src/viewsundcomponents(TicketDetailView, EmailComposeModal, TicketParticipants),backend/scripts(E2E-Skripte, triage-eval.mjs). - Tabellen (Auswahl): tickets, ticket_messages, mail_messages, contacts, contact_emails, contact_company_links, companies, ticket_participants, time_entries, projects, company_hourly_rates, app_settings, reply_draft_log, running_timers, mail_sync_state.
- Hub-Seite: sim-ops
hub/src/tickets.ts,ticketsKunde.ts,ticketsKundeCore.ts,ticketschatten.ts; Zentrale › Betrieb › Tickets und Kundenakte › Karte „Tickets“. - Skripte und Sicherungen: /root/scripts/zeit-import-extern.sh, /root/transfer/zeit-import-extern/, /root/transfer/ticketsystem-cleanup-20260716/, /root/transfer/ticket-717-split-undo-20261008/. Vault: 40-Projekte/SIMticketsystem.md, 50-Strategien/Zeiterfassung.md.
- Testrezept: Wegwerf-Postgres plus echtes Backend-Image mit gemountetem
srcin eigenem Docker-Netz ohne veröffentlichten Port (Server hat keine Firewall).