Centurio Documents de système et de module
🏛️ Architecture de plateforme 🔑 Login
🏠 Tous les modules / crm_office / Les produits de la société
📘

Les produits de la société

customers crm_office 🛡️ RLS Protected

Les documents de processus et d'API dérivés du code.

Fachliche Bestimmung: Clientstamm <unk> documentation de processus et d'API dérivées du code.

⚡ Flux de travail et cycles de vie

Commande du portail client et cascade de la RER portal_order_cascade

Du panier dans le portail client à l'ordre de livraison automatique équipement de devis.

sequenceDiagram Kunde im Portal->>PortalAPI: POST /portal/{slug}/bestellung (Positionen & Fieldsets) PortalAPI->>PortalAPI: validate_attribute_values() PortalAPI->>DB: INSERT INTO quotes (source_type = 'SYSTEM') PortalAPI->>DB: INSERT INTO work_orders (order_type = 'delivery', status = 'SCHEDULED') PortalAPI-->>Kunde im Portal: Bestätigungsseite & Auftragsnummer
1. CATALOG
Sélection des produits
client sélectionne les produits et remplit les ensembles de champs d'attributs dynamiques.
Aktionen: Examen obligatoire dans le navigateur
2. SUBMIT
Transmission des commandes
POST à /portal/{slug}/commande avec des attributs sémantiques typé validés.
Aktionen: exécuter l'ordre_subit
3. QUOTE_GEN
Appareil d'offre
Le système génère des quotas avec source_type='SYSTEM' et 'portal_order'.
Aktionen: Prendre en charge les attributs sémantique
4. WORKORDER_GEN
Installation de commandes
Produits automatiques de l'ordre d'exécution (ordre de travail) dans le LVS/ERP.
Aktionen: Les écouteurs de la ligne de conduite

Commande d'utilisation: client cru subagent plan:command_customer_crud_subagent

Plan durable vérifié (durable_plan), démarrage: manuel_command.

1. customer_crud_subagent
customer_crud_subagent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aktionen: customer_crud_subagent

Benutzerbefehl: portal admin agent plan:command_portal_admin_agent

Plan durable vérifié (durable_plan), démarrage: manuel_command.

1. portal_admin_agent
portal_admin_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "portal_admin_agent", "condition_fact": null}
Aktionen: portal_admin_agent

Requête de portail client plan:portal_request_dispatch

Plan durable vérifié (durable_plan), démarrage: domaine_événement.

1. portal_request_dispatch_agent
portal_request_dispatch_agent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aktionen: portal_request_dispatch_agent

🗄️ Modèles de données

Customers customers RLS Aktiv
59 Les champs / colonnes

Tabelle customers

Feldname Type de données Le dépôt Schlüssel Importance professionnelle
type VARCHAR(48) Ja * - Feld type
name VARCHAR(255) Ja * - Feld name
customer_number VARCHAR(64) Nein - Feld customer_number
company_name VARCHAR(255) Nein - Feld company_name
parent_customer_id UUID Nein FK ➔ customers.id Feld parent_customer_id
billing_recipient_customer_id UUID Nein FK ➔ customers.id Feld billing_recipient_customer_id
main_contact_id UUID Nein FK ➔ contacts.id Feld main_contact_id
email VARCHAR(320) Nein - Feld email
phone VARCHAR(64) Nein - Feld phone
mobile VARCHAR(64) Nein - Feld mobile
street VARCHAR(255) Nein - Feld street
postal_code VARCHAR(16) Nein - Feld postal_code
city VARCHAR(128) Nein - Feld city
country_code VARCHAR(2) Nein - Feld country_code
latitude NUMERIC(9, 6) Nein - Feld latitude
longitude NUMERIC(9, 6) Nein - Feld longitude
tax_id VARCHAR(32) Nein - Feld tax_id
vat_id VARCHAR(32) Nein - Feld vat_id
peppol_endpoint_id VARCHAR(64) Nein - Feld peppol_endpoint_id
peppol_endpoint_scheme VARCHAR(16) Nein - Feld peppol_endpoint_scheme
category VARCHAR(48) Ja * - Feld category
website VARCHAR(255) Nein - Feld website
fax VARCHAR(64) Nein - Feld fax
iban VARCHAR(34) Nein - Feld iban
bic VARCHAR(11) Nein - Feld bic
bank_name VARCHAR(128) Nein - Feld bank_name
account_holder VARCHAR(255) Nein - Feld account_holder
payment_terms VARCHAR(128) Nein - Feld payment_terms
payment_term_code VARCHAR(32) Nein - Feld payment_term_code
discount_days INTEGER Nein - Feld discount_days
discount_percent NUMERIC(5, 2) Nein - Feld discount_percent
default_pricelist_id UUID Nein FK ➔ pricelists.id Feld default_pricelist_id
credit_limit NUMERIC(12, 2) Nein - Feld credit_limit
default_currency VARCHAR(3) Nein - Feld default_currency
language VARCHAR(10) Nein - Feld language
birthday DATE Nein - Feld birthday
department VARCHAR(128) Nein - Feld department
job_title VARCHAR(128) Nein - Feld job_title
external_reference VARCHAR(128) Nein - Feld external_reference
receivable_account_code VARCHAR(32) Nein - Feld receivable_account_code
payable_account_code VARCHAR(32) Nein - Feld payable_account_code
default_location_id UUID Nein FK ➔ locations.id Feld default_location_id
preferred_shipping_method VARCHAR(128) Nein - Feld preferred_shipping_method
purchasing_discount_group VARCHAR(128) Nein - Feld purchasing_discount_group
notes TEXT Nein - Feld notes
portal_enabled BOOLEAN Ja * - Feld portal_enabled
portal_features JSONB Nein - Feld portal_features
status VARCHAR(48) Ja * - Feld status
detection_confidence NUMERIC(4, 3) Nein - Feld detection_confidence
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
deleted_at DATETIME Nein - Feld deleted_at

🔌 Les points d'entrée (UI et API)

Art Le mode de fonctionnement Point de fin / parcours Titel & Zweck Leur
⚡ REST API DELETE /api/v1/customers/{customer_id}
delete_customer
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API DELETE /api/v1/customers/{customer_id}/contacts/{contact_id}
delete_contact
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API GET /api/v1/customers
list_customers
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/stats
customer_stats
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}
get_customer
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/contacts
list_contacts
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/invoice-recipient
get_invoice_recipient
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/portal
customer_portal_state
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/shop-rates
list_partner_shop_rates
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/tree
get_customer_tree
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers
customers_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/new
customer_create_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/{customer_id}
customer_detail_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/{customer_id}/edit
customer_detail_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/{customer_id}/portal
customer_portal_admin_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /portal/{slug}/profil
profile_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API PATCH /api/v1/customers/{customer_id}
update_customer
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API PATCH /api/v1/customers/{customer_id}/contacts/{contact_id}
update_contact
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers
create_customer
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/contacts
create_contact
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/accounts
customer_portal_account_add
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/accounts/{account_id}/password
customer_portal_account_password
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/accounts/{account_id}/status
customer_portal_account_status
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/invites
customer_portal_invite
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/invites/{invite_id}/revoke
customer_portal_invite_revoke
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/toggle
customer_portal_toggle
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal
customer_portal_admin_save
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/accounts
customer_portal_account_create
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/accounts/{account_id}/password
customer_portal_account_password
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/accounts/{account_id}/status
customer_portal_account_status
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/invites
customer_portal_invite_create
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/invites/{invite_id}/revoke
customer_portal_invite_revoke
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil
profile_submit
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/kontakte
profile_contact_save
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/kontakte/{contact_id}/loeschen
profile_contact_delete
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/standorte
profile_location_save
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/standorte/{location_id}/deaktivieren
profile_location_deactivate
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API PUT /api/v1/customers/{customer_id}/shop-rates
upsert_partner_shop_rate
Semantic binding: operator_surface; mutation=True
customers
🖥️ WEB-UI GET /portal/{slug}/
Page de départ du portail
Tableau de bord de clients avec accès rapide et chaînes de statut
Standard
🖥️ WEB-UI GET /portal/{slug}/bestellung
Page de commande du portail
Commande de catalogues avec des ensembles de champs dynamiques
Standard
🖥️ WEB-UI GET /portal/{slug}/rechnungen
Résultats de la procédure
Archivage des factures et téléchargement PDF
Standard
⚡ REST API POST /portal/{slug}/bestellung
Remplacement de la commande
Valider les champs et générer des quotas/ordres de travail
Standard

🛡️ Réglementation et conformité

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • La mise en œuvre de la politique de sécurité
  • Les données de l'expertise sont définies dans le tableau de bord.