diff --git a/AGENTS.md b/AGENTS.md index 3b95d61..1183434 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -188,7 +188,7 @@ After completing all Phase 1-3 controllers (PdfValidation, PdfAttachment, SwissQ dotnet build ``` -**Run tests (101 passed, 7 skipped as of Feature 6 - PDF Annotation):** +**Run tests (101 passed, 7 skipped as of Feature 7 - PDF Stamp):** ```powershell dotnet test ``` @@ -197,7 +197,8 @@ dotnet test ```powershell dotnet run --project DocumentOperator.API ``` -Swagger UI: `https://localhost:/swagger` +Swagger UI: `https://localhost:7186/swagger` +Serilog UI: `https://localhost:7186/serilog-ui` (Web-based log viewer) **Target framework:** .NET 8.0 **SDK required:** 8.0.412 or later (repo has 8.0.412–10.0.203 available) @@ -214,6 +215,8 @@ Swagger UI: `https://localhost:/swagger` | **MediatR** (14.1.0) | CQRS: 1 handler per feature | Application layer | | **FluentValidation** (12.1.1) | Request validation (runs via ValidationBehavior before handlers) | Application layer | | **Serilog.AspNetCore** (10.0.0) | Structured logging | API layer | +| **Serilog.Sinks.SQLite** (7.0.0) | SQLite log persistence | API layer | +| **Serilog.UI** (3.2.0) + **Serilog.UI.SqliteProvider** (1.1.0) | Web-based log viewer UI | API layer | **Critical:** DevExpress requires a license. All PDF operations use `DevExpress.Pdf.PdfDocumentProcessor`. @@ -276,7 +279,7 @@ Do NOT add `if (result.IsSuccess)` checks. Throw exceptions for errors. The midd | **PdfValidationController** | ✅ DONE | 13 (7 validate + 6 validate-pdfa) | | **SwissQrCodeController** | ✅ DONE | 2 | | **PdfAttachmentController** | ⏳ Partial (2/3 endpoints) | 10 (4 check + 6 extract) | -| **PdfOperationsController** | ⏳ Partial (2/3 endpoints) | 29 (7 merge + 22 annotate: 12 unit + 10 integration) | +| **PdfOperationsController** | ⏳ Partial (3/3 endpoints, integration tests pending) | 29 (7 merge + 22 annotate: 12 unit + 10 integration) | | **PdfConversionController** | ⏳ Pending | 0 | **PdfAttachmentController Status:** @@ -287,7 +290,7 @@ Do NOT add `if (result.IsSuccess)` checks. Throw exceptions for errors. The midd **PdfOperationsController Status:** - ✅ `POST /api/pdf/operations/merge` - DONE (Phase 1, Priority 5) - Merges multiple PDFs with optional page ranges (multipart + Base64) - ✅ `POST /api/pdf/operations/annotate` - DONE (Phase 2, Priority 6) - Adds annotations (TextMarkup/FreeText/StickyNote/Circle/Square) with multipart + Base64 support -- ⏳ `POST /api/pdf/operations/stamp` - TODO (Phase 2, Priority 6) +- ✅ `POST /api/pdf/operations/stamp` - DONE (Phase 2, Priority 6) - Adds text/image/predefined stamps (multipart + Base64 support, origin/rotation/opacity/placement) **Note:** PdfRenderController removed - moved to .NET client library.