Photo Analysis
TODO: майбутній шар даних для текстового опису фото профілю в Supabase.
Що це
Зараз tips-flow дістає photoUrl з профілю TU і може передавати його в LLM/Vision. Але в довгій пам’яті діалогу не зберігається стабільний текстовий опис фото. Через це кожна генерація або повторно спирається на URL, або втрачає візуальний контекст, якщо фото не аналізувалося в поточному workflow.
Photo Analysis має перетворити фото на текстову пам’ять:
photo URL -> vision model -> structured text -> client_memory_chunks(source='photo')Тобто база має отримувати не screenshot і не сире зображення, а нормалізований опис, який можна шукати через embeddings.
Навіщо це потрібно
Операторський AI має враховувати не тільки текст профілю, notes і переписку, а й те, що видно на фото:
- приблизний стиль образу;
- емоція і подача;
- одяг;
- фон або локація;
- помітні деталі;
- чи фото виглядає casual, studio, travel, home, festive тощо;
- які теми можна безпечно використати в компліменті або легкому питанні.
Це не має бути біометрична ідентифікація або чутливі висновки. Потрібен тільки опис видимих, безпечних і корисних для діалогу деталей.
Майбутня структура chunk
Photo analysis має записуватися в memory-chunk як source='photo'.
Очікуваний зміст text:
Photo analysis for TU profile: warm studio portrait, smiling expression, dark dress, soft indoor background, polished feminine style. Safe conversation hooks: compliment her elegant style, ask about the occasion, mention warm smile.Очікувані metadata:
| Поле | Значення |
|---|---|
photoUrl | URL фото, яке аналізували |
photoHash | hash URL або майбутній content hash |
role | ru або tu |
analysisModel | vision model |
analysisAt | timestamp аналізу |
safeHooks | короткі безпечні hooks для діалогу |
Що не можна писати
Photo analysis не має зберігати:
- біометричну ідентифікацію;
- припущення про расу, здоров’я, політичні погляди, релігію чи інші чутливі ознаки;
- сексуалізований опис тіла;
- образливі оцінки;
- вигадані факти про людину;
- твердження, яких не видно на фото.
Як це має використовуватися
Після запису source='photo' у client_memory_chunks retrieval зможе підняти photo chunk так само, як note/profile/conversation. У prompt потрапить уже текстовий опис:
[photo; score=0.76] Photo analysis for TU profile: ...Це краще, ніж кожного разу передавати зображення в LLM:
- дешевше;
- стабільніше;
- швидше;
- легше кешувати;
- легше перевіряти в базі;
- можна бачити, що саме LLM знав про фото.
TODO
- Додати
PhotoAnalysisService. - Визначити, де запускати аналіз: у daily-sync після photo hash diff або окремим lazy кроком перед retrieval.
- Додати idempotency по
dialog_key + role + photoHash. - Записувати результат у
client_memory_chunksякsource='photo'. - Зберігати raw audit у
tips_daily_entity_snapshotsякentity_type='photo'з payload аналізу. - Не передавати screenshot/image у prompt, якщо в memory уже є актуальний photo analysis chunk.
- Оновити supabase після реалізації схеми metadata.