Метод POST /api/v1/create_task
Краткое описание
Создаёт новую задачу (task) или обновляет существующую задачу в рамках указанного Коннектора и опционально проекта. Требуется аутентификация (Depends(check_login_pass)).
Порядок присваивания idTask:
Если
exec_idотсутствует, то его необходимо присвоить на стороне DCC;Если
exec_idпередан в данных, то установить/обновить существующую запись задачи в DCC.
Входные параметры
Заголовки (обязательные):
Authorization(обязательный)Токен аутентификации для идентификации пользователя
Передаётся через
dependencycheck_login_pass
Тело запроса (JSON) — схема: Task
Основные поля модели Task:
id_connector(string, обязательный)Уникальный идентификатор коннектора
Коннектор должен существовать в системе
Пример: "conn-prod-001"
id_project(string, опционально)Уникальный идентификатор проекта в рамках коннектора
Если указано — проект должен существовать
Если не указано — задача создаётся на уровне коннектора
Пример: "proj-123"
id_task(string, опционально)Уникальный идентификатор задачи
Если указано и задача с таким id существует:
Выполняется обновление существующей задачи
Если не указано — генерируется новый UUID
Пример:
task-abc123или оставить пустым для auto-generation
status(string, опционально)Статус задачи
Возможные значения:
null(по умолчанию),received,started,error,success,waitingОбычно устанавливается через эндпоинт /update_task_status
Пример: null
status_info(string, опционально)Дополнительная информация о статусе задачи
Может содержать описание ошибки, детали процесса и т.д.
Пример:
Processing started at 12:34:56
command_type(string, опционально)Тип команды для задачи
Возможные значения:
exec, другие типы (определяются логикой приложения)Влияет на обновление статуса коннектора и проекта
Примеры (примеры описаны в актуальном для выполнения порядке):
Функция
load_template(загрузка шаблона проекта):Структура задачи параметров:
Примечание:В
sourceмогут быть указаны ссылки на проект и подключение, вtarget— ссылки на локальные объекты, если их надо обновить. Также можно изменить имена для подключения и проекта черезtarget.db_connection_nameиtarget.project_name.{ "target": { "id_project": "00000000-0000-0000-0000-000000000000", "id_db_connection": "00000000-0000-0000-0000-000000000000", "db_connection_name": "Наименование подключения", "project_name": "Наименование проекта" }, "source": { "db_connection": { "id_connector": "00000000-0000-0000-0000-000000000000", "id_db_connection": "00000000-0000-0000-0000-000000000000" }, "project": { "id_connector": "00000000-0000-0000-0000-000000000000", "id_project": "00000000-0000-0000-0000-000000000000" } } }Примеры использования:
Загрузка шаблона проекта без указания подключения
{ "id_connector": "6810e05f-f0ad-4c0a-b0c2-433f61f12bc0", //id базы 1С в DCC куда загружаем "command_type": "load_template", "data": { "target": { // "id_project": "", // если указать id проекта, то будет загружен в него. Если не указывать, то создастся новый // "id_db_connection": "8cf037c9-6266-11f0-a263-a7e09b56690b", //Если указать id подключения, то будет загружен в него. // //Если не указывать, то создастся новый // "db_connection_name": "Наименование подключения новое", "project_name": "Наименование копии проекта в базе" }, "source": { // "db_connection": { // "id_connector": "00000000-0000-0000-0000-000000000000", //id базы 1С в DCC источник // "id_db_connection": "00000000-0000-0000-0000-000000000000" //id подключения источника // }, "project": { "id_connector": "dfff5668-85ac-42f7-b02a-e75462675522", //id базы 1С в DCC источник "id_project": "f7dfb958-a907-11f0-a26b-9d9b823029e2" //id проекта источника } } } }Загрузка шаблона проекта с указанием подключения в уже существующий проект базы-приемника
{ "id_connector": "6810e05f-f0ad-4c0a-b0c2-433f61f12bc0", //id базы-приемника "command_type": "load_template", "data": { "target": { "id_project": "f94eeff8-f222-11f0-a463-edb39089b8dd", // если указать id существующего проекта в базе-приемнике, то шаблон будет загружен в него. "id_db_connection": "8cf037c9-6266-11f0-a263-a7e09b56690b", //проект будет создан с этим подключением базы приемника (без каких-либо изменений в нем) "project_name": "Новое наименование проекта после загрузки в него шаблона проекта из другой базы" }, "source": { "project": { "id_connector": "dfff5668-85ac-42f7-b02a-e75462675522", //id базы-источника "id_project": "f7dfb958-a907-11f0-a26b-9d9b823029e2" //id проекта в базе-источнике, шаблон которого загружаем в существующий проект базы-примника } } } }Загрузка шаблона подключения из базы-источника в базу-приемник (создание нового подключения)
{ "id_connector": "6810e05f-f0ad-4c0a-b0c2-433f61f12bc0", //id базы-приемника "command_type": "load_template", "data": { "target": { "db_connection_name": "Наименование подключения нового, импортированного из другой базы" }, "source": { "db_connection": { "id_connector": "dfff5668-85ac-42f7-b02a-e75462675522", //id базы-источника "id_db_connection": "6c5b0b03-a905-11f0-a26b-9d9b823029e2" //id подключения в базе-источнике, шаблон которого загружаем в новое подключение базы-примника } } } }Импорт шаблона подключения в существующее подключение базы-приемника
{ "id_connector": "6810e05f-f0ad-4c0a-b0c2-433f61f12bc0", //id базы-приемника "command_type": "load_template", "data": { "target": { "db_connection_name": "Новое наименование для подключения", "id_db_connection": "4f81796b-e2aa-11f0-a463-edb39089b8dd" //подключение базы-приемника, которое будет заменено шаблоном подключения из базы-источника }, "source": { "db_connection": { "id_connector": "dfff5668-85ac-42f7-b02a-e75462675522", //id базы-источника "id_db_connection": "6c5b0b03-a905-11f0-a26b-9d9b823029e2" //id подключения в базе-источнике, шаблон которого загружаем в существующее подключение базы-приемника } } } }Загрузка шаблонов подключения и проекта одновременно (создание нового подключения и проекта в базе приемнике)
{ "id_connector": "6810e05f-f0ad-4c0a-b0c2-433f61f12bc0", //id базы-приемника "command_type": "load_template", "data": { "target": { "db_connection_name": "Новое подключение из другой базы", "project_name": "Новй проект из другой базы" }, "source": { "db_connection": { "id_connector": "dfff5668-85ac-42f7-b02a-e75462675522", //id базы-источника "id_db_connection": "6c5b0b03-a905-11f0-a26b-9d9b823029e2" //id подключения источника }, "project": { "id_connector": "dfff5668-85ac-42f7-b02a-e75462675522", //id базы-источника "id_project": "f7dfb958-a907-11f0-a26b-9d9b823029e2" //id проекта источника } } } }
Функция
initial_project(выполнение команды «Сформировать очередь» для данного проекта)Пример использования:
{ "id_connector": "3e08303c-be02-41ab-a215-d941047728dc", "id_project": "5330cc9f-8d80-11f0-a267-e1abc21de4b8", "command_type": "initial_project", "timestamp": "2026-01-12T18:00:29.965Z" }Функция
exec(выполнение проекта):Пример использования:
{ "id_connector": "3e08303c-be02-41ab-a215-d941047728dc", "id_project": "5330cc9f-8d80-11f0-a267-e1abc21de4b8", "command_type": "exec", "timestamp": "2026-01-12T18:00:29.965Z" }Функция
add_queue(можно использовать, если необходимо вручную добавить параметр в очередь, после чего следует выполнить командуexec).Структура задачи параметров:
{ "id_project": "00000000-0000-0000-0000-000000000000", "id_line": 0, "delete_mode": "always|successful|never", "comment": "комментарий", "timestamp": 0, "operation": "insert|update|delete", "user": "пользователь", "params": { "param": "value", "param_type": { "type": "тип", "value": "строка" }, "param_array": [ "param": "value", "param_type": { "type": "тип", "value": "строка" } ] }, "params_ext": { см. data.params }, "params_ini": { см. data.params }, "params_string": "Представление параметров" }Пример использования:
{ "id_connector": "994784f5-ae71-4d7e-b634-a20ed639e604", "id_project": "23c9fb0a-920d-11f0-bf85-74563c043d10", "command_type": "add_queue", "data": { "id_project": "23c9fb0a-920d-11f0-bf85-74563c043d10", "id_line": 1, "params": { "Период": { "type": "Date", "value": "2017-01-17T00:00:00" } }, "delete_mode": "never", "comment": "Попытка 2", "timestamp": 1762520751317, "user": "Администратор (ФедоровБМ)", "operation": "update", "params_string": "20170117" } }
data(object, опционально)Содержимое задачи (JSON объект с произвольной структурой).
В частности, можно передать номер строки, выполняемого проекта: {«id_line» : 1}
Может содержать параметры для выполнения задачи
Пример: { "config": "...", "params": {...} }
Другие поля
Task(согласно модели)timestamp(datetime, опционально) — время создания задачиcreated_by(string, auto) — логин пользователя, создавшего задачу (устанавливается автоматически)updated_by(string, опционально) — логин пользователя, обновившего задачуecc_dt(datetime, auto) — дата/время последнего изменения (устанавливается автоматически)
Алгоритм работы метода
ЭТАП 1: Валидация Коннектора
Проверяется существование коннектора с
id_connectorЕсли коннектор не найден — возвращается HTTP 404 с описанием
Функция:
connector_exists(id_connector, db_session)
ЭТАП 2: Валидация проекта (опционально)
Если в задаче указан id_project:
Проверяется существование проекта (id_connector + id_project)
Если проект не найден — возвращается HTTP 404
Функция:
project_exists(id_connector, id_project, db_session)
Если
id_projectне указан — эта проверка пропускается
ЭТАП 3: Проверка существования задачи (обновление или создание)
Если в теле запроса указан
id_task:Выполняется SELECT для поиска существующей задачи: WHERE Task.id_task == id_task AND Task.id_connector == id_connector
Если задача найдена — вызывается
update_exists_model(task, db_task) для обновления существующих полей новыми значениямиЕсли задача не найдена — используется переданный
id_taskдля новой задачи
Если
id_taskне указан:Генерируется новый UUID:
id_task= str(uuid.uuid4())
ЭТАП 4: Установка служебных полей
ecc_dt=datetime.now(tz=get_localzone())Текущее время с локальной временной зоной
Используется для отслеживания времени последнего изменения
created_by = user.loginЛогин аутентифицированного пользователя
Извлекается из dependency
check_login_pass
ЭТАП 5: Сохранение в базу данных
db_session.add(task)— добавляет задачу в сессиюdb_session.commit()— фиксирует изменения в БДdb_session.refresh(task)— перезагружает объект из БД (получает сгенерированные значения)
ЭТАП 6: Возврат результата
Возвращается объект
Taskс полностью заполненными полямиВключая сгенерированные
id_task,ecc_dt,created_by
Успешный ответ (200 OK)
Формат: JSON, схема Task
Пример ответа при создании:
{ "id_task": "550e8400-e29b-41d4-a716-446655440000", "id_connector": "conn-prod-001", "id_project": "proj-123", "status": null, "status_info": null, "command_type": "exec", "data": { "config": "...", "params": {...} }, "timestamp": "2025-11-14T12:34:56+03:00", "created_by": "jdoe", "updated_by": null, "ecc_dt": "2025-11-14T12:34:56+03:00" }