Accueil / Blog / Technique

Technique

Comment l'histoire du jour est écrite

Appuyez une fois, et Fil des jours transforme « ce que contiennent les photos, où elles ont été prises et quelle était la météo » en une petite histoire. Cet article explique comment, et où chaque frontière de confidentialité est tracée.

Étape un : rassembler trois sortes de faits

La matière première d'une histoire, ce sont des faits structurés, pas les photos. Avant d'écrire quoi que ce soit sur une journée, le moteur rassemble trois choses :

DayFactsCollector
  ├─ Étiquettes Vision   (sur l'appareil, sans réseau)
  ├─ Lieu via CLGeocoder (cache par ~1 km)
  └─ Météo Open-Meteo    (coords arrondies + date, cache par jour)

Étape deux : trois moteurs, un même contrat

Faits en main, le moteur d'histoires sélectionné les transforme en texte. Les trois moteurs respectent le même contrat de sortie — vous pouvez changer à tout moment :

La frontière par défaut du moteur cloud

Le moteur cloud est la seule voie par laquelle des données quittent l'appareil, et ses valeurs par défaut sont donc volontairement conservatrices : seuls des faits textuels structurés sont envoyés (date, météo, lieu, étiquettes) — aucune photo. Joindre des photos compressées est un réglage séparé, désactivé par défaut, avec une confirmation explicite avant activation.

Le modèle de confidentialité en une phrase : analyse sur l'appareil, la météo n'envoie que des coordonnées et une date, le cloud n'envoie que du texte par défaut, et les photos sont toujours un choix explicite.

Cache et usage hors ligne

Ouvrir une histoire enregistrée lit sa copie locale. Régénérer peut recueillir de nouveaux faits et, si choisi, créer une requête cloud. Un échec d’enregistrement conserve le texte pour réessayer sans nouvelle génération. La version précédente reste disponible pour récupération. Les aperçus du widget utilisent l’instantané partagé ; l’action Garder vérifie aussi les droits StoreKit.

Pourquoi le moteur par défaut est sur l'appareil

Attacher la meilleure expérience prête à l'emploi au modèle sur l'appareil, c'est garantir des histoires naturelles et bien écrites sans aucune clé API, avec la configuration de confidentialité la plus forte par défaut. Le moteur à modèles garantit que la fonction marche toujours, et le moteur cloud reste là pour qui veut configurer le sien — trois niveaux de dégradation gracieuse qui n'excluent personne.

Les détails d'implémentation évolueront ; le contrat de comportement vit dans spec/001-day-story.md du dépôt. Article suivant : notes de design du widget : cinq moments par jour.