Enhance documentation with new features: added dark/light/system theme support, instructions page, and application catalog. Updated API and domain model for app management and automatic migrations on startup. Improved frontend structure with new routes and features for user instructions and app management.
This commit is contained in:
@@ -49,12 +49,12 @@ ClientApp (каталог приложений-клиен
|
||||
| ----------------- | ------------- | ---------------------------------------------------------- |
|
||||
| `Id` | `Guid` | PK (внутренний) |
|
||||
| `NodeId` | `Guid` | FK → Node |
|
||||
| `RemoteInboundId` | `int` | Id inbound в 3x-ui |
|
||||
| `RemoteInboundId` | `string` | Id inbound в 3x-ui (ThreeXui.Net отдаёт его как string, не число) |
|
||||
| `Protocol` | `VpnProtocol` | `Vless` / `Vmess` / `Trojan` / `Shadowsocks` |
|
||||
| `Remark` | `string` | Метка из 3x-ui |
|
||||
| `Port` | `int` | |
|
||||
| `IsPublished` | `bool` | Доступен ли для самообслуживания пользователями |
|
||||
| `AllowedRoles` | `AppRole[]` (M:N) | Роли, которым разрешено создавать конфиги в этом инбаунде |
|
||||
| `AllowedRoleIds` | `Guid[]` | Id ролей, которым разрешено создавать конфиги (native PostgreSQL `uuid[]`; не навигация на `AppRole` — тот в Infrastructure/Identity, Domain на него не ссылается) |
|
||||
| `DisplayName` | `string?` | Витринное имя для пользователя, напр. «Германия (Trojan)» |
|
||||
| `MaxClients` | `int?` | Лимит клиентов (null = без лимита) |
|
||||
| `LastSyncAt` | `DateTimeOffset?` | |
|
||||
@@ -76,7 +76,7 @@ ClientApp (каталог приложений-клиен
|
||||
| `InboundId` | `Guid` | FK → Inbound |
|
||||
| `Label` | `string?` | Пользовательская метка («Мой телефон»); редактируется юзером |
|
||||
| `ClientEmail` | `string` | Уникальный ключ клиента в 3x-ui; схема `pnv_{userIdShort}_{rand}` (уникален в рамках панели, виден владелец) |
|
||||
| `ClientUuid` | `Guid` | UUID клиента (VLESS/VMess) |
|
||||
| `ClientExternalId` | `string` | Идентификатор клиента, который вернула панель (UUID для VLESS/VMess, пароль для Trojan/Shadowsocks — ThreeXui.Net отдаёт его как string) |
|
||||
| `Protocol` | `VpnProtocol` | Денормализовано с inbound |
|
||||
| `DeviceLimit` | `int` | Лимит одновременных устройств/IP (0 = без лимита); задаёт юзер → `limitIp` в 3x-ui |
|
||||
| `TrafficLimit` | `TrafficLimit` (VO) | Лимит в байтах (0 = безлимит) |
|
||||
@@ -146,6 +146,7 @@ ClientApp (каталог приложений-клиен
|
||||
| `IsEnabled` | `bool` | Показывать пользователям |
|
||||
|
||||
Управляется админом (CRUD). Пользователю отдаётся только `IsEnabled`, сгруппировано по `OperatingSystem`.
|
||||
Стартовый набор сидируется из [`seed/client-apps.json`](../seed/client-apps.json), если таблица пуста.
|
||||
|
||||
### AuditLog — журнал действий
|
||||
Аудит значимых действий (прежде всего админских) для расследований и прозрачности.
|
||||
@@ -218,6 +219,7 @@ UI **настойчиво напоминает** привязать его (ед
|
||||
| `Status` | `ActivationStatus` | `Pending` / `Approved` / `Rejected` |
|
||||
| `DecidedBy` | `Guid?` | Админ, принявший решение |
|
||||
| `DecidedAt` | `DateTimeOffset?` | |
|
||||
| `RejectionReason` | `string?` | Комментарий админа при отклонении (опционально) |
|
||||
| `CreatedAt` | `DateTimeOffset` | |
|
||||
|
||||
Инварианты: одновременно не более одного `Pending`-запроса на пользователя; `Approved` →
|
||||
|
||||
Reference in New Issue
Block a user