154 lines
6.0 KiB
C#
154 lines
6.0 KiB
C#
namespace DocumentAutomation.Shared;
|
|
|
|
public enum TemplateSlotKind { PlainText, RichText, MainBody, Table, RepeatingTableRows, Image, Signature, Date, DocumentField }
|
|
public enum TemplateRegionKind { Fixed, Variable, Repeating, Ignored }
|
|
|
|
public sealed record TemplateSlotOccurrence
|
|
{
|
|
public required string Location { get; init; }
|
|
public int? Page { get; init; }
|
|
public string? Story { get; init; }
|
|
public string? XPath { get; init; }
|
|
}
|
|
|
|
public sealed record TemplateSlot
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string Name { get; init; }
|
|
public required TemplateSlotKind Kind { get; init; }
|
|
public required string ContentControlTag { get; init; }
|
|
public bool IsRequired { get; init; }
|
|
public bool IsRepeating { get; init; }
|
|
public string? PageArchetypeId { get; init; }
|
|
public string? RepeatGroup { get; init; }
|
|
public required IReadOnlyList<TemplateSlotOccurrence> Occurrences { get; init; }
|
|
}
|
|
|
|
public sealed record FixedRegion
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string Name { get; init; }
|
|
public required TemplateRegionKind Kind { get; init; }
|
|
public required IReadOnlyList<int> Pages { get; init; }
|
|
public required string Fingerprint { get; init; }
|
|
public string? Story { get; init; }
|
|
public string? Location { get; init; }
|
|
public double Confidence { get; init; }
|
|
}
|
|
|
|
public sealed record RepeatingRegion
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string Name { get; init; }
|
|
public required IReadOnlyList<int> Pages { get; init; }
|
|
public required string Fingerprint { get; init; }
|
|
public required TemplateRegionKind Kind { get; init; }
|
|
public string? Location { get; init; }
|
|
}
|
|
|
|
public sealed record PageArchetype
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string Name { get; init; }
|
|
public bool IsFirstPage { get; init; }
|
|
public bool IsRepeating { get; init; }
|
|
public required IReadOnlyList<int> ExamplePages { get; init; }
|
|
public required IReadOnlyList<string> FixedRegionIds { get; init; }
|
|
public required IReadOnlyList<string> SlotIds { get; init; }
|
|
}
|
|
|
|
public sealed record TemplateFieldBinding
|
|
{
|
|
public required string SourceField { get; init; }
|
|
public required string TargetSlot { get; init; }
|
|
public required string Scope { get; init; }
|
|
public string? SourceStyle { get; init; }
|
|
public string? TargetStyle { get; init; }
|
|
}
|
|
|
|
public sealed record SourceDocumentStructure
|
|
{
|
|
public required string SourcePath { get; init; }
|
|
public required string Sha256 { get; init; }
|
|
public required string NormalizedPath { get; init; }
|
|
public required string NormalizedSha256 { get; init; }
|
|
public required int PageCount { get; init; }
|
|
public required int SectionCount { get; init; }
|
|
public required IReadOnlyList<string> Stories { get; init; }
|
|
public required IReadOnlyList<string> RepeatedFingerprints { get; init; }
|
|
public required DocumentInspectionResult Inspection { get; init; }
|
|
}
|
|
|
|
public sealed record TemplateLearningSuggestion
|
|
{
|
|
public required string SuggestionType { get; init; }
|
|
public required string SourceLocation { get; init; }
|
|
public string? TargetSlot { get; init; }
|
|
public string? ProposedName { get; init; }
|
|
public double Confidence { get; init; }
|
|
public required string Reason { get; init; }
|
|
public bool RequiresConfirmation { get; init; } = true;
|
|
}
|
|
|
|
public sealed record LearnedTemplate
|
|
{
|
|
public required string TemplateId { get; init; }
|
|
public required string Name { get; init; }
|
|
public required string SourceFileName { get; init; }
|
|
public required string SourceSha256 { get; init; }
|
|
public required string NormalizedSha256 { get; init; }
|
|
public required string CreatedAt { get; init; }
|
|
public string MinimumEngineVersion { get; init; } = "1.0";
|
|
public required SourceDocumentStructure Source { get; init; }
|
|
public required IReadOnlyList<PageArchetype> PageArchetypes { get; init; }
|
|
public required IReadOnlyList<FixedRegion> FixedRegions { get; init; }
|
|
public required IReadOnlyList<RepeatingRegion> RepeatingRegions { get; init; }
|
|
public required IReadOnlyList<TemplateSlot> Slots { get; init; }
|
|
public required IReadOnlyList<TemplateFieldBinding> FieldBindings { get; init; }
|
|
public required IReadOnlyList<TemplateLearningSuggestion> Suggestions { get; init; }
|
|
}
|
|
|
|
public sealed record DocumentNormalizationRequest
|
|
{
|
|
public required string SourcePath { get; init; }
|
|
public required string WorkingDirectory { get; init; }
|
|
public bool OpenReadOnly { get; init; } = true;
|
|
public bool DisableMacros { get; init; } = true;
|
|
}
|
|
|
|
public sealed record DocumentNormalizationResult
|
|
{
|
|
public required string SourcePath { get; init; }
|
|
public required string NormalizedPath { get; init; }
|
|
public required string SourceSha256 { get; init; }
|
|
public required string NormalizedSha256 { get; init; }
|
|
public required bool WasConverted { get; init; }
|
|
public required TimeSpan Duration { get; init; }
|
|
public int? PageCount { get; init; }
|
|
}
|
|
|
|
public sealed record TemplateLearningRequest
|
|
{
|
|
public required string SourcePath { get; init; }
|
|
public required string TemplateName { get; init; }
|
|
public required string OutputPackagePath { get; init; }
|
|
public bool CreateDefaultSlots { get; init; } = true;
|
|
}
|
|
|
|
public sealed record TemplateGenerationRequest
|
|
{
|
|
public required string TemplatePackagePath { get; init; }
|
|
public required string ContentSourcePath { get; init; }
|
|
public required string OutputDocxPath { get; init; }
|
|
public IReadOnlyDictionary<string, string> ScalarValues { get; init; } = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
}
|
|
|
|
public sealed record TemplateGenerationResult
|
|
{
|
|
public required string OutputDocxPath { get; init; }
|
|
public required string OutputPdfPath { get; init; }
|
|
public required string GenerationLogPath { get; init; }
|
|
public required string ValidationLogPath { get; init; }
|
|
public required IReadOnlyList<RuleEvaluationResult> Validation { get; init; }
|
|
}
|