feat: Affiliate program enrichment (Link Builder, Curated Collections, Smart Links)

This commit is contained in:
Dwindi Ramadhana
2026-06-03 14:04:17 +07:00
parent fd8eb38512
commit f8c733832e
22 changed files with 1348 additions and 10 deletions

View File

@@ -33,6 +33,8 @@ interface Referral {
currency: string;
created_at: string;
approved_at?: string;
utm_campaign?: string;
utm_source?: string;
}
export default function AffiliatesReferrals() {
@@ -88,7 +90,7 @@ export default function AffiliatesReferrals() {
// Export to CSV
const exportToCSV = () => {
const headers = ['ID', 'Affiliate', 'Order ID', 'Status', 'Commission', 'Currency', 'Created At'];
const headers = ['ID', 'Affiliate', 'Order ID', 'Status', 'Commission', 'Currency', 'Campaign', 'Created At'];
const rows = filteredReferrals.map(ref => [
ref.id,
ref.affiliate_name || `Affiliate #${ref.affiliate_id}`,
@@ -96,6 +98,7 @@ export default function AffiliatesReferrals() {
ref.status,
ref.commission_amount,
ref.currency,
[ref.utm_campaign, ref.utm_source].filter(Boolean).join(' / '),
new Date(ref.created_at).toISOString()
]);
@@ -311,6 +314,7 @@ export default function AffiliatesReferrals() {
<TableHead>{__('Affiliate')}</TableHead>
<TableHead>{__('Order ID')}</TableHead>
<TableHead>{__('Status')}</TableHead>
<TableHead>{__('Campaign')}</TableHead>
<TableHead>{__('Date')}</TableHead>
<TableHead className="text-right">{__('Commission')}</TableHead>
</TableRow>
@@ -336,6 +340,9 @@ export default function AffiliatesReferrals() {
{ref.status}
</span>
</TableCell>
<TableCell className="text-muted-foreground text-sm">
{[ref.utm_campaign, ref.utm_source].filter(Boolean).join(' / ') || '—'}
</TableCell>
<TableCell className="text-muted-foreground">
{new Date(ref.created_at).toLocaleDateString('id-ID', {
year: 'numeric',