diff --git a/api/wevia-apple-intents.php b/api/wevia-apple-intents.php
new file mode 100644
index 000000000..48824a754
--- /dev/null
+++ b/api/wevia-apple-intents.php
@@ -0,0 +1,105 @@
+ $n) if ($n) $lines[] = " · " . $t . ": " . $n;
+ $lines[] = "Tasks pending: " . ($s["tasks_pending"] ?? 0);
+ $lines[] = "Alertes P0: " . ($s["alerts"] ?? 0);
+ $lines[] = "Opportunities: " . ($s["opportunities"] ?? 0);
+ $lines[] = "\nUI: https://weval-consulting.com/wevia-apple.html";
+ return implode("\n", $lines);
+ }
+ }
+ // apple recommendations
+ if (preg_match('/\b(apple|iphone)\s*(reco|recommand)/iu', $prompt) || preg_match('/recommand.*(apple|iphone)/iu', $prompt)) {
+ $r = @json_decode(@file_get_contents("http://127.0.0.1/api/wevia-apple-ingest.php?action=recommendations"), true);
+ if ($r) {
+ $lines = ["💡 Top recommandations WEVIA Apple (" . ($r["total"] ?? 0) . " total)"];
+ foreach (array_slice($r["recommendations"] ?? [], 0, 10) as $i => $reco) {
+ $lines[] = ($i+1) . ". [" . $reco["priority"] . "] " . $reco["label"];
+ $lines[] = " → " . $reco["action"];
+ }
+ if (empty($r["recommendations"])) $lines[] = "(Aucune reco — ingère du contenu d'abord)";
+ return implode("\n", $lines);
+ }
+ }
+ // apple alerts
+ if (preg_match('/\b(apple|iphone)\s*(alert|urgent|urgence)/iu', $prompt)) {
+ $a = @json_decode(@file_get_contents("http://127.0.0.1/api/wevia-apple-ingest.php?action=alerts"), true);
+ if ($a) {
+ $lines = ["🚨 Alertes WEVIA Apple (" . count($a["alerts"] ?? []) . ")"];
+ foreach ($a["alerts"] ?? [] as $al) {
+ $lines[] = "- " . ($al["label"] ?? "") . " → " . ($al["action"] ?? "");
+ }
+ if (empty($a["alerts"])) $lines[] = "Aucune alerte urgente 👍";
+ return implode("\n", $lines);
+ }
+ }
+ // apple ingest note
+ if (preg_match('/^(apple\s*note|ingest\s*note|note\s*apple)\s*:?\s*(.+)/iu', $prompt, $m)) {
+ $body = trim($m[2]);
+ if ($body) {
+ $ch = curl_init("http://127.0.0.1/api/wevia-apple-ingest.php?action=ingest_structured");
+ curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>1,CURLOPT_POST=>1,
+ CURLOPT_HTTPHEADER=>["Content-Type: application/json"],
+ CURLOPT_POSTFIELDS=>json_encode(["type"=>"note","items"=>[["title"=>"WEVIA Master ingest","body"=>$body]]])]);
+ $rr = curl_exec($ch); curl_close($ch);
+ $d = @json_decode($rr, true);
+ return "📝 Note ingérée → ID: " . ($d["ids"][0] ?? "?") . " · Analyse IA en cours (entités + reco)";
+ }
+ }
+ // apple entities
+ if (preg_match('/\b(apple|iphone)\s*(entit|entities)/iu', $prompt)) {
+ $e = @json_decode(@file_get_contents("http://127.0.0.1/api/wevia-apple-ingest.php?action=entities"), true);
+ if ($e) {
+ $lines = ["🔎 Entités extraites WEVIA Apple"];
+ foreach ($e["entities"] ?? [] as $cat => $list) {
+ if (!empty($list)) {
+ $top = array_slice($list, 0, 5);
+ $vals = array_map(function($x) { return $x["value"] . " (×" . $x["count"] . ")"; }, $top);
+ $lines[] = $cat . " [" . count($list) . "]: " . implode(", ", $vals);
+ }
+ }
+ return implode("\n", $lines);
+ }
+ }
+ // apple tasks
+ if (preg_match('/\b(apple|iphone)\s*(task|tache)/iu', $prompt)) {
+ $t = @json_decode(@file_get_contents("http://127.0.0.1/api/wevia-apple-ingest.php?action=tasks"), true);
+ if ($t) {
+ $lines = ["📋 Tasks WEVIA Apple (" . count($t["tasks"] ?? []) . ")"];
+ foreach (array_slice($t["tasks"] ?? [], 0, 10) as $task) {
+ $lines[] = "- [" . ($task["priority"] ?? "") . "] " . ($task["label"] ?? "") . " (" . ($task["status"] ?? "open") . ")";
+ }
+ return implode("\n", $lines);
+ }
+ }
+ // apple setup / iphone setup
+ if (preg_match('/\b(apple|iphone)\s*(setup|install|config|shortcut)/iu', $prompt)) {
+ return "📲 WEVIA Apple v3 Setup\n\n"
+ . "1. Ouvre https://weval-consulting.com/wevia-apple.html sur ton iPhone\n"
+ . "2. Clique '📲 iPhone Setup' en haut à droite\n"
+ . "3. Suis les 3 solutions (iPhone Shortcuts / Automation iCloud / Blade MCP)\n\n"
+ . "Endpoint: https://weval-consulting.com/api/wevia-apple-ingest.php\n"
+ . "7 types supportés: photos, messages, contacts, calendar, notes, calls, health";
+ }
+ return null;
+}
+
+// Auto-register with the orchestrator if available
+$__wa_prompt = $_POST['prompt'] ?? $_POST['message'] ?? $_GET['q'] ?? null;
+if ($__wa_prompt && (defined('WEVIA_APPLE_STANDALONE') || strpos($_SERVER['SCRIPT_NAME'] ?? '', 'wevia-apple-intents') !== false)) {
+ $r = wevia_apple_v3_intents($__wa_prompt);
+ if ($r !== null) {
+ header('Content-Type: application/json');
+ echo json_encode(["ok"=>true, "response"=>$r, "provider"=>"wevia-apple-v3"]);
+ exit;
+ }
+}
diff --git a/api/wevia-tool-registry.json b/api/wevia-tool-registry.json
index 5d07951e1..6d959d934 100644
--- a/api/wevia-tool-registry.json
+++ b/api/wevia-tool-registry.json
@@ -3480,6 +3480,69 @@
"id": "smart_tips_v84",
"kw": "tips.*renouve|tips.*creation.*compte|tips.*cyber|tips.*selenium|tips.*office.*recovery|tips.*opus|tips.*disponibles|quels tips|liste tips",
"cmd": "curl -sk --max-time 10 'http://127.0.0.1/api/wevia-dynamic-resolver.php?q=v82_tips_summary' -H 'Host: weval-consulting.com' 2>&1 | head -c 2500"
+ },
+ {
+ "id": "apple_status",
+ "name": "WEVIA Apple v3 status",
+ "kw_regex": "\b(apple|iphone)\\s*(status|stat|etat|count)\b|combien.*photos?.*apple",
+ "file": "/api/wevia-apple-intents.php",
+ "action": "POST_prompt",
+ "priority": 90,
+ "desc": "État WEVIA Apple ingestion"
+ },
+ {
+ "id": "apple_reco",
+ "name": "WEVIA Apple recommendations",
+ "kw_regex": "\b(apple|iphone)\\s*(reco|recommand)|recommand.*(apple|iphone)",
+ "file": "/api/wevia-apple-intents.php",
+ "action": "POST_prompt",
+ "priority": 91,
+ "desc": "Recommandations IA"
+ },
+ {
+ "id": "apple_alerts",
+ "name": "WEVIA Apple alerts",
+ "kw_regex": "\b(apple|iphone)\\s*(alert|urgent|urgence)",
+ "file": "/api/wevia-apple-intents.php",
+ "action": "POST_prompt",
+ "priority": 92,
+ "desc": "Alertes P0"
+ },
+ {
+ "id": "apple_ingest_note",
+ "name": "WEVIA Apple ingest note",
+ "kw_regex": "^(apple\\s*note|ingest\\s*note|note\\s*apple)\\s*:",
+ "file": "/api/wevia-apple-intents.php",
+ "action": "POST_prompt",
+ "priority": 93,
+ "desc": "Ingest note to Apple v3"
+ },
+ {
+ "id": "apple_entities",
+ "name": "WEVIA Apple entities",
+ "kw_regex": "\b(apple|iphone)\\s*(entit|entities)",
+ "file": "/api/wevia-apple-intents.php",
+ "action": "POST_prompt",
+ "priority": 94,
+ "desc": "Entités extraites"
+ },
+ {
+ "id": "apple_tasks",
+ "name": "WEVIA Apple tasks",
+ "kw_regex": "\b(apple|iphone)\\s*(task|tache)",
+ "file": "/api/wevia-apple-intents.php",
+ "action": "POST_prompt",
+ "priority": 95,
+ "desc": "Tasks pending"
+ },
+ {
+ "id": "apple_setup",
+ "name": "WEVIA Apple setup",
+ "kw_regex": "\b(apple|iphone)\\s*(setup|install|config|shortcut)",
+ "file": "/api/wevia-apple-intents.php",
+ "action": "POST_prompt",
+ "priority": 96,
+ "desc": "Setup iPhone Shortcuts"
}
]
}
\ No newline at end of file
diff --git a/wevia-apple.html b/wevia-apple.html
index 81ee43e72..734e8c4c7 100644
--- a/wevia-apple.html
+++ b/wevia-apple.html
@@ -1,399 +1,618 @@
-
+
-
-WEVIA Apple — Photos Scanner iPhone + iCloud
-
-
-
-
+
+
+🍎 WEVIA Apple v3 — iPhone Intelligence Hub
-
-
-
🍎
-
-
WEVIA Apple — Photos Scanner
-
OCR + Gemini 2.5 Flash Vision · HEIC natif · iPhone Shortcuts compatible · Multi-upload + dossiers
+
+
+
+
🍎
+
+
WEVIA Apple v3 — iPhone Intelligence Hub
+
Full ingestion: Photos · Messages · Contacts · Calendar · Notes · Calls · Health → Entity extraction + AI recommendations
+
+
+
v2
+
🔌 MCPs
+
📲 iPhone Setup
+
⟳ Refresh
+
+
+
+
+
+
+
📊 Overview
+
📸 Photos 0
+
💬 Messages 0
+
👤 Contacts 0
+
📅 Calendar 0
+
📝 Notes 0
+
📞 Calls 0
+
❤️ Health 0
+
💡 Recommandations 0
+
🔎 Entités
+
🚨 Alertes 0
+
+
+
+
-
-
-
Projets OSS identifiés
0
Word-boundary strict
-
GitHub URLs
0
Repos mentionnés
-
Top OSS
—
Projet le plus cité
-
-
-
-
-
📱 Upload — photos, dossiers, batch
-
-
🍎
-
Glisse des photos/dossiers OU clique pour choisir
-
JPG · PNG · HEIC natif iPhone · WEBP · GIF · Multi-sélection OK
-
-
-
-
📷 Photos (multi)
-
📁 Dossier entier
-
📲 iPhone Shortcut
+
+
+
+
+
+
🍎
+
Glisse photos / HEIC / captures
+
JPG · PNG · HEIC · WEBP · PDF · multi
+
+
+
-
-
-
-
-
-
🍎 Connecter ton iPhone (doctrine honnête)
- Apple bloque l'accès direct à iCloud Photos depuis le web.
3 solutions qui marchent :
-
- iPhone Shortcut (recommandé, 2 min setup): clique 📲 iPhone Setup ci-dessus pour les étapes détaillées. Une fois installé, sélectionne N photos dans l'app Photos → Partager → Scan WEVIA → tout est scanné automatiquement.
- Dossier iCloud Drive : dépose tes photos dans un dossier iCloud Drive partagé avec ton Mac. Sur Mac, glisse le dossier ici (bouton 📁 Dossier entier). Le navigateur upload chaque image séquentiellement.
- Automation iCloud : crée un album iCloud "WEVIA Scan" → Automation iPhone "Quand photo ajoutée à album 'WEVIA Scan' → exécuter raccourci Scan WEVIA". Toutes les nouvelles photos sont scannées automatiquement.
-
- Endpoint:
POST /api/wevia-apple-scan.php?action=upload 📋 Copier
-
-
📚 Historique scans · clique pour drill-down
-
Aucun scan pour le moment.
+
+
+
Pas encore de recommandations.
+
-
+
-
-
×
-
📲 Setup iPhone Shortcut — Scan WEVIA
-
Connecte ton iPhone à WEVIA en 2 minutes. Une fois installé, toute photo iPhone peut être scannée en 1 tap.
-
Chargement…
-
-
💡 Multi-photos batch : sélectionne plusieurs photos dans Photos iPhone, puis Partager →
Scan WEVIA. Le raccourci les envoie toutes automatiquement.
+
+
+
-
- 🤖 Auto-scan album iCloud : app Raccourcis iPhone → onglet Automation → Nouvelle → "Quand photo ajoutée à l'album 'WEVIA'" → choisir Scan WEVIA. Tout ajout = scan auto.
-
-
+
-
-
-
-
-
-
-
\ No newline at end of file
+