Files
social-graph/README.md
T
2026-04-08 15:29:52 +03:00

108 lines
3.2 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.
# Social Graph Builder
Построитель социального графа: импорт контактов, визуализация связей, CRUD.
## Стек
| Слой | Технология |
|------|-----------|
| Backend API | Django 4.2 + Django REST Framework |
| База данных | SQLite |
| Frontend | Vue.js 3 + Vite |
| Граф | vis-network |
| Состояние | Pinia |
| Запуск | Docker Compose |
## Быстрый старт
```bash
git clone <repo>
cd social-graph
docker-compose up --build
```
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000/api/
## API endpoints
| Метод | URL | Описание |
|-------|-----|----------|
| GET/POST | `/api/contacts/` | Список / создание контактов |
| GET/PATCH/DELETE | `/api/contacts/{id}/` | Контакт по ID |
| GET/POST | `/api/relations/` | Список / создание связей |
| DELETE | `/api/relations/{id}/` | Удалить связь |
| GET | `/api/graph/` | Граф (nodes + edges для vis.js) |
| GET | `/api/relation-types/` | Типы связей |
| POST | `/api/import/` | Импорт CSV/JSON |
## Формат CSV для импорта
```csv
name,email,phone,organization,position,notes
Иван Иванов,ivan@example.com,+7-900-000-0001,ООО Ромашка,Директор,
Мария Петрова,maria@example.com,+7-900-000-0002,Газпром,Аналитик,
```
## Формат JSON для импорта
```json
[
{"name": "Иван Иванов", "email": "ivan@example.com", "organization": "ООО Ромашка"},
{"name": "Мария Петрова", "phone": "+7-900-000-0002"}
]
```
## Структура проекта
```
social-graph/
├── backend/
│ ├── config/ # Django settings, urls
│ ├── contacts/ # models, serializers, views, urls
│ ├── manage.py
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── views/ # GraphView, ContactsView, ContactDetailView, ImportView
│ │ ├── components/ # ContactForm
│ │ ├── stores/ # Pinia store (contacts)
│ │ ├── router/ # Vue Router
│ │ ├── api.js # Axios instance
│ │ └── App.vue
│ ├── vite.config.js
│ └── Dockerfile
└── docker-compose.yml
```
## Запуск без Docker
**Backend:**
```bash
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```
**Frontend:**
```bash
cd frontend
npm install
npm run dev
```
> В `vite.config.js` прокси настроен на `http://backend:8000`.
> При локальном запуске без Docker замените на `http://localhost:8000`.
## Планируемые фичи (следующие итерации)
- [ ] Авторизация (Django auth + JWT)
- [ ] Теги/группы контактов
- [ ] Экспорт в CSV/JSON
- [ ] Поиск по организации и должности
- [ ] История изменений контакта
- [ ] Импорт из vCard (.vcf)
- [ ] Уведомления / дни рождения