/
afanasevn
/
PdfEncoder
Обзор
Документация
Войти
/
afanasevn
/
PdfEncoder
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/PdfEncoder.Application/Abstractions/IDocumentJobService.cs
95 строк
3 KB
IBS\NAfanasev
Full async product flow
01 июл 2026, 17:49
01 июл 2026, 17:49
d25833e
Код
Авторство
О чём код?
using PdfEncoder.Application.Models; using PdfEncoder.Domain.Enums; using PdfEncoder.Domain.Models; namespace PdfEncoder.Application.Abstractions; /// <summary> /// CRUD document jobs, idempotency и persistence результатов. /// </summary> public interface IDocumentJobService { /// <summary> /// Создаёт job или возвращает существующий по ContentHash. /// </summary> /// <param name="request">Данные upload.</param> /// <param name="ct">Токен отмены.</param> Task<DocumentJobSubmitResult> SubmitAsync( SubmitDocumentJobRequest request, CancellationToken ct); /// <summary> /// Возвращает job по id. /// </summary> /// <param name="documentId">Идентификатор документа.</param> /// <param name="ct">Токен отмены.</param> Task<DocumentJobResponse?> GetAsync( Guid documentId, CancellationToken ct); /// <summary> /// Возвращает paginated history. /// </summary> /// <param name="query">Параметры списка.</param> /// <param name="ct">Токен отмены.</param> Task<DocumentListResponse> ListAsync( ListDocumentsQuery query, CancellationToken ct); /// <summary> /// Возвращает raw DocumentContext для dev endpoint. /// </summary> /// <param name="documentId">Идентификатор документа.</param> /// <param name="ct">Токен отмены.</param> Task<DocumentContext?> GetRawContextAsync( Guid documentId, CancellationToken ct); /// <summary> /// Переводит job в Processing. /// </summary> /// <param name="documentId">Идентификатор документа.</param> /// <param name="ct">Токен отмены.</param> Task MarkProcessingAsync( Guid documentId, CancellationToken ct); /// <summary> /// Сохраняет успешный результат pipeline. /// </summary> /// <param name="documentId">Идентификатор документа.</param> /// <param name="parseResult">Результат pipeline.</param> /// <param name="ct">Токен отмены.</param> Task CompleteAsync( Guid documentId, DocumentParseResult parseResult, CancellationToken ct); /// <summary> /// Помечает job как Failed. /// </summary> /// <param name="documentId">Идентификатор документа.</param> /// <param name="errorCode">Код ошибки.</param> /// <param name="message">Сообщение.</param> /// <param name="ct">Токен отмены.</param> Task FailAsync( Guid documentId, string errorCode, string message, CancellationToken ct); /// <summary> /// Восстанавливает stuck jobs и re-enqueue Pending. /// </summary> /// <param name="ct">Токен отмены.</param> Task RecoverPendingJobsAsync(CancellationToken ct); /// <summary> /// Возвращает parse options сохранённые в job. /// </summary> /// <param name="documentId">Идентификатор документа.</param> /// <param name="ct">Токен отмены.</param> Task<ParseOptions?> GetParseOptionsAsync( Guid documentId, CancellationToken ct); }