Centurio Documentazione dei sistemi e dei moduli
🏛️ Architettura della piattaforma 🔑 Login
🏠 Tutti i moduli / crm_office / Classe di clienti
📘

Classe di clienti

customers crm_office 🛡️ RLS Protected

Struttura di processo e API derivati da codice.

Fachliche Bestimmung: Clientstamm <unk> documentazione processuale e API derivata dal codice.

⚡ Flussi di lavoro e cicli di vita

Ordini per il portale clienti e cascaderia ERP portal_order_cascade

Dal cestino del portale al servizio automatico di consegna di impianto di preventivo.

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
Selezione dei prodotti
cliente seleziona i prodotti e completa i set di campi di attributi dinamici.
Aktionen: Controllo obbligatorio nel browser
2. SUBMIT
Trasmissione degli ordini
POST a /portal/{slug}/ordine con attributti semantici_tipovalidati.
Aktionen: eseguire order_submit
3. QUOTE_GEN
Apparecchiature di offerta
Sistema genera quote con source_type='SYSTEM' e 'portal_order'.
Aktionen: Prendere attributi semantici
4. WORKORDER_GEN
Impianto di ordinazione
Prodotti automatici dell'ordine di esecuzione (ordini di lavoro) nell'ambito dell'ERP.
Aktionen: Capacità di trasmissione

Ordine d'uso: cliente crud subagento plan:command_customer_crud_subagent

Controllato piano duraturo (durable_plan), inizio: manual_command.

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

Benutzerbefehl: portal admin agent plan:command_portal_admin_agent

Controllato piano duraturo (durable_plan), inizio: manual_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

Richiesta di portale clienti plan:portal_request_dispatch

Consigli di controllo (durable_plan), start: domain_event.

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

🗄️ Modelli di dati

Customers customers RLS Aktiv
59 Feltri / colonne

Tabelle customers

Feldname Tipo di dati Dati Schlüssel Importanza professionale
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

🔌 Punto di partenza (UI & API)

Art Metodo Punto finale / percorso Titel & Zweck Il diritto
⚡ 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}/
Pagina di partenza del portale
Dispositivo di controllo dei dati e dei dati di controllo
Standard
🖥️ WEB-UI GET /portal/{slug}/bestellung
Pagina di ordinazione del portale
Ordini di catalogo con set di campi dinamici
Standard
🖥️ WEB-UI GET /portal/{slug}/rechnungen
Fatto di pagamento
Archivi di fatturazione e download PDF
Standard
⚡ REST API POST /portal/{slug}/bestellung
Invio dell'ordine
Valida i set di campo e genera quote/ordine di lavoro
Standard

🛡️ Regolamentazione e conformità

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • Capacità di verifica
  • Isolazione dei clienti (PostgreSQL RLS)