gg d30adf1579 feat(calllog): Tags einer Gesprächsnotiz zuordnen (n:m)
Backend:
- Neues CallLogTag-Model (Tabelle call_logs_tags) mit Relationship
  auf CallLog (cascade delete-orphan); to_dict liefert 'tags'.
- Migration _db_V01_11 (idempotent via create_all).
- _set_call_log_tags in create/update_call_log: ersetzt
  Tag-Zuordnungen, filtert is_parent-Tags, eliminiert Duplikate.
- _parse_date wandelt ISO-Strings in date-Objekte (fixt autoflush-
  Crash bei Date-Spalten).

Frontend:
- iCallLog um tags (Lesen) und tag_ids (Schreiben) ergänzt.
- Neues generisches MultiSelect-Widget (widgets/select.ts):
  Badges + Edit-Button, inline Modal mit Suchfeld, Checkbox-Liste,
  OK-Button; konfigurierbare Texte (placeholder, modalTitle,
  editTooltip).
- Call_Log-Formular: Tag-Auswahl via MultiSelect, Submit via
  FormData.getAll; Tag-Badges in der Listenansicht hinter dem Betreff.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-09-19 15:12:36 +02:00

kbcrm

[Kurzbeschreibung folgt – Zweck und Ziel der Applikation]

Authentifizierung vollständig an Zitadel delegiert. Lokale Datenhaltung, Benutzer- und Rollenverwaltung über SQLite.


Technologie-Stack

Komponente Technologie
Backend Python Flask 2.x
OIDC-Client Authlib
Datenbank SQLite via SQLAlchemy
IdP Zitadel
Produktion Docker / waitress
web-js-frontend mithril.js

Lokale Entwicklung

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env    # Zitadel-Credentials eintragen
flask db-init           # Schema initialisieren
flask seed-db           # Testdaten einspielen
flask run               # App startet auf http://localhost:5000
S
Description
Akquise CRM für KBPlus
Readme
1.2 MiB
0 Stars 5 Watchers 0 Forks
Languages
TypeScript 61.1%
Python 31.6%
CSS 4.3%
Shell 1.4%
Dockerfile 0.8%
Other 0.8%