🌐
B2B Müşteri Portalı (B2B Müşteri Portalı)
portal
portal_ecosystem
🛡️ RLS Protected
Müşteriler için çoklu görevli kendiliğinden hizmet: Katalog siparişleri, fatura çekimi, hizmet raporları ve destek.
Fachliche Bestimmung: Müşteri müşterileri için özel B2B müşteri portalı. 14 entegre uzmanlık modülü ( ürünler, özellik alanları, teklifler, siparişler, hizmet raporları, faturalar, tarihleri, dönüşler, tesisler ve destek biletleri) ve iki aşamalı özelliği (tenant_id + customer_id) ve iki aşamalı özellik yönetimi (global portal ayarları vs. müşteri bireysel özellikler) sağlar.
⚡ İş akışları ve yaşam döngüleri (4)
🗄️ Verim modelleri & alanlar (1)
🔌 Giriş noktaları (UI & API) (42)
🛡️ Yönetim ve Uyum
⚡ İş akışları ve yaşam döngüleri
Müşteri Portalı Siparişleri ve ERP Kaskaderi
portal_order_cascade
Müşteri portalı'ndaki eşya sepetinden, demirbaş'den ve teklif'dan otomatik teslimat siparişine kadar.
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
Ürün seçimi
müşteri ürünleri seçer ve dinamik özellik alan kümelerini doldurur.
Aktionen: Tarayıcıda zorunlu alan kontrolü
2. SUBMIT
Siparişleri aktarma
Tip-valyate edilen semantik_atributlar ile /portal/{slug}/sistem.
Aktionen: order_submit çalıştır
3. QUOTE_GEN
Teklif tesis
Sistem source_type= 'SYSTEM' ve 'portal_order' ile Quote oluşturuyor.
Aktionen: semantic_attribute kullan
4. WORKORDER_GEN
İletişim tesisleri
Yüklenme emrinin otomatik üretimi (work order) LVS/ERP'de.
Aktionen: depo veya yol açma
Kullanıcı talimatı: müşteriye malzeme
plan:command_customer_crud_subagent
Kontrol edilmiş Durable plan (durable_plan), başlangıç: manual_command.
1. customer_crud_subagent
customer_crud_subagent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "customer_crud_subagent", "condition_fact": null}
Aktionen: customer_crud_subagent
Benutzerbefehl: portal admin agent
plan:command_portal_admin_agent
Geprüfter Durable-Plan (unreviewed_plan), Start: 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
Müşteri Portalı Aramaları
plan:portal_request_dispatch
Kontrol edilmiş Durable plan (durable_plan), Başlangıç: domain_event.
1. portal_request_dispatch_agent
portal_request_dispatch_agent
{"key": "step_0", "label": "Portal-Anfrage als Aufgabe disponieren", "adapter": "agent.execute", "agent": "portal_request_dispatch_agent", "condition_fact": null}
Aktionen: portal_request_dispatch_agent
🗄️ Verim modelleri & alanlar
🔌 Giriş noktaları (UI & API)
| Art | Metod | Son nokta / yol | Titel & Zweck | Yasal |
|---|---|---|---|---|
| ⚡ 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}/ |
Portal Başlangıç Sayfa
Hızlı bağlantılar ve durum kabloları ile müşteri tablosu
|
Standard |
| 🖥️ WEB-UI | GET | /portal/{slug}/bestellung |
Portalı sipariş sayfası
Dinamik saha kümeleri ile katalog siparişleri
|
Standard |
| 🖥️ WEB-UI | GET | /portal/{slug}/rechnungen |
Portal faturaları
Hesap Arşivleri ve PDF indirimi
|
Standard |
| ⚡ REST API | POST | /portal/{slug}/bestellung |
Sipariş ver
Alan setlerini doğrulayıp quote/workorder oluşturur
|
Standard |
🛡️ Yönetim ve Uyum
Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:
- DSGVO 15 Maddesi (Bilme Hakkı ve Verilere Erişme Hakkı)
- B2B veri güvenliği ve RLS izolasyon
Bağlantı modüller: