A user profile combining a free-text AI-generated summary with structured metadata.
The summary field is injected into AI calls as a system message.
The metadata map holds structured data (tags, expertise_level, etc.)
that is queryable but not directly injected.
One profile per user_id — save uses upsert semantics.
Summary
Types
@type t() :: %PhoenixAI.Store.LongTermMemory.Profile{ id: String.t() | nil, inserted_at: DateTime.t() | nil, metadata: map(), summary: String.t() | nil, updated_at: DateTime.t() | nil, user_id: String.t() }