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