Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# ![CRM](src/main/resources/META-INF/resources/images/logo.svg) B2B CRM

Languages: [English](README.md) | [Русский](README_ru.md) | [Deutsch](README_de.md) | [Italiano](README_it.md) | [Español](README_es.md)

`B2B CRM` is an enterprise demo application built with Jmix that showcases how to develop **production-ready** business systems
including `customers`, `orders`, `invoicing`, `finance` and `analytics`. <br>It reflects real **ERP/CRM** scenarios and demonstrates
best practices in domain modeling, UI, security, and business logic implementation.
Expand Down
157 changes: 157 additions & 0 deletions README_de.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# ![CRM](src/main/resources/META-INF/resources/images/logo.svg) B2B CRM

Sprachen: [English](README.md) | [Русский](README_ru.md) | [Deutsch](README_de.md) | [Italiano](README_it.md) | [Español](README_es.md)

`B2B CRM` ist eine Enterprise-Demoanwendung auf Basis von Jmix, die zeigt, wie **produktionsreife** Geschäftssysteme
für `Kunden`, `Aufträge`, `Rechnungsstellung`, `Finanzen` und `Analysen` entwickelt werden. <br>Sie bildet reale **ERP/CRM**-Szenarien ab und demonstriert
Best Practices für Domänenmodellierung, UI, Sicherheit und die Implementierung von Geschäftslogik.

## 📑 Inhaltsverzeichnis

- [Überblick](#-überblick)
- [Technischer Stack](#-technischer-stack)
- [Verwendete Add-ons](#-verwendete-add-ons)
- [Build und Start](#-build-und-start)
- [AI-Assistent](#-ai-assistent)
- [Demo-Daten](#-demo-daten)
- [Konten](#-anwendungskonten)
- [Domänenmodell](#-domänenmodell)
- [Rollenmodell](#-rollenmodell)

## 📖 Überblick

Dieses Projekt modelliert einen typischen B2B-Vertriebsablauf:

- Produkt- und Kategorienkatalog verwalten
- Kunden und Kontakte pflegen
- Aufträge und Auftragspositionen nachverfolgen
- Rechnungen ausstellen und Zahlungen erfassen
- Einen AI-Assistenten nach geschäftlichen Erkenntnissen fragen
- Aufgaben und letzte Aktivitäten überwachen
- Vertriebsanalysen anzeigen

## 🛠️ Technischer Stack

- Java 21
- Jmix 2.7
- Spring Boot 3
- HSQLDB

## 🧩 Verwendete Add-ons

- Audit
- Application settings
- Charts
- Data tools
- Dynamic attributes
- Grid export
- Local file storage
- Reports, einschließlich einer Rechnungsvorlage

## 🚀 Build und Start

Voraussetzungen: Java 21+

### Projekt starten

1. Starte die Jmix-Run-Konfiguration [B2B CRM](.run/crm-app.run.xml) oder führe aus

```bash
./gradlew bootRun
```

2. [Anwendungs-URL öffnen](http://localhost:8080/b2b-crm)

### Start per JAR

```bash
./gradlew bootJar -Pvaadin.productionMode
```

```bash
java -jar build/libs/crm.jar
```

### Start per Docker

```bash
docker build -t jmix-crm .
```

```bash
docker run --rm -p 8080:8080 jmix-crm
```

### Start per Docker Compose

```bash
docker-compose up
```

## 🤖 AI-Assistent

Die Anwendung enthält einen integrierten `CRM AI`-Arbeitsbereich für die natürlichsprachliche Analyse von CRM-Daten.

Wichtige Funktionen:

- Geschäftsfragen zu Kunden, Aufträgen, Rechnungen, Zahlungen und Vertriebsleistung stellen
- Die Datenzugriffsrechte des aktuellen Benutzers berücksichtigen und Konversationen nur für ihren Autor sichtbar halten
- Integrierte Geschäftsberichte wie `Client 360 Report` und `Category Cashflow Risk Allocation Report` verwenden
- Den Konversationsverlauf mit automatisch generierten Chat-Titeln speichern
- Dateien in die Konversation hochladen und den Assistenten unterstützte Dokumente und Bilder analysieren lassen
- Interaktive Links zu CRM-Datensätzen direkt in Antworten generieren

Konfiguration:

- Setze `spring.ai.openai.api-key` in [application.properties](src/main/resources/application.properties) oder stelle die Umgebungsvariable `SPRING_AI_OPENAI_APIKEY` bereit

Nach der Aktivierung öffne den Menüpunkt `CRM AI` im Hauptmenü, um eine neue Konversation zu starten.

## 🎲 Demo-Daten

Das lokale Profil generiert Demo-Daten beim Start der Anwendung:

- Die Generierung von Demo-Daten kann mit der Eigenschaft `crm.generateDemoData`
in [application.properties](src/main/resources/application.properties) deaktiviert werden
- Der Katalog wird aus [catalog.xlsx](src/main/resources/demo-data/catalog.xlsx) importiert

## 👥 Anwendungskonten

| Position | Benutzername | Passwort | Zugriff |
|-----------------|---------------|----------|-------------------------------------------------|
| Administrator | ```admin``` | admin | Vollzugriff auf alle Daten und Einstellungen |
| Supervisor | ```james``` | james | Manager + Katalogverwaltung + Konten zuweisen |
| Manager | ```manager``` | manager | Vollzugriff auf alle Kunden und Aufträge |
| Account Manager | ```alice``` | alice | Sieht nur Kunden, die Alice Brown zugewiesen sind |
| Account Manager | ```robert``` | robert | Sieht nur Kunden, die Robert Taylor zugewiesen sind |

## ⚙️ Domänenmodell

```mermaid
classDiagram
Client o-- Contact
Client o-- Order
Client o-- Invoice
Client o-- Payment
Client o-- Address

Order *-- OrderItem
OrderItem --> CategoryItem
Category o-- CategoryItem

Invoice o-- Payment
```

## 🔐 Rollenmodell

Die Anwendung verwendet ein hierarchisches Rollenmodell:

- `Administrator`: Vollzugriff auf alle Anwendungsfunktionen, Entitäten und Einstellungen.
- `Supervisor`: Erweitert die Manager-Rolle um zusätzliche administrative Funktionen:
- Produktkatalog verwalten, einschließlich Categories und Category Items.
- Account Managers Kunden zuweisen.
- `Manager`: Primäre Rolle für Vertriebsprozesse.
- Vollzugriff auf Clients, Contacts, Orders, Invoices und Payments.
- Lesezugriff auf den Produktkatalog.
- Eigene Tasks verwalten.
- `UI Minimal`: Minimaler Zugriff, der Anmeldung und grundlegende Navigation ermöglicht.
157 changes: 157 additions & 0 deletions README_es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# ![CRM](src/main/resources/META-INF/resources/images/logo.svg) B2B CRM

Idiomas: [English](README.md) | [Русский](README_ru.md) | [Deutsch](README_de.md) | [Italiano](README_it.md) | [Español](README_es.md)

`B2B CRM` es una demo de aplicación empresarial creada con Jmix que muestra cómo desarrollar sistemas de negocio **listos para su puesta en producción**
para `clientes`, `pedidos`, `facturación`, `finanzas` y `analítica`. <br>Refleja escenarios reales **ERP/CRM** y demuestra
buenas prácticas de modelado de dominio, UI, seguridad e implementación de lógica de negocio.

## 📑 Índice

- [Resumen](#-resumen)
- [Stack técnológico](#-stack-técnico)
- [Add-ons utilizados](#-add-ons-utilizados)
- [Build y ejecución](#-build-y-ejecución)
- [Asistente de IA](#-asistente-de-ia)
- [Datos demo](#-datos-demo)
- [Cuentas](#-cuentas-de-la-aplicación)
- [Modelo de dominio](#-modelo-de-dominio)
- [Modelo de roles](#-modelo-de-roles)

## 📖 Resumen

Este proyecto modela un flujo típico de ventas B2B para:

- gestionar el catálogo de productos y categorías
- mantener clientes y contactos
- hacer seguimiento de pedidos y líneas de pedido
- emitir facturas y registrar pagos
- preguntar a un asistente de IA por perspectivas de negocio
- supervisar tareas y actividades recientes
- ver analítica de ventas

## 🛠️ Stack técnológico

- Java 21
- Jmix 2.7
- Spring Boot 3
- HSQLDB

## 🧩 Add-ons utilizados

- Audit
- Application settings
- Charts
- Data tools
- Dynamic attributes
- Grid export
- Local file storage
- Reports, incluida una plantilla de factura

## 🚀 Build y ejecución

Requisitos: Java 21+

### Para ejecutar el proyecto

1. Ejecuta la configuración Jmix [B2B CRM](.run/crm-app.run.xml) o ejecuta

```bash
./gradlew bootRun
```

2. [Abre la URL de la aplicación](http://localhost:8080/b2b-crm)

### Ejecutar mediante JAR

```bash
./gradlew bootJar -Pvaadin.productionMode
```

```bash
java -jar build/libs/crm.jar
```

### Ejecutar mediante Docker

```bash
docker build -t jmix-crm .
```

```bash
docker run --rm -p 8080:8080 jmix-crm
```

### Ejecutar mediante Docker Compose

```bash
docker-compose up
```

## 🤖 Asistente de IA

La aplicación incluye un espacio de trabajo integrado `CRM AI` para el análisis de datos CRM en lenguaje natural.

Capacidades principales:

- Hacer preguntas de negocio sobre clientes, pedidos, facturas, pagos y rendimiento de ventas
- Respetar los permisos de acceso a datos del usuario actual y mantener las conversaciones privadas para su autor
- Usar informes de negocio integrados como `Client 360 Report` y `Category Cashflow Risk Allocation Report`
- Mantener el historial de conversación con títulos de chat generados automáticamente
- Subir archivos a la conversación y permitir que el asistente analice documentos e imágenes compatibles
- Generar enlaces interactivos a registros CRM directamente en las respuestas

Configuración:

- Define `spring.ai.openai.api-key` en [application.properties](src/main/resources/application.properties) o proporciona la variable de entorno `SPRING_AI_OPENAI_APIKEY`

Cuando esté habilitado, abre el elemento `CRM AI` en el menú principal para iniciar una nueva conversación.

## 🎲 Datos demo

El perfil local genera datos demo al iniciar la aplicación:

- Puedes desactivar la generación de datos demo con la propiedad `crm.generateDemoData`
en [application.properties](src/main/resources/application.properties)
- El catálogo se importa desde [catalog.xlsx](src/main/resources/demo-data/catalog.xlsx)

## 👥 Cuentas de la aplicación

| Puesto | Usuario | Contraseña | Acceso |
| ----------------------------------------- | --------- | ---------- | ----------------------------------------------------- |
| Administrador del sistema (Administrator) | `admin` | admin | Acceso completo a todos los datos y configuraciones |
| Supervisor | `james` | james | Manager + gestión de catálogo + asignación de cuentas |
| Manager | `manager` | manager | Acceso completo a todos los clientes y pedidos |
| Gestora de cuenta (Account Manager) | `alice` | alice | Solo ve clientes asignados a Alice Brown |
| Gestor de cuenta (Account Manager) | `robert` | robert | Solo ve clientes asignados a Robert Taylor |

## ⚙️ Modelo de dominio

```mermaid
classDiagram
Client o-- Contact
Client o-- Order
Client o-- Invoice
Client o-- Payment
Client o-- Address

Order *-- OrderItem
OrderItem --> CategoryItem
Category o-- CategoryItem

Invoice o-- Payment
```

## 🔐 Modelo de roles

La aplicación usa un modelo jerárquico de roles:

- `Administrator`: acceso completo a todas las funciones, entidades y configuraciones de la aplicación.
- `Supervisor`: como el rol Manager (ver más abajo), pero con capacidades administrativas adicionales:
- Gestiona el catálogo de productos, incluidas Categories y Category Items.
- Asigna Account Managers a Clients.
- `Manager`: rol principal para operaciones de ventas.
- Acceso completo a Clients, Contacts, Orders, Invoices y Payments.
- Acceso de solo lectura al catálogo de productos.
- Gestión de sus propias Tasks.
- `UI Minimal`: acceso mínimo que permite iniciar sesión y navegación básica.
Loading
Loading