+ PnvPanel
+ Каркас приложения (M0). Здесь будет собранное SPA (React + Vite).
+
+ API: /scalar · Health: /health
+
+
+
+
diff --git a/backend/src/PnvPanel.Application/Activation/ActivationErrors.cs b/backend/src/PnvPanel.Application/Activation/ActivationErrors.cs
new file mode 100644
index 0000000..eed1d2b
--- /dev/null
+++ b/backend/src/PnvPanel.Application/Activation/ActivationErrors.cs
@@ -0,0 +1,15 @@
+using PnvPanel.Application.Common.Models;
+
+namespace PnvPanel.Application.Activation;
+
+public static class ActivationErrors
+{
+ public static readonly Error AlreadyPending =
+ Error.Conflict("Activation.AlreadyPending", "У вас уже есть необработанный запрос на активацию.");
+
+ public static readonly Error NotFound =
+ Error.NotFound("Activation.NotFound", "Запрос на активацию не найден.");
+
+ public static readonly Error AlreadyDecided =
+ Error.Conflict("Activation.AlreadyDecided", "Запрос на активацию уже обработан.");
+}
diff --git a/backend/src/PnvPanel.Application/Activation/ActivationRequestDto.cs b/backend/src/PnvPanel.Application/Activation/ActivationRequestDto.cs
new file mode 100644
index 0000000..b36bf5b
--- /dev/null
+++ b/backend/src/PnvPanel.Application/Activation/ActivationRequestDto.cs
@@ -0,0 +1,3 @@
+namespace PnvPanel.Application.Activation;
+
+public sealed record ActivationRequestDto(Guid Id, string? Comment, DateTimeOffset CreatedAt);
diff --git a/backend/src/PnvPanel.Application/Activation/ActivationStatusDto.cs b/backend/src/PnvPanel.Application/Activation/ActivationStatusDto.cs
new file mode 100644
index 0000000..187ed46
--- /dev/null
+++ b/backend/src/PnvPanel.Application/Activation/ActivationStatusDto.cs
@@ -0,0 +1,3 @@
+namespace PnvPanel.Application.Activation;
+
+public sealed record ActivationStatusDto(bool IsActivated, ActivationRequestDto? PendingRequest);
diff --git a/backend/src/PnvPanel.Application/Activation/GetActivationStatusQuery.cs b/backend/src/PnvPanel.Application/Activation/GetActivationStatusQuery.cs
new file mode 100644
index 0000000..2e98c66
--- /dev/null
+++ b/backend/src/PnvPanel.Application/Activation/GetActivationStatusQuery.cs
@@ -0,0 +1,6 @@
+using PnvPanel.Application.Common.Messaging;
+using PnvPanel.Application.Common.Models;
+
+namespace PnvPanel.Application.Activation;
+
+public sealed record GetActivationStatusQuery : IQuery