auto-sync-0145
This commit is contained in:
1
api/screens-health.json.pre-phantom-20260417-014047
Normal file
1
api/screens-health.json.pre-phantom-20260417-014047
Normal file
File diff suppressed because one or more lines are too long
@@ -411,15 +411,23 @@ Fichiers:
|
||||
foreach ($files as $f) {
|
||||
$name = basename($f);
|
||||
if ($name === "00-README.md") continue;
|
||||
$firstLine = trim(explode("\n", file_get_contents($f))[0]);
|
||||
$firstLine = trim(explode("
|
||||
", file_get_contents($f))[0]);
|
||||
$list[] = "- " . $name . " :: " . substr($firstLine, 0, 80);
|
||||
}
|
||||
sort($list);
|
||||
$out = "POSTS VAGUE 2 (DRAFT pending Yacine validation):\n";
|
||||
$out .= implode("\n", $list) . "\n\n";
|
||||
$out .= "Total: " . count($list) . " posts\n";
|
||||
$out .= "Path: $dir\n";
|
||||
$out .= "Status: indexed in Qdrant wevia_kb_768 (ids 70100-70106)\n";
|
||||
$out = "POSTS VAGUE 2 (DRAFT pending Yacine validation):
|
||||
";
|
||||
$out .= implode("
|
||||
", $list) . "
|
||||
|
||||
";
|
||||
$out .= "Total: " . count($list) . " posts
|
||||
";
|
||||
$out .= "Path: $dir
|
||||
";
|
||||
$out .= "Status: indexed in Qdrant wevia_kb_768 (ids 70100-70106)
|
||||
";
|
||||
$out .= "Action: review + validate + schedule publication";
|
||||
return ["provider"=>"opus46", "content"=>$out, "tool"=>"posts_v2"];
|
||||
}
|
||||
@@ -434,7 +442,52 @@ Fichiers:
|
||||
return ["provider"=>"opus46", "content"=>"POST $num: not found. Available: " . implode(",", array_map("basename", glob($dir."*.md"))), "tool"=>"show_post"];
|
||||
}
|
||||
$content = file_get_contents($files[0]);
|
||||
return ["provider"=>"opus46", "content"=>"POST " . basename($files[0]) . ":\n\n" . $content, "tool"=>"show_post"];
|
||||
return ["provider"=>"opus46", "content"=>"POST " . basename($files[0]) . ":
|
||||
|
||||
" . $content, "tool"=>"show_post"];
|
||||
}
|
||||
|
||||
|
||||
// INTENT: wave3_calendar (Vague 3 - 22 semaines, 6 campagnes) - wired 2026-04-17
|
||||
if (preg_match("/(vague|wave)\s*3|calendrier.*(lin|campagne)|editorial.*calendar|campagne.*post|plan.*editorial/iu", $m)) {
|
||||
$calFile = "/opt/weval-l99/audits/posts-v3/calendar.json";
|
||||
if (!file_exists($calFile)) {
|
||||
return ["provider"=>"opus46", "content"=>"CALENDAR: not found", "tool"=>"wave3_calendar"];
|
||||
}
|
||||
$cal = json_decode(file_get_contents($calFile), true);
|
||||
$out = "VAGUE 3 CALENDAR (22 semaines, " . count($cal["campaigns"]) . " campagnes, " . $cal["total_posts"] . " posts)\n\n";
|
||||
$out .= "Cadence: " . $cal["cadence"]["total_per_week"] . " posts/semaine (" . $cal["cadence"]["corporate_per_week"] . " corp + " . $cal["cadence"]["life_science_per_week"] . " LS)\n\n";
|
||||
foreach ($cal["campaigns"] as $c) {
|
||||
$out .= "---\n";
|
||||
$out .= "[" . $c["id"] . "] " . $c["title"] . " | " . $c["account"] . " | " . $c["weeks"] . "\n";
|
||||
$out .= " Theme: " . $c["theme"] . "\n";
|
||||
foreach ($c["posts"] as $p) {
|
||||
$out .= " - " . $p["id"] . " (" . $p["week"] . ") [" . $p["angle"] . "]\n";
|
||||
}
|
||||
}
|
||||
$out .= "\nFooter: " . $cal["tagline_systematic_footer"];
|
||||
return ["provider"=>"opus46", "content"=>$out, "tool"=>"wave3_calendar"];
|
||||
}
|
||||
|
||||
// INTENT: show_campaign (show 1 campaign detail)
|
||||
if (preg_match("/(show|voir|detail|montre)\s+campaign\s+(\S+)|campaign\s+(\S+)\s+(detail|show)/iu", $m, $cm)) {
|
||||
$cid = $cm[2] ?? $cm[3] ?? "";
|
||||
$cal = @json_decode(@file_get_contents("/opt/weval-l99/audits/posts-v3/calendar.json"), true);
|
||||
if (!$cal) return ["provider"=>"opus46", "content"=>"CAMPAIGN: calendar not found", "tool"=>"show_campaign"];
|
||||
foreach ($cal["campaigns"] as $c) {
|
||||
if (stripos($c["id"], $cid) !== false || stripos($c["title"], $cid) !== false) {
|
||||
$out = "CAMPAIGN " . $c["id"] . " - " . $c["title"] . "\n";
|
||||
$out .= "Account: " . $c["account"] . " | Weeks: " . $c["weeks"] . "\n";
|
||||
$out .= "Theme: " . $c["theme"] . "\n\n";
|
||||
foreach ($c["posts"] as $p) {
|
||||
$out .= "[" . $p["id"] . "] (" . $p["week"] . ")\n";
|
||||
$out .= " Angle: " . $p["angle"] . "\n";
|
||||
$out .= " Seed: " . $p["body_seed"] . "\n\n";
|
||||
}
|
||||
return ["provider"=>"opus46", "content"=>$out, "tool"=>"show_campaign"];
|
||||
}
|
||||
}
|
||||
return ["provider"=>"opus46", "content"=>"CAMPAIGN $cid: not found", "tool"=>"show_campaign"];
|
||||
}
|
||||
|
||||
|
||||
|
||||
69
linkedin-wave3-calendar.php
Normal file
69
linkedin-wave3-calendar.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
// /linkedin-wave3-calendar.php — Vague 3 editorial calendar 22 semaines
|
||||
header("Content-Type: text/html; charset=utf-8");
|
||||
$cal = @json_decode(@file_get_contents("/opt/weval-l99/audits/posts-v3/calendar.json"), true);
|
||||
if (!$cal) die("calendar not found");
|
||||
$COLORS = ["life-science" => "#7EDAB5", "corporate" => "#1B6CA8", "corporate+life-science" => "linear-gradient(90deg,#1B6CA8,#7EDAB5)"];
|
||||
?><!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<meta charset="utf-8">
|
||||
<title>WEVAL · Vague 3 — Calendrier éditorial LinkedIn 22 semaines</title>
|
||||
<script src="/widgets/audit-banner.js" defer></script>
|
||||
<style>
|
||||
body{font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;background:#0a0a0f;color:#e8e8f0;margin:0;padding:2rem;max-width:1100px;margin:0 auto;line-height:1.55}
|
||||
h1{font-size:2rem;background:linear-gradient(90deg,#1B6CA8,#7EDAB5);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.3rem}
|
||||
.meta{color:#9090a8;font-size:.85rem;margin-bottom:2rem}
|
||||
.stat{display:inline-block;background:#12132a;border:1px solid #2a2b4a;padding:10px 16px;border-radius:10px;margin:0 8px 8px 0}
|
||||
.stat .v{color:#7EDAB5;font-weight:800;font-size:1.3rem;font-family:monospace}
|
||||
.stat .l{color:#9090a8;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
|
||||
.camp{background:#12132a;border:1px solid #2a2b4a;border-radius:12px;padding:1.5rem;margin-bottom:1.5rem;position:relative}
|
||||
.camp-hdr{display:flex;gap:8px;margin-bottom:1rem;flex-wrap:wrap;align-items:center}
|
||||
.camp-tag{font-family:monospace;font-size:.75rem;background:#1a1b3a;padding:3px 10px;border-radius:6px;color:#9090a8}
|
||||
.camp-title{font-size:1.3rem;font-weight:800;margin-right:8px}
|
||||
.camp-acc{font-size:.75rem;font-weight:700;padding:4px 12px;border-radius:20px;color:#0a0a0f;text-transform:uppercase;letter-spacing:.05em}
|
||||
.camp-weeks{background:#2a2b4a;color:#e8e8f0;font-size:.75rem;padding:4px 12px;border-radius:20px;font-family:monospace;font-weight:700}
|
||||
.camp-theme{color:#7EDAB5;font-size:.95rem;margin-bottom:1rem;font-style:italic}
|
||||
.post{display:grid;grid-template-columns:90px 1fr 180px;gap:12px;padding:10px 14px;background:#0a0a0f;border-left:3px solid #7EDAB5;border-radius:6px;margin-bottom:6px;font-size:.9rem;align-items:center}
|
||||
.post .week{color:#7EDAB5;font-family:monospace;font-weight:700;text-align:center;background:#12132a;padding:5px;border-radius:6px}
|
||||
.post .angle{color:#9090a8;font-size:.8rem;text-align:right;font-family:monospace}
|
||||
.post .seed{color:#e8e8f0}
|
||||
.foot{margin-top:3rem;padding-top:1rem;border-top:1px solid #2a2b4a;color:#6565a0;font-size:.8rem}
|
||||
.sig{font-style:italic;color:#7EDAB5}
|
||||
</style></head><body>
|
||||
<h1>Vague 3 · Calendrier éditorial LinkedIn</h1>
|
||||
<div class="meta">Généré <?=htmlspecialchars($cal["generated_at"])?> · Source audit <?=htmlspecialchars($cal["source"])?></div>
|
||||
|
||||
<div style="margin-bottom:2rem">
|
||||
<div class="stat"><div class="v"><?=$cal["total_campaigns"]?></div><div class="l">Campagnes</div></div>
|
||||
<div class="stat"><div class="v"><?=$cal["total_posts"]?></div><div class="l">Posts</div></div>
|
||||
<div class="stat"><div class="v"><?=$cal["duration_weeks"]?></div><div class="l">Semaines</div></div>
|
||||
<div class="stat"><div class="v"><?=$cal["cadence"]["total_per_week"]?>/sem</div><div class="l">Cadence</div></div>
|
||||
</div>
|
||||
|
||||
<?php foreach ($cal["campaigns"] as $c):
|
||||
$bg = $COLORS[$c["account"]] ?? "#2a2b4a";
|
||||
?>
|
||||
<div class="camp">
|
||||
<div class="camp-hdr">
|
||||
<span class="camp-tag"><?=htmlspecialchars($c["id"])?></span>
|
||||
<span class="camp-title"><?=htmlspecialchars($c["title"])?></span>
|
||||
<span class="camp-acc" style="background:<?=$bg?>"><?=htmlspecialchars($c["account"])?></span>
|
||||
<span class="camp-weeks"><?=htmlspecialchars($c["weeks"])?></span>
|
||||
</div>
|
||||
<div class="camp-theme">📎 <?=htmlspecialchars($c["theme"])?></div>
|
||||
<?php foreach ($c["posts"] as $p): ?>
|
||||
<div class="post">
|
||||
<div class="week"><?=htmlspecialchars($p["week"])?></div>
|
||||
<div class="seed"><strong><?=htmlspecialchars($p["id"])?></strong><br><small><?=htmlspecialchars($p["body_seed"])?></small></div>
|
||||
<div class="angle"><?=htmlspecialchars($p["angle"])?></div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<div class="foot">
|
||||
<div class="sig"><?=htmlspecialchars($cal["tagline_systematic_footer"])?></div>
|
||||
<div><?=htmlspecialchars($cal["hashtags_corporate"])?> (corp) · <?=htmlspecialchars($cal["hashtags_life_science"])?> (LS)</div>
|
||||
<div style="margin-top:1rem"><a href="/linkedin-posts-wave2.php" style="color:#7EDAB5">← Posts V2 piliers</a> · <a href="/live-status.php" style="color:#7EDAB5">Live status</a> · <a href="/audits/AUDIT-LINKEDIN-ARCHI-2026-04-16.md" style="color:#7EDAB5">Audit complet</a></div>
|
||||
</div>
|
||||
</body></html>
|
||||
@@ -113,6 +113,7 @@ fetch('/api/ecosystem-health.php').then(r=>r.text().then(t=>{/* HTML_GUARD_V2_BA
|
||||
<div class="card wiki-item" data-tags="opus46-20260416232245"><h2 style="border:0;margin:0;padding:0">AUDIT LINKEDIN+ARCHI deploye widget banner sur 3 pages + int</h2><div style="color:#94a3b8;font-size:10px;margin-top:6px">AUDIT LINKEDIN+ARCHI deploye widget banner sur 3 pages + intents WEVIA Master wired L99 304/304<br><span style="color:#06b6d4">[16/04 23:22]</span></div></div>
|
||||
<div class="card wiki-item" data-tags="opus46-20260416233748"><h2 style="border:0;margin:0;padding:0">Wave 2 posts linkedin generes 6 piliers deployes preview pag</h2><div style="color:#94a3b8;font-size:10px;margin-top:6px">Wave 2 posts linkedin generes 6 piliers deployes preview page live<br><span style="color:#06b6d4">[16/04 23:37]</span></div></div>
|
||||
<div class="card wiki-item" data-tags="opus46-20260416233936"><h2 style="border:0;margin:0;padding:0">VAGUE2-2026-04-17 : 6 posts piliers LinkedIn deployes + inde</h2><div style="color:#94a3b8;font-size:10px;margin-top:6px">VAGUE2-2026-04-17 : 6 posts piliers LinkedIn deployes + indexes Qdrant 70100-70106 + intents posts_v2/show_post wired + L99 304/304<br><span style="color:#06b6d4">[16/04 23:39]</span></div></div>
|
||||
<div class="card wiki-item" data-tags="opus46-20260416234032"><h2 style="border:0;margin:0;padding:0">VAGUE2 2026-04-17: 6 pillar LinkedIn posts + posts_v2 intent</h2><div style="color:#94a3b8;font-size:10px;margin-top:6px">VAGUE2 2026-04-17: 6 pillar LinkedIn posts + posts_v2 intent wired + Qdrant 70100-70106 indexed + L99 304/304 unchanged<br><span style="color:#06b6d4">[16/04 23:40]</span></div></div>
|
||||
</div>
|
||||
<script>
|
||||
(function(){
|
||||
|
||||
Reference in New Issue
Block a user