nicegui based Customer Relation Management tool
niceSmartCRM replaces the legacy Java/Jersey/JPA smartCRM system. Both systems share the same
MariaDB smartcrm database during the transition; an anti-corruption layer translates the German
database schema to the English Python domain model. The database schema is only migrated
to English naming once the Java system is decommissioned.
crm/resources/fields.yaml is the single declarative source of that
translation: one record per field, keyed by entity and English field name, carrying the legacy
column, the json spelling of the JAXB export where it differs, the type, pk, reference
and the en/de labels. crm/fields.py reads it and serves
- the
from_smartcrm()conversion of the dataclasses in crm/crm_core.py - the i18n labels of the UI (there is no separate translation file)
- the graph schema of the UI: icon, key field and display order of every node type (there is no separate schema file)
- the DDL of English views over the untouched German tables:
smartcrm --views
Person:
_: {en: Person, de: Person, plural: persons, table: person, icon: person}
person_number: {en: Person Number, de: Personennummer, column: PersonNummer, pk: true}
first_name: {en: First Name, de: Vorname, column: Vorname}
organization_number: {en: Organization Number, de: Organisation, column: meineOrganisation_OrganisationNummer, reference: Organization}de is a label and column is the physical name; the two are distinct. See
issue #6.
PlantUML sources: docs/legacy_model.puml · docs/english_model.puml