# Memory Service FastAPI сервіс для управління пам'яттю в MicroDAO: - **user_facts** - довгострокова пам'ять користувачів - **dialog_summaries** - підсумки діалогів для масштабування - **agent_memory_events** - події пам'яті агентів - **token-gate інтеграція** - перевірка доступу через RBAC ## Встановлення ```bash # Створити віртуальне середовище python -m venv venv source venv/bin/activate # Linux/Mac # або venv\Scripts\activate # Windows # Встановити залежності pip install -r requirements.txt # Налаштувати .env файл cp .env.example .env # Відредагуйте .env з вашими налаштуваннями ``` ## Запуск ```bash # Development (з кореня services/memory-service/) uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 # Production uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4 ``` ## API Endpoints ### User Facts - `POST /facts/upsert` - Створити або оновити факт (основний ендпоінт) - `GET /facts` - Список фактів користувача - `GET /facts/{fact_key}` - Отримати факт за ключем - `POST /facts` - Створити новий факт - `PATCH /facts/{fact_id}` - Оновити факт - `DELETE /facts/{fact_id}` - Видалити факт - `GET /facts/token-gated` - Токен-гейт факти ### Dialog Summaries - `POST /summaries` - Створити підсумок діалогу - `GET /summaries` - Список підсумків (з cursor pagination) - `GET /summaries/{summary_id}` - Отримати підсумок - `DELETE /summaries/{summary_id}` - Видалити підсумок ### Agent Memory Events - `POST /agents/{agent_id}/memory` - Створити подію пам'яті - `GET /agents/{agent_id}/memory` - Список подій (з cursor pagination) - `DELETE /agents/{agent_id}/memory/{event_id}` - Видалити подію ### Token Gate - `POST /token-gate/check` - Перевірка токен-гейту ## Приклади використання ### Створити/оновити факт користувача ```bash curl -X POST "http://localhost:8000/facts/upsert" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "user_id": "u_123", "fact_key": "language", "fact_value": "uk-UA", "metadata": {"source": "onboarding"} }' ``` ### Створити токен-гейт факт ```bash curl -X POST "http://localhost:8000/facts/upsert" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "user_id": "u_123", "fact_key": "is_donor", "fact_value": "true", "token_gated": true, "token_requirements": { "token": "DAAR", "min_balance": 1 } }' ``` ### Створити підсумок діалогу ```bash curl -X POST "http://localhost:8000/summaries" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "team_id": "t_123", "channel_id": "c_456", "period_start": "2025-01-01T00:00:00Z", "period_end": "2025-01-01T23:59:59Z", "summary_text": "Обговорювали новий проєкт, вирішили використати React", "message_count": 42, "participant_count": 5, "topics": ["project-planning", "tech-stack"] }' ``` ## Структура бази даних Сервіс використовує такі таблиці: - `user_facts` - факти користувачів - `dialog_summaries` - підсумки діалогів - `agent_memory_events` - події пам'яті агентів - `agent_memory_facts_vector` - векторні представлення фактів (для RAG) ## Інтеграція з іншими сервісами ### PDP Service Для перевірки токен-гейту використовується PDP Service (Policy Decision Point). ### Wallet Service Для перевірки балансів токенів використовується Wallet Service. ### Auth Service Для авторизації використовується JWT токени з Auth Service. ## TODO - [ ] Реалізувати реальну перевірку JWT токенів - [ ] Інтегрувати з PDP Service для token-gate - [ ] Інтегрувати з Wallet Service для перевірки балансів - [ ] Додати кешування для часто використовуваних фактів - [ ] Додати метрики та моніторинг - [ ] Додати тести