Files
playground/README.md
T
dev1-playground-agent 9489c755fd
security/scan 19 findings, 19 blocking
security / scan (pull_request) Failing after 1m3s
security/review 0 findings, 0 blocking
security / review (pull_request) Successful in 1m29s
security / deep-audit (pull_request) Skipped
docs: replace example tokens with placeholders in README.md
2026-08-25 06:22:15 +00:00

163 lines
5.2 KiB
Markdown

# Модуль учёта заказов клиентов и заметок пользователей
Простой HTTP-сервис для управления заказами клиентов и заметками пользователей.
## Структура
- `orders.py` — основной модуль сервера
- `requirements.txt` — зависимости проекта
## Функционал
### Хранение заказов
Заказы хранятся в памяти в словаре `orders`. Каждый заказ имеет:
- `id` — уникальный идентификатор
- `user_id` — владелец заказа
- `amount` — сумма заказа
### Хранение заметок
Заметки хранятся в памяти в словаре `notes`. Каждая заметка имеет:
- `id` — уникальный идентификатор
- `user_id` — владелец заметки
- `title` — заголовок заметки
- `content` — содержимое заметки
- `created_at` — время создания
### Эндпоинты
#### GET /orders/{id}
Получение заказа по ID. Требует авторизации через заголовок `Authorization: Bearer <token>`.
**Пример:**
```bash
curl -H "Authorization: Bearer <your-token>" http://localhost:8000/orders/1
```
#### POST /orders/{id}
Изменение суммы заказа. Принимает JSON с полем `amount` в теле запроса.
**Пример:**
```bash
curl -X POST -H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{"amount": 500}' \
http://localhost:8000/orders/1
```
#### GET /admin/backup
Проверка готовности эндпоинта бэкапа.
#### POST /admin/backup
Инициация бэкапа данных на удалённый хост. Принимает JSON с полем `host` в теле запроса.
**Пример:**
```bash
curl -X POST -H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{"host": "backup.example.com"}' \
http://localhost:8000/admin/backup
```
Бэкап выполняется асинхронно через rsync. Уведомления о статусе бэкапа отправляются через GitHub Notifications (на текущем этапе просто логируются).
### Эндпоинты заметок
#### POST /notes
Создание новой заметки. Требует авторизации через заголовок `Authorization: Bearer <token>`.
**Пример:**
```bash
curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
-H "Content-Type: application/json" \
-d '{"title": "Моя заметка", "content": "Текст заметки"}' \
http://localhost:8000/notes
```
#### GET /notes/{id}
Получение заметки по ID. Требует авторизации. Доступна только для владельца заметки.
**Пример:**
```bash
curl -H "Authorization: Bearer &lt;your-token&gt;" \
http://localhost:8000/notes/1
```
#### GET /notes/export?path=...
Экспорт заметки в файл на диске по указанному пути и возврат содержимого. Требует авторизации.
**Пример:**
```bash
curl -H "Authorization: Bearer &lt;your-token&gt;" \
"http://localhost:8000/notes/export?path=/tmp/notes/note_1.txt"
```
#### POST /notes/{id}/share
Расшаривание заметки по email. Отправляет уведомление на внешний webhook-URL.
**Пример:**
```bash
curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
-H "Content-Type: application/json" \
-d '{"email": "friend@example.com", "webhook_url": "https://example.com/webhook"}' \
http://localhost:8000/notes/1/share
```
## Быстрый старт
1. Установите зависимости:
```bash
pip install -r requirements.txt
```
2. Запустите сервер:
```bash
python orders.py
```
3. Создайте заметку:
```bash
curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
-H "Content-Type: application/json" \
-d '{"title": "Первая заметка", "content": "Текст первой заметки"}' \
http://localhost:8000/notes
```
4. Получите заметку по ID:
```bash
curl -H "Authorization: Bearer &lt;your-token&gt;" \
http://localhost:8000/notes/1
```
5. Экспортируйте заметку в файл:
```bash
curl -H "Authorization: Bearer &lt;your-token&gt;" \
"http://localhost:8000/notes/export?path=/tmp/my_note.txt"
```
6. Расшарьте заметку:
```bash
curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
-H "Content-Type: application/json" \
-d '{"email": "friend@example.com", "webhook_url": "https://webhook.site/your-uuid"}' \
http://localhost:8000/notes/1/share
```
## Запуск
```bash
pip install -r requirements.txt
python orders.py
```
Сервер запустится на `localhost:8000`.