add dockerfile
This commit is contained in:
10
.dockerignore
Normal file
10
.dockerignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
venv/
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.claude/
|
||||||
|
*.md
|
||||||
|
.env
|
||||||
|
*.sqlite3
|
||||||
171
API.md
Normal file
171
API.md
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
# API документация eng_bot_metrics
|
||||||
|
|
||||||
|
## Базовый URL
|
||||||
|
|
||||||
|
```
|
||||||
|
http://localhost:8000
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Эндпоинты
|
||||||
|
|
||||||
|
### 1. Дашборд статистики
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание:** Главная страница с визуальной статистикой кликов.
|
||||||
|
|
||||||
|
**Отображает:**
|
||||||
|
- Общее количество переходов в бота и канал
|
||||||
|
- Статистика за сегодня
|
||||||
|
- Статистика за последнюю неделю
|
||||||
|
- График переходов за последние 30 дней
|
||||||
|
- Последние 20 событий
|
||||||
|
|
||||||
|
**Ответ:** HTML страница
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Трекинг перехода в бота
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /api/track/bot/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание:** Записывает событие перехода пользователя в Telegram бота.
|
||||||
|
|
||||||
|
**Метод:** `POST`
|
||||||
|
|
||||||
|
**Заголовки:**
|
||||||
|
```
|
||||||
|
Content-Type: application/json
|
||||||
|
```
|
||||||
|
|
||||||
|
**Тело запроса:** Не требуется (можно отправить пустой POST)
|
||||||
|
|
||||||
|
**Автоматически сохраняет:**
|
||||||
|
- IP адрес пользователя
|
||||||
|
- User-Agent браузера
|
||||||
|
- Referrer (откуда пришёл пользователь)
|
||||||
|
- Временная метка
|
||||||
|
|
||||||
|
**Успешный ответ:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "ok",
|
||||||
|
"event": "bot"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример использования (JavaScript):**
|
||||||
|
```javascript
|
||||||
|
fetch('/api/track/bot/', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример использования (curl):**
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8000/api/track/bot/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Трекинг перехода в канал
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /api/track/channel/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание:** Записывает событие перехода пользователя в Telegram канал.
|
||||||
|
|
||||||
|
**Метод:** `POST`
|
||||||
|
|
||||||
|
**Заголовки:**
|
||||||
|
```
|
||||||
|
Content-Type: application/json
|
||||||
|
```
|
||||||
|
|
||||||
|
**Тело запроса:** Не требуется (можно отправить пустой POST)
|
||||||
|
|
||||||
|
**Автоматически сохраняет:**
|
||||||
|
- IP адрес пользователя
|
||||||
|
- User-Agent браузера
|
||||||
|
- Referrer (откуда пришёл пользователь)
|
||||||
|
- Временная метка
|
||||||
|
|
||||||
|
**Успешный ответ:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "ok",
|
||||||
|
"event": "channel"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример использования (JavaScript):**
|
||||||
|
```javascript
|
||||||
|
fetch('/api/track/channel/', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример использования (curl):**
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8000/api/track/channel/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Админ-панель Django
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /admin/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Описание:** Стандартная админ-панель Django для управления данными.
|
||||||
|
|
||||||
|
**Требует:** Авторизация суперпользователя
|
||||||
|
|
||||||
|
**Создание суперпользователя:**
|
||||||
|
```bash
|
||||||
|
./deploy.sh createsuperuser
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Пример интеграции на лендинге
|
||||||
|
|
||||||
|
```html
|
||||||
|
<a href="https://t.me/your_bot" onclick="trackBot()">Перейти в бота</a>
|
||||||
|
<a href="https://t.me/your_channel" onclick="trackChannel()">Перейти в канал</a>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function trackBot() {
|
||||||
|
fetch('/api/track/bot/', { method: 'POST' });
|
||||||
|
}
|
||||||
|
|
||||||
|
function trackChannel() {
|
||||||
|
fetch('/api/track/channel/', { method: 'POST' });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Сводная таблица
|
||||||
|
|
||||||
|
| URL | Метод | Описание |
|
||||||
|
|-----|-------|----------|
|
||||||
|
| `/` | GET | Дашборд со статистикой |
|
||||||
|
| `/api/track/bot/` | POST | Трекинг клика по боту |
|
||||||
|
| `/api/track/channel/` | POST | Трекинг клика по каналу |
|
||||||
|
| `/admin/` | GET | Админ-панель Django |
|
||||||
20
Dockerfile
Normal file
20
Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
FROM python:3.12-slim
|
||||||
|
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE=1
|
||||||
|
ENV PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN python manage.py collectstatic --noinput 2>/dev/null || true
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "eng_bot_metrics.wsgi:application"]
|
||||||
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Django==6.0
|
||||||
|
asgiref==3.11.0
|
||||||
|
sqlparse==0.5.4
|
||||||
|
gunicorn==23.0.0
|
||||||
Reference in New Issue
Block a user