183 lines
6.0 KiB
Markdown
183 lines
6.0 KiB
Markdown
# Team Status Board
|
||
|
||
Панель управления статусами команды — внутренний инструмент для отслеживания состояния сотрудников в реальном времени.
|
||
|
||
## Возможности
|
||
|
||
- ✅ **Просмотр** всех сотрудников команды
|
||
- ➕ **Добавление** новых сотрудников (имя, должность)
|
||
- 🔄 **Изменение** статуса в реальном времени без перезагрузки страницы
|
||
- 🗑️ **Удаление** сотрудников из списка
|
||
- 🔔 **Уведомления** о выполненных операциях
|
||
- 📱 **Адаптивный** дизайн
|
||
|
||
## Стек технологий
|
||
|
||
### Бэкенд
|
||
- **Python 3.8+**
|
||
- **FastAPI** — современный веб-фреймворк
|
||
- **SQLAlchemy** — ORM для работы с БД
|
||
- **SQLite** — встроенная база данных
|
||
- **Uvicorn** — ASGI сервер
|
||
|
||
### Фронтенд
|
||
- **React 18** — библиотека UI
|
||
- **Vite** — сборщик и dev-сервер
|
||
- **Axios** — HTTP-клиент
|
||
|
||
### Инфраструктура
|
||
- **Git** — контроль версий
|
||
- **Bash** — автоматизация запуска
|
||
|
||
## Быстрый старт
|
||
|
||
### Требования
|
||
|
||
- Python 3.8 или выше
|
||
- Node.js 18 или выше
|
||
- Bash (WSL2 на Windows, Linux или macOS)
|
||
|
||
### Запуск
|
||
|
||
```bash
|
||
# Клонирование репозитория
|
||
git clone <repository-url>
|
||
cd "Team status board"
|
||
|
||
# Запуск (автоматическая установка зависимостей и запуск)
|
||
./start.sh
|
||
```
|
||
|
||
После запуска приложение будет доступно по адресам:
|
||
- **Фронтенд:** http://localhost:3000
|
||
- **Бэкенд API:** http://localhost:8000
|
||
- **API документация (Swagger):** http://localhost:8000/docs
|
||
|
||
## API Endpoints
|
||
|
||
| Метод | Endpoint | Описание | Статус-код |
|
||
|-------|----------|----------|------------|
|
||
| `GET` | `/api/employees` | Получить всех сотрудников | 200 |
|
||
| `POST` | `/api/employees` | Добавить сотрудника | 201 |
|
||
| `PUT` | `/api/employees/{id}/status` | Обновить статус сотрудника | 200 |
|
||
| `DELETE` | `/api/employees/{id}` | Удалить сотрудника | 204 |
|
||
|
||
### Примеры запросов
|
||
|
||
**Добавить сотрудника:**
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/employees \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"name": "Иван Иванов", "position": "Разработчик"}'
|
||
```
|
||
|
||
**Изменить статус:**
|
||
```bash
|
||
curl -X PUT http://localhost:8000/api/employees/1/status \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"status": "На встрече"}'
|
||
```
|
||
|
||
**Удалить сотрудника:**
|
||
```bash
|
||
curl -X DELETE http://localhost:8000/api/employees/1
|
||
```
|
||
|
||
## Доступные статусы
|
||
|
||
| Статус | Описание | Цвет |
|
||
|--------|----------|------|
|
||
| 🟢 Online | В сети, доступен | Зеленый |
|
||
| 🟡 На встрече | Занят на встрече | Желтый |
|
||
| ⚫ Offline | Не в сети | Серый |
|
||
| 🔵 В отпуске | В отпуске | Синий |
|
||
| 🔴 Болеет | На больничном | Красный |
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
.
|
||
├── backend/
|
||
│ ├── main.py # FastAPI приложение + CRUD
|
||
│ ├── requirements.txt # Python зависимости
|
||
│ └── team_status.db # SQLite БД (создается автоматически)
|
||
├── frontend/
|
||
│ ├── src/
|
||
│ │ ├── App.jsx # Основной React компонент
|
||
│ │ ├── App.css # Стили компонента
|
||
│ │ ├── main.jsx # Точка входа React
|
||
│ │ └── index.css # Глобальные стили
|
||
│ ├── index.html # HTML шаблон
|
||
│ ├── package.json # Node.js зависимости
|
||
│ └── vite.config.js # Конфигурация Vite
|
||
├── .gitignore # Игнорируемые файлы
|
||
├── start.sh # Скрипт автозапуска
|
||
└── README.md # Документация
|
||
```
|
||
|
||
## Разработка
|
||
|
||
### Ручной запуск бэкенда
|
||
|
||
```bash
|
||
cd backend
|
||
python -m venv venv
|
||
source venv/bin/activate # или venv\Scripts\activate на Windows
|
||
pip install -r requirements.txt
|
||
python main.py
|
||
```
|
||
|
||
### Ручной запуск фронтенда
|
||
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
## Git-гигиена
|
||
|
||
Проект использует `.gitignore` для исключения:
|
||
- `node_modules/` — зависимости Node.js
|
||
- `venv/` — виртуальное окружение Python
|
||
- `__pycache__/` — кэш Python
|
||
- `*.db` — файлы базы данных
|
||
- `.env` — файлы окружения
|
||
|
||
Коммиты выполняются атомарно — одно изменение = один коммит.
|
||
|
||
## Устранение неполадок
|
||
|
||
### Порт 8000 или 3000 уже занят
|
||
|
||
Скрипт `start.sh` автоматически освобождает порты. Если это не помогло:
|
||
```bash
|
||
# Linux/WSL
|
||
lsof -i :8000 # найти PID
|
||
kill -9 <PID>
|
||
|
||
# Windows (PowerShell)
|
||
Get-Process -Id (Get-NetTCPConnection -LocalPort 8000).OwningProcess | Stop-Process
|
||
```
|
||
|
||
### Ошибки при установке зависимостей
|
||
|
||
```bash
|
||
# Обновить pip
|
||
pip install --upgrade pip
|
||
|
||
# Очистить кэш npm
|
||
npm cache clean --force
|
||
```
|
||
|
||
### База данных не создается
|
||
|
||
Убедитесь, что у скрипта есть права на запись в директорию `backend/`:
|
||
```bash
|
||
ls -la backend/
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
Внутренний инструмент, все права защищены.
|