diff --git a/alembic/versions/0035_add_rss_item_embeddings.py b/alembic/versions/0035_add_rss_item_embeddings.py new file mode 100644 index 0000000..614ead0 --- /dev/null +++ b/alembic/versions/0035_add_rss_item_embeddings.py @@ -0,0 +1,28 @@ +"""Add rss_item_embeddings table for semantic news search.""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects.postgresql import JSONB + +revision = "0035" +down_revision = "0034" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + "rss_item_embeddings", + sa.Column("rss_item_id", sa.Integer(), sa.ForeignKey("rss_items.id", ondelete="CASCADE"), primary_key=True), + sa.Column("user_id", sa.Integer(), nullable=False), + sa.Column("embedding", JSONB(), nullable=False), + sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), + ) + op.create_index("ix_rss_item_embeddings_user_id", "rss_item_embeddings", ["user_id"]) + op.create_index("ix_rss_item_embeddings_rss_item_id", "rss_item_embeddings", ["rss_item_id"]) + + +def downgrade() -> None: + op.drop_index("ix_rss_item_embeddings_rss_item_id", table_name="rss_item_embeddings") + op.drop_index("ix_rss_item_embeddings_user_id", table_name="rss_item_embeddings") + op.drop_table("rss_item_embeddings") diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 42daf6f..411ad58 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -426,6 +426,10 @@ export async function deleteRssReaction(rssItemId: number): Promise { return apiDelete(`/api/briefing/rss-reactions/${rssItemId}`); } +export async function openArticleInChat(itemId: number): Promise<{ conversation_id: number }> { + return apiPost(`/api/chat/from-article/${itemId}`, {}); +} + export async function geocodeAddress(address: string): Promise<{ lat: number; lon: number; display_name: string } | null> { try { const r = await apiPost<{ lat: number; lon: number; label: string }>('/api/briefing/weather/geocode', { query: address }); diff --git a/frontend/src/views/NewsView.vue b/frontend/src/views/NewsView.vue index cf9b241..5475a23 100644 --- a/frontend/src/views/NewsView.vue +++ b/frontend/src/views/NewsView.vue @@ -1,14 +1,18 @@