Чем дольше работаем тем меньше платите!

Денис Королев Trydogolik

Рейтинг: 1 887
Паспорт верифицирован
Всего отзывов: 14 0
Выполнил заданий: 9
  • Активность:
  • Работ в портфолио: 97
  • Типовых услуг: 0
  • Работ на продажу: 0
  • Стаж работы: 3 года
  • Тип занятости: Полный фриланс
  • Юридический статус:Самозанятый
Был на сайте:

Django - cinema module

Описание

=Про API логику
Пользователь загружает (один) файл.
Метаданные файла записываются в базу. Файл параллельно качается чанками и сохраняется на сервер.

Расчет на то, что:
- пользователь от сервера далеко;
- один файл может иметь большой вес.
- Загруженный на сервер файл отправляет реферный ключ от файла на сторону AI/парсера/анализатора.
- По рефер ключу начинает качатся файл для анализа.


1) Массово, один файл может качать 10 пользователей.
2) Рефер ключ обновляется каждые 90 секунд.
3) Останавливает обновление через 10 минут или как только парсер начал качать файл. !! Логики дл перезапуска ключа - нет.

По SSE на фронт передаёт url для загрузки файла.

== О статусах
От момента отправления файла на сервер, до сохранения на сервере - результатов анализа (того самого файла), файл получает статусы:

====status file
- "--------"
- "processing"
- "ready"
- "error"
- db_ready

=====Статусы нарушений для комментариев
- "----"
- "None"
- "mild"
- "moderate"
- "severe"

Решение

== URL
Локальный:
- "admin/"; Старая версия
- "cms/"; Новая версия
- "swagger/" API;
- "redoc/" API - возможно скачать для Postman;
- "swagger<format>/".

==Базобвые API-ключи
- "POST {{url}}/files/"- сохранить файл. Передать чем раньше тем лучше, в связи с (возможным) большим весом файла. В ответ получаете ID-файла.;
- "POST {{url}}/cinema/" - Пользователь отправляет данные из формы (web-страницы)для анализа/парсинг. Передать ID-файла;
- "POST {{url}}/download/:refer/" - Сохранить результат анализа файл. (ещё в работе);
- "GET {{url}}/download/:refer/" - скачать файл;
- "GET {{url}}/csrftoken/" - получить CSRF-token;
- "GET {{url}}/download/:index/" - Стриминг событий в реальном времени о статусе обработки файла (SSE);
"- POST {{url}}/comments/" - Сохранить комментарии от пользователя и AI. Каждая сохраняется отдельной строкой;
- "POST {{url}}/recommend/" - В единой строке объеденяем пользователя и AI. 'refer' у всех общий;
- "POST {{url}}/recommend/" - В единой строке объеденяем пользователя и AI. 'refer' у всех общий;

== Законы РФ
Запуская проект, базовый список из "excel"файла вноситься в DB автомматически. Используется команда "load_violations" (самописная).
Из панели администратора список редактируется.
Файл для базовой загрузки: "media/classification_events.xlsx".
Модель: "wink.models_wink.violations.BasisViolation".
Цель: Иеть возможность статичных наименований нарушений, для классификации этих нарушений в сценарии.\ Отдельные модели имеют дополнительные поле для сохранения количества нарушений.

== Celery tasks
- wink/tasks/task_start_rotation::start_rotation

=== Контролер за:
- количеством обращений к файлу от разных польхователей.
- времени работы с реферальной/refer ссылкой.


=== Идея такова
- refer обновляется каждые 90 секунд;
- максимальное время работы ключа 10 минут;
-- один файл могут парсить максимум/лимит 10 пользователей. Это к вопросу , что есть разные роли и все они могут интересоваться сюжетом;
- изначально создаётся (и запускается цикл обновлений) при первичном сохранении файла на диске;
- цикл обновлений останавливается при попытке скачивания файла по 'refer' ключу.

Note: Повторно запустить логику для 'refer' (создать ключ ) - не создано.

Результат

Работа в команде сделана

Ссылки на примеры реализации

 github.com/Tryd0g0lik/cinema_category

Презентация проекта

dmin_root.png
admin_files.png
admin_file_ide.png
celery.png
db_ready.png

Оценили проект:

0