feat: Add User-Agent header to Allegro API requests
- Implemented buildUserAgent() method in AllegroApiClient, AllegroOAuthClient, and AllegroTrackingService to include User-Agent header in all HTTP requests to Allegro API. - Updated .env.example to include APP_VERSION and ALLEGRO_USER_AGENT_URL for configuration. - Created public /info page to provide application details required by Allegro, including app name, version, description, and contact information. - Added minimalist layout for public pages to ensure a professional appearance. - Ensured all changes comply with Allegro's API requirements for User-Agent header.
This commit is contained in:
155
.paul/phases/89-allegro-info-page/89-01-PLAN.md
Normal file
155
.paul/phases/89-allegro-info-page/89-01-PLAN.md
Normal file
@@ -0,0 +1,155 @@
|
||||
---
|
||||
phase: 89-allegro-info-page
|
||||
plan: 01
|
||||
type: execute
|
||||
wave: 1
|
||||
depends_on: ["88-01"]
|
||||
files_modified: [routes/web.php, src/Modules/Info/InfoController.php, resources/views/info/allegro.php, resources/views/layouts/public.php]
|
||||
autonomous: false
|
||||
delegation: off
|
||||
---
|
||||
|
||||
<objective>
|
||||
## Goal
|
||||
Utworzenie publicznej podstrony informacyjnej `/info` wymaganej przez Allegro w nagłówku User-Agent. Strona musi prezentować cel i opis aplikacji orderPRO dla administratorów zewnętrznych.
|
||||
|
||||
## Purpose
|
||||
Allegro wymaga w User-Agent URL do strony informacyjnej aplikacji. Strona musi istnieć pod adresem skonfigurowanym w ALLEGRO_USER_AGENT_URL (domyślnie https://orderpro.pl/info).
|
||||
|
||||
## Output
|
||||
Publiczna strona `/info` bez wymagania logowania, z opisem aplikacji orderPRO.
|
||||
</objective>
|
||||
|
||||
<context>
|
||||
## Project Context
|
||||
@.paul/PROJECT.md
|
||||
@.paul/ROADMAP.md
|
||||
@.paul/STATE.md
|
||||
|
||||
## Prior Work
|
||||
@.paul/phases/88-allegro-user-agent/88-01-SUMMARY.md — User-Agent header z URL do tej strony
|
||||
|
||||
## Source Files
|
||||
@routes/web.php — routing (publiczne trasy bez middleware)
|
||||
@src/Modules/Auth/AuthController.php — wzorzec kontrolera publicznej strony
|
||||
@resources/views/layouts/auth.php — layout publicznych stron (bez sidebara)
|
||||
</context>
|
||||
|
||||
<acceptance_criteria>
|
||||
|
||||
## AC-1: Strona /info dostepna publicznie
|
||||
```gherkin
|
||||
Given uzytkownik niezalogowany
|
||||
When odwiedza /info w przegladarce
|
||||
Then widzi strone informacyjna o aplikacji orderPRO (bez przekierowania na login)
|
||||
```
|
||||
|
||||
## AC-2: Tresc strony zgodna z wymaganiami Allegro
|
||||
```gherkin
|
||||
Given administrator zewnetrzny (np. Allegro) odwiedza strone /info
|
||||
When czyta zawartosc
|
||||
Then widzi: nazwe aplikacji, opis celu dzialania, informacje o integracji z Allegro API, dane kontaktowe
|
||||
```
|
||||
|
||||
## AC-3: Strona wyglada profesjonalnie
|
||||
```gherkin
|
||||
Given uzytkownik odwiedza /info
|
||||
When strona sie laduje
|
||||
Then widzi czysty, profesjonalny layout (bez sidebara/nawigacji aplikacji, minimalistyczny design)
|
||||
```
|
||||
|
||||
</acceptance_criteria>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Kontroler i routing strony /info</name>
|
||||
<files>src/Modules/Info/InfoController.php, routes/web.php</files>
|
||||
<action>
|
||||
1. Utworzyc `src/Modules/Info/InfoController.php`:
|
||||
- Klasa `final class InfoController` w namespace `App\Modules\Info`
|
||||
- Metoda `show(Request $request): Response`
|
||||
- Renderowanie widoku `info/allegro` z layoutem `layouts/public`
|
||||
- Przekazac do widoku: APP_NAME, APP_VERSION z getenv()
|
||||
|
||||
2. W `routes/web.php`:
|
||||
- Dodac `use App\Modules\Info\InfoController;`
|
||||
- Utworzyc instancje `$infoController = new InfoController($template);`
|
||||
- Dodac route BEZ middleware: `$router->get('/info', [$infoController, 'show']);`
|
||||
- Umiescic blisko innych publicznych tras (login, health)
|
||||
</action>
|
||||
<verify>Route /info zdefiniowana bez authMiddleware w routes/web.php</verify>
|
||||
<done>AC-1 satisfied: strona /info dostepna bez logowania</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Layout publiczny i widok strony informacyjnej</name>
|
||||
<files>resources/views/layouts/public.php, resources/views/info/allegro.php</files>
|
||||
<action>
|
||||
1. Utworzyc `resources/views/layouts/public.php`:
|
||||
- Minimalistyczny layout HTML5 (bez sidebara, nawigacji, ani elementow aplikacji)
|
||||
- Meta viewport dla mobile
|
||||
- Inline style lub link do istniejacego CSS (uzyc minimalnych styli)
|
||||
- Sekcja `<?= $content ?>` na tresc
|
||||
|
||||
2. Utworzyc `resources/views/info/allegro.php`:
|
||||
- Tresc strony informacyjnej:
|
||||
- **Nazwa aplikacji:** orderPRO
|
||||
- **Wersja:** dynamicznie z przekazanej zmiennej
|
||||
- **Opis:** "orderPRO to aplikacja do zarzadzania zamowieniami z wielu kanalow sprzedazy (Allegro, sklepy internetowe). Umozliwia centralne przetwarzanie zamowien, generowanie etykiet przewozowych i sledzenie przesylek."
|
||||
- **Integracja z Allegro:** "Aplikacja korzysta z Allegro REST API do importu zamowien, zarzadzania przesylkami oraz synchronizacji statusow."
|
||||
- **Kontakt:** email kontaktowy (uzyc zmiennej lub hardcode)
|
||||
- Profesjonalny, minimalistyczny design
|
||||
- Jezyk strony: polski
|
||||
- Escape wszystkich zmiennych przez $e()
|
||||
</action>
|
||||
<verify>Pliki istnieja: resources/views/layouts/public.php i resources/views/info/allegro.php</verify>
|
||||
<done>AC-2 i AC-3 satisfied: tresc informacyjna i profesjonalny wyglad</done>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:human-verify" gate="blocking">
|
||||
<what-built>Publiczna strona /info z opisem aplikacji orderPRO</what-built>
|
||||
<how-to-verify>
|
||||
1. Uruchom aplikacje lokalnie
|
||||
2. Odwiedz: http://localhost:8000/info (lub odpowiedni URL)
|
||||
3. Sprawdz: strona laduje sie BEZ logowania
|
||||
4. Sprawdz: widoczna nazwa aplikacji, opis, informacja o Allegro API
|
||||
5. Sprawdz: wyglad profesjonalny i czytelny
|
||||
6. Sprawdz: na mobile (zmniejsz okno) strona jest responsywna
|
||||
</how-to-verify>
|
||||
<resume-signal>Type "approved" to continue, or describe issues to fix</resume-signal>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<boundaries>
|
||||
|
||||
## DO NOT CHANGE
|
||||
- src/Modules/Auth/* (system autoryzacji)
|
||||
- resources/views/layouts/app.php (layout aplikacji)
|
||||
- Istniejace publiczne trasy (login, health, cron)
|
||||
|
||||
## SCOPE LIMITS
|
||||
- Tylko jedna strona /info — bez podstron
|
||||
- Nie dodawac nowych zaleznosci CSS/JS
|
||||
- Nie tworzyc systemu CMS — statyczna tresc w widoku
|
||||
|
||||
</boundaries>
|
||||
|
||||
<verification>
|
||||
Before declaring plan complete:
|
||||
- [ ] GET /info zwraca 200 bez zalogowania
|
||||
- [ ] Strona zawiera nazwe, opis i informacje o Allegro API
|
||||
- [ ] Layout nie zawiera elementow aplikacji (sidebar, nawigacja)
|
||||
- [ ] Brak regresji w istniejacych trasach
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- Strona /info dostepna publicznie pod URL z User-Agent
|
||||
- Tresc zgodna z wymaganiami Allegro (cel aplikacji, dane kontaktowe)
|
||||
- Profesjonalny wyglad bez elementow wewnetrznych aplikacji
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
After completion, create `.paul/phases/89-allegro-info-page/89-01-SUMMARY.md`
|
||||
</output>
|
||||
Reference in New Issue
Block a user