mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-04-13 08:28:32 +00:00
docs: update MIGRATION.md — add Phase 16.5, remove completed items
This commit is contained in:
53
MIGRATION.md
53
MIGRATION.md
@@ -1,7 +1,7 @@
|
||||
# XC_VM — План миграции
|
||||
|
||||
> Архитектурные принципы, структура проекта и описание компонентов — см. [ARCHITECTURE.md](ARCHITECTURE.md).
|
||||
> Обновлено: 2026-04-07
|
||||
> Обновлено: 2026-04-09
|
||||
|
||||
## Содержание
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
| **12** | CLI runner | console.php + 26 Commands + 25 CronJobs. includes/cli/ и crons/ удалены. LB guards |
|
||||
| **13** | Streaming (13.1–13.3) | ShutdownHandler, StreamAuthMiddleware, micro-router. Hot path не затронут |
|
||||
| **14** | CSS/JS partials | footer.php: 810→85 строк, common.js (730 стр.), XC_VM.Config bridge |
|
||||
| **16** | Удаление admin.php | 121 функция → 17 классов, admin_proxies.php, loadLegacyProxies(), unified bootstrap |
|
||||
| **16** | Удаление admin.php + proxy | 121 функция → 17 классов, 869 замен в 160+ файлах, admin_proxies.php удалён |
|
||||
|
||||
**Новые классы (Phase 8):** SettingsManager, RequestManager, ConfigReader, DatabaseFactory, RedisManager, FfmpegPaths, FileCache, DataEncryptor, InputSanitizer, IpUtils, UrlBuilder, ImageUtils, Helpers, ProcessManager, ConnectionManager, BackupService, ProviderService, ProfileService, RadioService, SystemCheck, InputValidator.
|
||||
|
||||
@@ -200,6 +200,19 @@
|
||||
4. Makefile: `admin.php` → `admin_proxies.php` в `LB_FILES_TO_REMOVE`
|
||||
5. `php -l` — all pass
|
||||
|
||||
#### 16.5 — Ликвидация proxy-функций ✅
|
||||
|
||||
> **Завершено:** 2026-04-09. `admin_proxies.php` удалён. `loadLegacyProxies()` удалён.
|
||||
|
||||
1. 869 замен в 160+ файлах: все proxy-функции (`goHome()`, `getBouquet()`, `deleteStream()`, `APIRequest()`, `systemapirequest()`, `checkPermissions()`, `destroySession()` и 114 др.) заменены прямыми вызовами классов.
|
||||
2. `function_exists()` guards удалены из BaseAdminController, BaseResellerController, BouquetController и др.
|
||||
3. `admin_proxies.php` — файл удалён.
|
||||
4. `XC_Bootstrap::loadLegacyProxies()` — метод удалён из bootstrap.php.
|
||||
5. Вызовы `loadLegacyProxies()` удалены из 5 CronJobs/Commands.
|
||||
6. Makefile: `admin_proxies.php` убран из `LB_FILES_TO_REMOVE`.
|
||||
7. SQL-запросы: конкатенация `'[' . implode(...) . ']'` → `?` placeholders (BouquetService, CategoryService).
|
||||
8. PHP 8.x warnings: null-safe access fixes (live.php, server_view.php, stream.php).
|
||||
|
||||
---
|
||||
|
||||
## 6. Отложенные подшаги
|
||||
@@ -214,15 +227,7 @@
|
||||
|
||||
## 7. Известные пробелы и TODO
|
||||
|
||||
> Актуализировано: 2026-04-07.
|
||||
|
||||
### ~~6.1. Legacy-остатки: crons/epg.php~~ ✅
|
||||
|
||||
Решено. Директория crons/ удалена, все вызовы → console.php, EPG → domain/Epg/EPG.php.
|
||||
|
||||
### ~~6.2. EventDispatcher не в ServiceContainer~~ ✅
|
||||
|
||||
Решено (2026-04-07). `EventDispatcher::class` зарегистрирован как `events` в `populateContainer()`. `ModuleLoader::bootAll()` использует `EventDispatcher::subscribe()`.
|
||||
> Актуализировано: 2026-04-09.
|
||||
|
||||
### 6.3. Navbar.php — модульная навигация
|
||||
|
||||
@@ -238,24 +243,14 @@
|
||||
|
||||
84 JS-файла в `src/ministra/`. Symlink `www/c → ministra/` ломается при перемещении. Отложено как 13.4.
|
||||
|
||||
### ~~6.6. BalancerCommand sentinel~~ ✅
|
||||
|
||||
Решено. Обе ветки (type 1 и type 2) используют `$this->runSSH($rConn, 'test -f ...')` — проверка на удалённом сервере.
|
||||
|
||||
### Сводная таблица
|
||||
|
||||
| # | Пробел | Статус | Блокирует | Усилия |
|
||||
|---|--------|--------|-----------|--------|
|
||||
| 6.1 | crons/epg.php | ✅ | — | — |
|
||||
| 6.2 | EventDispatcher в контейнере | ✅ | — | — |
|
||||
| 6.3 | Navbar.php | ⏳ | Module navigation | 2–4 ч |
|
||||
| 6.4 | Module routes в FC | 🟢 by design | — | — |
|
||||
| 6.5 | Ministra JS | ⏳ | — | 2–4 ч |
|
||||
| 6.6 | BalancerCommand sentinel | ✅ | — | — |
|
||||
| §11.5 | Admin/Reseller REST API | ⏳ | Удаление www/ proxies | 8–16 ч |
|
||||
| Phase 14 | CSS/JS partials (common.js) | ✅ | — | — |
|
||||
| Phase 15 | Ликвидация src/includes/ | ✅ | — | — |
|
||||
| Phase 16 | Удаление admin.php (legacy bootstrap) | ✅ | — | — |
|
||||
|
||||
---
|
||||
|
||||
@@ -267,13 +262,15 @@
|
||||
bootstrap.php (единственный entry point)
|
||||
├── autoload.php
|
||||
├── ServiceContainer
|
||||
├── core/domain/
|
||||
└── loadLegacyProxies() → admin_proxies.php (121 proxy функций)
|
||||
└── core/domain/
|
||||
```
|
||||
|
||||
`bootstrap.php` — единственный bootstrap. `infrastructure/legacy/admin.php` удалён (Phase 16.4).
|
||||
`admin_proxies.php` содержит 121 deprecated proxy-функцию; постепенно заменяются прямыми вызовами классов.
|
||||
`includes/admin.php` — минимальный proxy (5 строк), перенаправляет на `bootstrap.php` + `boot(CONTEXT_ADMIN)`.
|
||||
`bootstrap.php` — единственный bootstrap. Все legacy-файлы удалены:
|
||||
- `infrastructure/legacy/admin.php` — удалён (Phase 16.4)
|
||||
- `infrastructure/legacy/admin_proxies.php` — удалён (Phase 16.5)
|
||||
- `includes/admin.php` — удалён (Phase 15.6)
|
||||
|
||||
Proxy-функций больше нет. Весь код использует прямые вызовы классов.
|
||||
|
||||
### Feature flags
|
||||
|
||||
@@ -293,7 +290,7 @@ bootstrap.php (единственный entry point)
|
||||
Phase 14 ─── CSS/JS partials (footer.php) ✅ Завершено
|
||||
│
|
||||
▼
|
||||
Phase 16 ─── Удаление legacy admin.php ✅ Завершено
|
||||
Phase 16 ─── Удаление legacy admin.php + proxy ✅ Завершено
|
||||
│
|
||||
▼
|
||||
Phase 15 ─── Ликвидация src/includes/ ✅ Завершено
|
||||
@@ -306,5 +303,5 @@ Phase 11 ─── API deletion (11.5 + 11.6) 🟡 Средний р
|
||||
|
||||
| Релиз | Содержит | Риск |
|
||||
|-------|----------|------|
|
||||
| **v2.4** | ~~Phase 14 (CSS/JS)~~ ✅ + ~~Phase 16 (admin.php)~~ ✅ + ~~Phase 15 (ликвидация includes/)~~ ✅ | ✅ |
|
||||
| **v2.4** | Phase 14 ✅ + Phase 15 ✅ + Phase 16 (вкл. 16.5 proxy elimination) ✅ | ✅ |
|
||||
| **v2.5** | Phase 11 (API deletion) + пробелы 6.3 | 🟡 |
|
||||
|
||||
Reference in New Issue
Block a user