photo-analysis

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:

ПолеЗначення
photoUrlURL фото, яке аналізували
photoHashhash URL або майбутній content hash
roleru або tu
analysisModelvision model
analysisAttimestamp аналізу
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.

Зв’язки