Денис Королев Trydogolik Паспорт верифицирован
Чем дольше работаем тем меньше платите!
Рейтинг
789
№ 1 550 в каталоге
Отзывы
Профессионализм
-/10
Коммуникация
- /10
Город
Новосибирск
Опыт работы
4 года
На сайте с
2014 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

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' (создать ключ ) - не создано.

Результат

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

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

Другие проекты

Все проекты →
Маркетинг и Продвижение Предложение Производство Метал штамповка В2В Россия - 05.2021
Предложение Производство Метал штамповка В2В Россия - 05.2021
111
Маркетинг и Продвижение Анализ кампании на Яндексе и Google
Анализ кампании на Яндексе и Google
82
Веб-разработка и IT Бесплатная верстка - для опыта 2020
Бесплатная верстка - для опыта 2020
105
Маркетинг и Продвижение Паркет из дуба (дерево) – Яндекс 2019
Паркет из дуба (дерево) – Яндекс 2019
99