[opus-b2b-import-EXEC] B2B CRM enrichment IMPORTED - pipeline_contacts 46 → 60,299 (+60,253 from PwC+Kompass+SAP+Procurement) - pipeline_companies 2,111 → 37,552 (+35,441 PwC accounts) - 95% linked to company_id - 13k Government + 9.8k Finance + 8.6k Retail + 7.3k Manufacturing + 6.4k Pharma + 4.8k Energy - 610 Directors + 562 Achats + 461 CEOs - source pwc_contacts_import/pwc_accounts_import/kompass_elyka/sap_event/procurement_survey - API v3 enriched with pipeline stats and top decision makers - doctrine 63
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
opus
2026-04-17 14:46:26 +02:00
parent 7b8a42dda1
commit 4228fe2edd

View File

@@ -13,11 +13,16 @@ function q($sql) {
return $rows;
}
$out = ['ts' => date('c'), 'generator' => 'contacts-segmentation-live.php v2'];
$out = ['ts' => date('c'), 'generator' => 'contacts-segmentation-live.php v3 (pipeline included)'];
$summary = [];
foreach ([['leads','admin.leads'],['send_contacts','admin.send_contacts'],['weval_leads','admin.weval_leads']] as $pair) {
$rows = q("SELECT COALESCE(segment_type, 'UNCLASSIFIED'), count(*) FROM " . $pair[1] . " GROUP BY 1 ORDER BY 2 DESC");
foreach ([
['leads','admin.leads'],
['send_contacts','admin.send_contacts'],
['weval_leads','admin.weval_leads'],
['pipeline_contacts','admin.pipeline_contacts']
] as $pair) {
$rows = q("SELECT COALESCE(segment_type,'UNCLASSIFIED'), count(*) FROM " . $pair[1] . " GROUP BY 1 ORDER BY 2 DESC");
foreach ($rows as $r) $summary[$pair[0]][$r[0]] = (int)$r[1];
}
$out['summary'] = $summary;
@@ -25,22 +30,30 @@ $out['summary'] = $summary;
$industries = [];
$rows = q("SELECT industry, SUM(cnt) FROM admin.contacts_breakdown WHERE segment_type='B2B' AND industry IS NOT NULL GROUP BY 1 ORDER BY 2 DESC");
foreach ($rows as $r) $industries[$r[0]] = (int)$r[1];
$out['industries_b2b'] = $industries;
$out['industries_b2b_all_sources'] = $industries;
$pc = q("SELECT industry, count(*) FROM admin.pipeline_companies GROUP BY 1 ORDER BY 2 DESC LIMIT 20");
$rows = q("SELECT industry, count(*) FROM admin.pipeline_contacts WHERE segment_type='B2B' AND industry IS NOT NULL GROUP BY 1 ORDER BY 2 DESC");
$pc_ind = [];
foreach ($rows as $r) $pc_ind[$r[0]] = (int)$r[1];
$out['industries_pipeline_contacts_b2b'] = $pc_ind;
$pc = q("SELECT industry, count(*) FROM admin.pipeline_companies GROUP BY 1 ORDER BY 2 DESC LIMIT 25");
$pc_out = [];
foreach ($pc as $r) $pc_out[$r[0]] = (int)$r[1];
$out['pipeline_companies'] = $pc_out;
$out['pipeline_companies_by_industry'] = $pc_out;
$dom = q("SELECT industry, SPLIT_PART(email, '@', 2) d, count(*) FROM admin.leads WHERE segment_type='B2B' GROUP BY 1,2 ORDER BY 3 DESC LIMIT 30");
$dom_out = [];
foreach ($dom as $r) {
if (count($r) >= 3) $dom_out[] = ['industry' => $r[0], 'domain' => $r[1], 'count' => (int)$r[2]];
}
$out['top_b2b_domains'] = $dom_out;
$tt = q("SELECT job_title, count(*) FROM admin.pipeline_contacts WHERE (job_title ILIKE '%director%' OR job_title ILIKE '%directeur%' OR job_title ILIKE '%ceo%' OR job_title ILIKE '%cfo%' OR job_title ILIKE '%cto%' OR job_title ILIKE '%chief%' OR job_title ILIKE '%achat%' OR job_title ILIKE '%procurement%') AND job_title != '' GROUP BY 1 ORDER BY 2 DESC LIMIT 20");
$tt_out = [];
foreach ($tt as $r) if (count($r) >= 2) $tt_out[] = ['title' => $r[0], 'count' => (int)$r[1]];
$out['top_decision_makers'] = $tt_out;
$tot = q("SELECT (SELECT count(*) FROM admin.leads), (SELECT count(*) FROM admin.leads WHERE segment_type IS NOT NULL), (SELECT count(*) FROM admin.send_contacts), (SELECT count(*) FROM admin.send_contacts WHERE segment_type IS NOT NULL), (SELECT count(*) FROM admin.pipeline_companies)");
if (!empty($tot[0]) && count($tot[0]) >= 5) {
$src = q("SELECT source, count(*) FROM admin.pipeline_contacts GROUP BY 1 ORDER BY 2 DESC LIMIT 10");
$src_out = [];
foreach ($src as $r) if (count($r) >= 2) $src_out[$r[0]] = (int)$r[1];
$out['contacts_by_source'] = $src_out;
$tot = q("SELECT (SELECT count(*) FROM admin.leads), (SELECT count(*) FROM admin.leads WHERE segment_type IS NOT NULL), (SELECT count(*) FROM admin.send_contacts), (SELECT count(*) FROM admin.send_contacts WHERE segment_type IS NOT NULL), (SELECT count(*) FROM admin.pipeline_companies), (SELECT count(*) FROM admin.pipeline_contacts), (SELECT count(*) FROM admin.pipeline_contacts WHERE company_id IS NOT NULL)");
if (!empty($tot[0]) && count($tot[0]) >= 7) {
$p = $tot[0];
$out['progress'] = [
'leads_total' => (int)$p[0],
@@ -48,8 +61,11 @@ if (!empty($tot[0]) && count($tot[0]) >= 5) {
'send_contacts_total' => (int)$p[2],
'send_contacts_classified' => (int)$p[3],
'pipeline_companies_total' => (int)$p[4],
'leads_pct' => $p[0] > 0 ? round(100 * $p[1] / $p[0], 1) : 0,
'send_contacts_pct' => $p[2] > 0 ? round(100 * $p[3] / $p[2], 1) : 0,
'pipeline_contacts_total' => (int)$p[5],
'pipeline_contacts_linked_company' => (int)$p[6],
'leads_pct' => $p[0] > 0 ? round(100*$p[1]/$p[0], 1) : 0,
'send_contacts_pct' => $p[2] > 0 ? round(100*$p[3]/$p[2], 1) : 0,
'contacts_linked_pct' => $p[5] > 0 ? round(100*$p[6]/$p[5], 1) : 0,
];
}