Files
microdao-daarion/services/memory-service/README.md
Apple 7aa0745877 refactor: reorganize memory-service into app/ directory structure
- Move models.py, schemas.py, crud.py, main.py to app/
- Update imports to use app.* prefix
- Update README with new structure
- Fix uvicorn run command for new structure
2025-11-15 10:14:26 -08:00

145 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 для перевірки балансів
- [ ] Додати кешування для часто використовуваних фактів
- [ ] Додати метрики та моніторинг
- [ ] Додати тести