Centurio Documents de système et de module
🏛️ Architecture de plateforme 🔑 Login
🏠 Tous les modules / portal_ecosystem / Le port d'accueil des clients B2B
🌐

Le port d'accueil des clients B2B

portal portal_ecosystem 🛡️ RLS Protected

Les services de service à la clientèle à plusieurs mandants: commandes de catalogue, facturation, rapports de service et support.

Fachliche Bestimmung: Portal de clients B2B exclusif pour les clients. Offre 14 modules spécialisés intégrés (produits, commandes avec des ensembles de champs d'attributs, offres, commandes, rapports de service, factures, dates, retours, installations et billets de support).

⚡ 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:

  • Article 15 du RGPD (Droit à l'information et à l'accès aux données)
  • B2B Sécurité des données et isolement RLS
Modules liés:
➔ customers ➔ finance ➔ workorders ➔ catalog ➔ returns