Files
backPRO/docs/PLAN.md
2026-02-15 11:37:27 +01:00

150 lines
6.2 KiB
Markdown

# BackPRO - System Zarządzania Zapleczem SEO
## Opis projektu
BackPRO to narzędzie webowe (PHP) do automatycznego zarządzania siecią stron WordPress stanowiących zaplecze SEO. System po dodaniu instancji WordPressa i skonfigurowaniu tematów automatycznie generuje i publikuje unikalne artykuły z obrazkami, równomiernie rozkładając tematy.
**URL:** https://backpro.projectpro.pl
**Hosting:** Hostido (shared hosting)
## Stack technologiczny
- **PHP 8.3** - czyste PHP z własną strukturą MVC (bez frameworka)
- **MySQL/MariaDB** - baza danych
- **WordPress REST API** - komunikacja z instancjami WordPress
- **OpenAI API** - generowanie artykułów (konfigurowalny model: GPT-4o, GPT-4o-mini, itp.)
- **Freepik API** - generowanie/pobieranie obrazków do artykułów (z fallbackiem na Unsplash/Pexels)
- **CRON** - automatyczne uruchamianie publikacji co 1 godzinę
- **Bootstrap 5** - frontend panelu administracyjnego
- **Composer** - zarządzanie zależnościami (Guzzle HTTP, phpdotenv)
## Struktura katalogów
```
public_html/
├── index.php # Front controller
├── .htaccess # Rewrite rules + zabezpieczenia katalogów
├── .env # Konfiguracja (zablokowany .htaccess)
├── .env.example # Przykładowa konfiguracja
├── composer.json
├── vendor/ # Composer autoload
├── assets/
│ ├── css/app.css
│ └── js/app.js
├── docs/ # Dokumentacja (deny from all)
├── src/ # Kod PHP (deny from all)
│ ├── Core/ # Rdzeń MVC
│ │ ├── App.php # Bootstrap aplikacji
│ │ ├── Router.php # Routing URL → Controller
│ │ ├── Controller.php # Bazowy kontroler
│ │ ├── Model.php # Bazowy model (PDO wrapper)
│ │ ├── Database.php # Singleton połączenia PDO
│ │ ├── Auth.php # System autoryzacji
│ │ ├── View.php # Renderer szablonów
│ │ └── Config.php # Ładowanie .env
│ ├── Controllers/ # Kontrolery aplikacji
│ │ ├── AuthController.php
│ │ ├── DashboardController.php
│ │ ├── SiteController.php
│ │ ├── TopicController.php
│ │ ├── CategoryController.php
│ │ ├── ArticleController.php
│ │ ├── PublishController.php
│ │ └── SettingsController.php
│ ├── Models/ # Modele danych
│ │ ├── User.php
│ │ ├── Site.php
│ │ ├── Topic.php
│ │ ├── Category.php
│ │ ├── Article.php
│ │ └── PublishQueue.php
│ ├── Services/ # Logika biznesowa
│ │ ├── WordPressService.php
│ │ ├── OpenAIService.php
│ │ ├── ImageService.php
│ │ ├── PublisherService.php
│ │ └── TopicBalancer.php
│ └── Helpers/
│ ├── Validator.php
│ └── Logger.php
├── templates/ # Szablony PHP (deny from all)
│ ├── layout/
│ ├── auth/
│ ├── dashboard/
│ ├── sites/
│ ├── topics/
│ ├── categories/
│ ├── articles/
│ └── settings/
├── cron/ # Skrypty CRON (deny from all)
│ └── publish.php
├── storage/logs/ # Logi (deny from all)
├── migrations/ # Migracje SQL (deny from all)
└── config/ # Konfiguracja routingu (deny from all)
└── routes.php
```
## Główne funkcje
### 1. System logowania
- Login/hasło z bcrypt
- Sesje PHP
- Middleware autoryzacji
- Obsługa wielu użytkowników
- Zmiana hasła przez zalogowanego użytkownika (`/change-password`)
### 2. Zarządzanie stronami WordPress
- Dodawanie/edycja/usuwanie instancji WP
- Konfiguracja: URL, dane API (Application Password), interwał publikacji
- Oznaczanie jako jedno-/wielotematyczna
- Test połączenia z WP REST API
### 3. Biblioteka tematów (`/global-topics`)
- Globalna biblioteka tematów z hierarchią 2-poziomową (kategoria → temat)
- 14 kategorii nadrzędnych + ~50 subtematów preinstalowanych
- Dodawanie własnych kategorii i tematów
- Edycja / usuwanie (CASCADE na subtematach)
### 4. Zarządzanie tematami stron (`/sites/{id}/topics`)
- Przypisywanie tematów do stron z biblioteki globalnej lub tworzenie własnych
- Opis/wytyczne dla AI (co i jak pisać)
- Mapowanie na kategorię WordPress
- Aktywacja/dezaktywacja
### 4. Automatyczna publikacja (CRON)
Algorytm (co 1h):
1. Znajdź stronę, której kolej na publikację (najdłużej bez nowego artykułu + minął interwał)
2. TopicBalancer → wybierz temat z najmniejszą liczbą artykułów
3. OpenAI → wygeneruj artykuł (z listą istniejących tytułów w prompcie)
4. Freepik → wygeneruj obrazek
5. WP REST API → upload obrazka + publikacja posta
6. Zapisz w bazie, zaktualizuj liczniki
### 5. Historia artykułów
- Lista wszystkich wygenerowanych artykułów
- Podgląd treści
- Status (generated/published/failed)
- Logi błędów
### 6. Ustawienia
- Klucze API (OpenAI, Freepik)
- Wybór modelu AI
- Konfiguracja globalna
## Plan implementacji
| Etap | Zakres | Pliki |
|------|--------|-------|
| 1. Fundament | Struktura, Core MVC, .htaccess, migracja SQL, logowanie | Core/*, AuthController, migrations/ |
| 2. Strony | CRUD WordPress, tematy, kategorie, dashboard | SiteController, TopicController, CategoryController |
| 3. API | Integracje OpenAI, Freepik, WordPress REST API | Services/* |
| 4. Publikacja | PublisherService, TopicBalancer, CRON, historia | PublisherService, cron/publish.php, ArticleController |
| 5. Finalizacja | Ustawienia, logi, dokumentacja, testy | SettingsController, Logger, docs/ |
## Bezpieczeństwo
- Wszystkie katalogi poza assets/ zabezpieczone `.htaccess` (Deny from all)
- Plik `.env` zablokowany przez .htaccess
- Hasła hashowane bcrypt
- Prepared statements (PDO) - ochrona przed SQL injection
- htmlspecialchars() w szablonach - ochrona przed XSS
- CSRF tokeny w formularzach
- Application Passwords do WP REST API (nie zwykłe hasła)