Add instructions management functionality and update related components
- Introduced new endpoints for managing instruction intros and tabs, allowing admins to create, update, and delete instructional content. - Enhanced the FactoryResetCommandHandler to include the seeding of instruction data during a factory reset. - Updated the database schema to include InstructionIntro and InstructionTab entities, with corresponding migrations. - Improved frontend routing and components to support the new instructions section, including a dedicated page for displaying instructions and tabs. - Enhanced API documentation to reflect the new instruction management features and their expected request/response formats. - Added localization support for the new instructions functionality in both Russian and English.
This commit is contained in:
+36
-3
@@ -159,6 +159,38 @@ AppUser
|
||||
Массовая очистка отключённых (`IsEnabled = false`) — вкладка «Обслуживание»,
|
||||
`DELETE /api/admin/maintenance/apps/disabled`.
|
||||
|
||||
### InstructionIntro — вводный текст страницы инструкций
|
||||
Единственная строка в таблице (singleton) — markdown-текст над вкладками на странице «Инструкции»,
|
||||
редактируется админом. Никакой поддержки нескольких версий/языков нет.
|
||||
|
||||
| Поле | Тип | Заметки |
|
||||
| ----------- | ----------------- | ------------------------------------------------ |
|
||||
| `Id` | `Guid` | PK |
|
||||
| `Body` | `string` | Markdown-текст |
|
||||
| `UpdatedAt` | `DateTimeOffset` | |
|
||||
|
||||
`GET /api/instructions/intro` (активированным) читает; `PUT /api/admin/instructions/intro` (админ)
|
||||
делает get-or-create — если строки ещё нет (не сидировано), создаёт, иначе обновляет на месте.
|
||||
Сидируется дефолтным текстом при старте (`IInstructionIntroSeeder`, если таблица пуста) и заново
|
||||
после полного сброса панели (см. «Полный сброс панели» выше).
|
||||
|
||||
### InstructionTab — дополнительные вкладки инструкций
|
||||
Заголовок + markdown-текст, ведёт админ; на странице «Инструкции» отображаются вкладками рядом с
|
||||
встроенной вкладкой «Приложения» (каталог `ClientApp`, не хранится как `InstructionTab`).
|
||||
|
||||
| Поле | Тип | Заметки |
|
||||
| ----------- | ----------------- | ------------------------------------------------------- |
|
||||
| `Id` | `Guid` | PK |
|
||||
| `Title` | `string` | Заголовок вкладки |
|
||||
| `Body` | `string` | Markdown-текст |
|
||||
| `SortOrder` | `int` | Порядок вкладок (та же конвенция, что у `ClientApp`) |
|
||||
| `CreatedAt` | `DateTimeOffset` | |
|
||||
| `UpdatedAt` | `DateTimeOffset?` | |
|
||||
|
||||
Нет статуса черновик/опубликовано — публикация мгновенная, как у `NewsPost`. Полный CRUD только
|
||||
у админа (`/api/admin/instructions/tabs`); чтение — `GET /api/instructions/tabs` (активированным).
|
||||
Не пересеивается дефолтными вкладками — при полном сбросе панели просто удаляются.
|
||||
|
||||
### NewsPost — новости для пользователей
|
||||
Публикуются админом немедленно, видны всем залогиненным пользователям в хронологической ленте.
|
||||
|
||||
@@ -197,9 +229,10 @@ AppUser
|
||||
Вкладка «Обслуживание» → «Опасная зона» (спойлер + подтверждение фразой в диалоге, не просто
|
||||
`confirm()`) — `DELETE /api/admin/maintenance/factory-reset`. Возвращает панель к состоянию свежего
|
||||
деплоя: удаляет всех пользователей кроме текущего админа, конфиги (сначала best-effort отзываются
|
||||
на нодах 3x-ui), ноды/инбаунды, тикеты, новости, весь аудит и кастомные роли; каталог приложений
|
||||
пересеивается из `seed/client-apps.json`. Необратимо, не атомарно целиком — подробности и полный
|
||||
список удаляемого см. [api-design.md](api-design.md#admin--maintenance).
|
||||
на нодах 3x-ui), ноды/инбаунды, тикеты, новости, вводный текст и вкладки инструкций, весь аудит и
|
||||
кастомные роли; каталог приложений и вводный текст инструкций пересеиваются дефолтными значениями,
|
||||
вкладки инструкций — нет (пусто, как у новостей). Необратимо, не атомарно целиком — подробности и
|
||||
полный список удаляемого см. [api-design.md](api-design.md#admin--maintenance).
|
||||
|
||||
### AppUser — расширения (Identity)
|
||||
`AppUser` живёт в Identity (`Infrastructure`). **Логин — по `UserName`** (уникальный, обязательный).
|
||||
|
||||
Reference in New Issue
Block a user