Assist_Design/docs/assets/portal-swimlane.svg
T. Narantuya 7e053a666c Add sharp library for image processing and enhance provisioning logic
- Added sharp library to package.json for image manipulation capabilities.
- Updated pnpm-lock.yaml to include sharp dependency.
- Enhanced HealthController to include provisioning queue job counts in health checks.
- Improved error handling and logging in ProvisioningProcessor for better diagnostics.
- Refactored order fulfillment validation to utilize new WhmcsPaymentService for payment method checks.
- Updated documentation to reflect changes in the provisioning workflow and added new integration overview.
2025-09-06 13:58:54 +09:00

123 lines
5.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="720" viewBox="0 0 1200 720">
<defs>
<style>
.lane { fill: #f7f9fc; stroke: #d0d7de; }
.lane-header { fill: #e6eef8; stroke: #b6c6d6; font: 600 16px sans-serif; }
.step { fill: #ffffff; stroke: #94a3b8; rx: 8; }
.step-text { font: 12px sans-serif; fill: #0f172a; }
.label { font: 12px sans-serif; fill: #334155; }
.arrow { stroke: #475569; stroke-width: 2; fill: none; marker-end: url(#arrowhead); }
.num { fill: #2563eb; font: 600 12px sans-serif; }
</style>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#475569" />
</marker>
</defs>
<!-- Lanes -->
<rect x="30" y="20" width="260" height="680" class="lane"/>
<rect x="330" y="20" width="260" height="680" class="lane"/>
<rect x="630" y="20" width="260" height="680" class="lane"/>
<rect x="930" y="20" width="260" height="680" class="lane"/>
<!-- Headers -->
<rect x="30" y="20" width="260" height="40" class="lane-header"/>
<rect x="330" y="20" width="260" height="40" class="lane-header"/>
<rect x="630" y="20" width="260" height="40" class="lane-header"/>
<rect x="930" y="20" width="260" height="40" class="lane-header"/>
<text x="160" y="46" text-anchor="middle" class="lane-header">Customer</text>
<text x="460" y="46" text-anchor="middle" class="lane-header">Portal (BFF)</text>
<text x="760" y="46" text-anchor="middle" class="lane-header">Salesforce</text>
<text x="1060" y="46" text-anchor="middle" class="lane-header">WHMCS</text>
<!-- Steps: Customer -->
<rect x="50" y="90" width="220" height="56" class="step"/>
<text x="60" y="110" class="step-text">1) Sign Up &amp; Link Account</text>
<text x="60" y="126" class="step-text">Provide Customer Number</text>
<rect x="50" y="170" width="220" height="56" class="step"/>
<text x="60" y="190" class="step-text">2) Add Payment Method</text>
<text x="60" y="206" class="step-text">Secure SSO to WHMCS</text>
<rect x="50" y="250" width="220" height="56" class="step"/>
<text x="60" y="270" class="step-text">3) Browse Catalog</text>
<text x="60" y="286" class="step-text">Select Plan &amp; Addons</text>
<rect x="50" y="510" width="220" height="56" class="step"/>
<text x="60" y="530" class="step-text">7) View Invoices</text>
<text x="60" y="546" class="step-text">Pay via SSO</text>
<!-- Steps: Portal -->
<rect x="350" y="120" width="220" height="56" class="step"/>
<text x="360" y="140" class="step-text">Validate mapping &amp; address</text>
<text x="360" y="156" class="step-text">Create WHMCS client</text>
<rect x="350" y="200" width="220" height="56" class="step"/>
<text x="360" y="220" class="step-text">Open WHMCS payment page</text>
<text x="360" y="236" class="step-text">(SSO)</text>
<rect x="350" y="300" width="220" height="56" class="step"/>
<text x="360" y="320" class="step-text">Create Order in SF</text>
<text x="360" y="336" class="step-text">(snapshot address)</text>
<rect x="350" y="380" width="220" height="56" class="step"/>
<text x="360" y="400" class="step-text">Provision in WHMCS</text>
<text x="360" y="416" class="step-text">after approval</text>
<rect x="350" y="510" width="220" height="56" class="step"/>
<text x="360" y="530" class="step-text">Show subs &amp; invoices</text>
<!-- Steps: Salesforce -->
<rect x="650" y="300" width="220" height="56" class="step"/>
<text x="660" y="320" class="step-text">Review &amp; Approve</text>
<text x="660" y="336" class="step-text">Order</text>
<!-- Steps: WHMCS -->
<rect x="950" y="170" width="220" height="56" class="step"/>
<text x="960" y="190" class="step-text">Store Payment Methods</text>
<rect x="950" y="380" width="220" height="56" class="step"/>
<text x="960" y="400" class="step-text">Create Services &amp; Invoice</text>
<!-- Arrows + labels -->
<!-- Signup -> Portal create WHMCS client -->
<path d="M270 118 C 300 118, 320 118, 350 118" class="arrow"/>
<text x="310" y="110" class="label" text-anchor="middle">Customer Number</text>
<!-- Add payment -> Portal -> WHMCS -->
<path d="M270 198 C 300 198, 320 198, 350 198" class="arrow"/>
<path d="M570 228 C 600 228, 900 198, 950 198" class="arrow"/>
<text x="760" y="188" class="label" text-anchor="middle">SSO Payment Page</text>
<!-- Browse -> Create Order (Portal) -->
<path d="M270 278 C 300 278, 320 318, 350 318" class="arrow"/>
<text x="310" y="300" class="label" text-anchor="middle">Selected items</text>
<!-- Portal -> SF (create order) -->
<path d="M570 328 C 600 328, 620 328, 650 328" class="arrow"/>
<text x="610" y="320" class="label" text-anchor="middle">Order + address</text>
<!-- SF approve -> Portal provision -->
<path d="M760 356 C 760 390, 570 408, 570 408" class="arrow"/>
<text x="680" y="388" class="label">Approved</text>
<!-- Portal provision -> WHMCS -->
<path d="M570 408 C 770 408, 900 408, 950 408" class="arrow"/>
<text x="760" y="398" class="label" text-anchor="middle">AddOrder + Accept</text>
<!-- WHMCS -> Portal (subs & invoices) -->
<path d="M950 538 C 900 538, 600 538, 570 538" class="arrow"/>
<text x="760" y="528" class="label" text-anchor="middle">Subscriptions + Invoices</text>
<!-- Portal -> Customer (display) -->
<path d="M350 538 C 320 538, 300 538, 270 538" class="arrow"/>
<!-- Portal -> WHMCS (pay SSO) -->
<path d="M350 566 C 600 566, 900 566, 950 566" class="arrow"/>
<text x="760" y="560" class="label" text-anchor="middle">Pay Invoice (SSO)</text>
<!-- Legend -->
<text x="30" y="700" class="label">Legend: SSO = secure single sign-on; SF = Salesforce</text>
</svg>