update
This commit is contained in:
167
.paul/phases/02-critical-bugs-fix/02-02-PLAN.md
Normal file
167
.paul/phases/02-critical-bugs-fix/02-02-PLAN.md
Normal file
@@ -0,0 +1,167 @@
|
||||
---
|
||||
phase: 02-critical-bugs-fix
|
||||
plan: 02
|
||||
type: execute
|
||||
wave: 1
|
||||
depends_on: []
|
||||
files_modified:
|
||||
- templates/site/layout-cron.php
|
||||
- templates/cron/main-view.php
|
||||
- autoload/view/class.Site.php
|
||||
autonomous: true
|
||||
---
|
||||
|
||||
<objective>
|
||||
## Goal
|
||||
Naprawić stronę cron (`/cron/main_view/`) — usunąć widoczne elementy nawigacji u góry i zabezpieczyć JS przed zatrzymaniem się po błędzie serwera.
|
||||
|
||||
## Purpose
|
||||
Strona cron to dashboard monitorujący zadania cykliczne. Po zmianach w CRM nawigacja (logo, user-nav, menu) wyświetla się nieprawidłowo, a błędy serwera (np. nieprawidłowy JSON) powodują zatrzymanie pętli JS cron.
|
||||
|
||||
## Output
|
||||
- Uproszczony layout-cron.php bez zbędnej nawigacji
|
||||
- Odporny na błędy JS w cron/main-view.php
|
||||
- Poprawiony view/class.Site.php (ustawienie $tpl->user dla cron)
|
||||
</objective>
|
||||
|
||||
<context>
|
||||
## Project Context
|
||||
@.paul/PROJECT.md
|
||||
@.paul/ROADMAP.md
|
||||
@.paul/STATE.md
|
||||
|
||||
## Source Files
|
||||
@templates/site/layout-cron.php
|
||||
@templates/cron/main-view.php
|
||||
@autoload/view/class.Site.php
|
||||
</context>
|
||||
|
||||
<acceptance_criteria>
|
||||
|
||||
## AC-1: Nawigacja niewidoczna na stronie cron
|
||||
```gherkin
|
||||
Given strona /cron/main_view/ jest otwarta w przeglądarce
|
||||
When użytkownik widzi stronę
|
||||
Then elementy .top (logo, user-nav) i .main-menu nie są widoczne
|
||||
And widoczna jest tylko zawartość cron dashboard
|
||||
```
|
||||
|
||||
## AC-2: JS kontynuuje pracę po błędzie serwera
|
||||
```gherkin
|
||||
Given cron JS loop jest uruchomiony
|
||||
When serwer zwróci nieprawidłowy JSON (np. PHP warning/error)
|
||||
Then JS nie zatrzymuje się
|
||||
And pętla cron kontynuuje z rosnącym delay
|
||||
And użytkownik widzi komunikat o błędzie
|
||||
```
|
||||
|
||||
## AC-3: Brak błędu JS w layout-cron
|
||||
```gherkin
|
||||
Given strona cron jest załadowana
|
||||
When JavaScript się inicjalizuje
|
||||
Then nie ma błędu składni JS (usunięty stray "$" w tagu script)
|
||||
```
|
||||
|
||||
</acceptance_criteria>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Uprościć layout-cron.php — usunąć nawigację</name>
|
||||
<files>templates/site/layout-cron.php, autoload/view/class.Site.php</files>
|
||||
<action>
|
||||
**templates/site/layout-cron.php:**
|
||||
1. Usunąć blok `.top` (linie 33-58) — logo i user-nav niepotrzebne na stronie cron
|
||||
2. Usunąć blok `.main-menu` (linie 59-108) — menu niepotrzebne na stronie cron
|
||||
3. Zostawić prosty layout: head + body z klasą "cron-page" + div.main z contentem + popup + script
|
||||
4. Naprawić linię 124: usunąć stray `$` z `<script type="text/javascript">$` → `<script type="text/javascript">`
|
||||
|
||||
**autoload/view/class.Site.php:**
|
||||
5. W bloku cron (linie 20-26), ustawić `$tpl->user = $user;` przed renderowaniem, na wypadek gdyby szablon potrzebował — lub upewnić się, że uproszczony szablon nie odwołuje się do $this->user
|
||||
|
||||
WAŻNE: Zachować head z CSS/JS (potrzebne dla gridEdit i countdown). Zachować sekcję popup i script na dole.
|
||||
</action>
|
||||
<verify>
|
||||
Odczytać layout-cron.php i potwierdzić:
|
||||
- Brak bloków .top i .main-menu
|
||||
- Brak stray "$" w tagu script
|
||||
- Head, div.main, popup i scripts zachowane
|
||||
</verify>
|
||||
<done>AC-1 i AC-3 satisfied: Nawigacja usunięta, błąd składni JS naprawiony</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Zabezpieczyć JS cron loop przed błędami serwera</name>
|
||||
<files>templates/cron/main-view.php</files>
|
||||
<action>
|
||||
W funkcji `cron()` w callback `success`:
|
||||
1. Opakować `jQuery.parseJSON(data)` w try/catch
|
||||
2. W catch: wyświetlić komunikat o błędzie, zwiększyć delay, restart countdown (analogicznie do istniejącego error handler)
|
||||
3. Zamienić przestarzałe `jQuery.parseJSON(data)` na `JSON.parse(data)` (jQuery.parseJSON jest deprecated)
|
||||
|
||||
Wzór:
|
||||
```javascript
|
||||
success: function( data ) {
|
||||
try {
|
||||
var response = JSON.parse( data );
|
||||
} catch(e) {
|
||||
delay++;
|
||||
if ( delay > 120 ) delay = 120;
|
||||
$( '#cron-container' ).prepend( '<div class="msg error">Błąd parsowania odpowiedzi serwera.</div>' );
|
||||
$( '.countdown.callback' ).removeClass('ended').data('countdown').update( +( new Date ) + delay * 1000 ).start();
|
||||
return;
|
||||
}
|
||||
// reszta istniejącej logiki success
|
||||
}
|
||||
```
|
||||
|
||||
WAŻNE: Nie zmieniać logiki error/statusCode handlers — działają poprawnie.
|
||||
Dodać `var` przed `response` (linia 51 — brak var powoduje global variable).
|
||||
</action>
|
||||
<verify>
|
||||
Odczytać cron/main-view.php i potwierdzić:
|
||||
- JSON.parse opakowane w try/catch
|
||||
- W catch: delay++, komunikat, restart countdown
|
||||
- Zmienna response zadeklarowana z var
|
||||
</verify>
|
||||
<done>AC-2 satisfied: JS cron loop jest odporny na błędy parsowania JSON</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<boundaries>
|
||||
|
||||
## DO NOT CHANGE
|
||||
- cron.php (backend cron logic)
|
||||
- libraries/grid/* (gridEdit framework)
|
||||
- libraries/countdown/* (countdown plugin)
|
||||
- autoload/controls/class.Cron.php (routing)
|
||||
- autoload/view/class.Cron.php (view logic)
|
||||
|
||||
## SCOPE LIMITS
|
||||
- Naprawiamy TYLKO problemy ze stroną cron
|
||||
- NIE zmieniamy logiki cron backend
|
||||
- NIE dodajemy nowych zależności
|
||||
- NIE refaktoryzujemy gridEdit ani countdown
|
||||
|
||||
</boundaries>
|
||||
|
||||
<verification>
|
||||
Before declaring plan complete:
|
||||
- [ ] Bloki .top i .main-menu usunięte z layout-cron.php
|
||||
- [ ] Stray "$" usunięty z tagu script w layout-cron.php
|
||||
- [ ] JSON.parse w try/catch w cron/main-view.php
|
||||
- [ ] Zmienna response zadeklarowana z var
|
||||
- [ ] Countdown restartuje się po błędzie parsowania
|
||||
- [ ] All acceptance criteria met
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- Strona /cron/main_view/ nie pokazuje nawigacji u góry
|
||||
- JS cron loop kontynuuje działanie po błędzie serwera
|
||||
- Brak błędów JS w konsoli przeglądarki
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
After completion, create `.paul/phases/02-critical-bugs-fix/02-02-SUMMARY.md`
|
||||
</output>
|
||||
102
.paul/phases/02-critical-bugs-fix/02-02-SUMMARY.md
Normal file
102
.paul/phases/02-critical-bugs-fix/02-02-SUMMARY.md
Normal file
@@ -0,0 +1,102 @@
|
||||
---
|
||||
phase: 02-critical-bugs-fix
|
||||
plan: 02
|
||||
subsystem: ui
|
||||
tags: [cron, javascript, error-handling, layout]
|
||||
|
||||
requires:
|
||||
- phase: 01-sonarqube-baseline
|
||||
provides: identified cron page issues
|
||||
provides:
|
||||
- Clean cron page layout without navigation
|
||||
- Resilient JS cron loop with JSON parse error handling
|
||||
affects: []
|
||||
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: [try-catch on JSON.parse for AJAX responses]
|
||||
|
||||
key-files:
|
||||
created: []
|
||||
modified:
|
||||
- templates/site/layout-cron.php
|
||||
- templates/cron/main-view.php
|
||||
|
||||
key-decisions:
|
||||
- "Usunięto nawigację z layout-cron zamiast ukrywania CSS — czystsze rozwiązanie"
|
||||
- "JSON.parse zamiast deprecated jQuery.parseJSON"
|
||||
|
||||
patterns-established:
|
||||
- "AJAX success callbacks z try/catch na JSON.parse"
|
||||
|
||||
duration: 5min
|
||||
started: 2026-03-15T12:00:00Z
|
||||
completed: 2026-03-15T12:05:00Z
|
||||
---
|
||||
|
||||
# Phase 2 Plan 02: Cron Page Fix Summary
|
||||
|
||||
**Usunięto nawigację ze strony cron i zabezpieczono JS loop przed błędami parsowania JSON z serwera.**
|
||||
|
||||
## Performance
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Duration | ~5min |
|
||||
| Started | 2026-03-15 |
|
||||
| Completed | 2026-03-15 |
|
||||
| Tasks | 2 completed |
|
||||
| Files modified | 2 |
|
||||
|
||||
## Acceptance Criteria Results
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| AC-1: Nawigacja niewidoczna na stronie cron | Pass | Usunięto bloki .top i .main-menu z layout-cron.php |
|
||||
| AC-2: JS kontynuuje pracę po błędzie serwera | Pass | try/catch na JSON.parse, restart countdown w catch |
|
||||
| AC-3: Brak błędu JS w layout-cron | Pass | Usunięto stray "$" z tagu script |
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- Usunięto pełną nawigację (logo, user-nav, main-menu) z layout-cron.php — strona cron pokazuje tylko dashboard
|
||||
- Zabezpieczono JS cron loop — JSON.parse opakowany w try/catch z komunikatem błędu i restart countdown
|
||||
- Naprawiono błąd składni JS (stray `$` w tagu `<script>`)
|
||||
- Zamieniono deprecated `jQuery.parseJSON` na natywne `JSON.parse`
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
| File | Change | Purpose |
|
||||
|------|--------|---------|
|
||||
| `templates/site/layout-cron.php` | Modified | Usunięto .top i .main-menu, zmieniono body class na cron-page, naprawiono stray $ |
|
||||
| `templates/cron/main-view.php` | Modified | try/catch na JSON.parse, var response, komunikat błędu parsowania |
|
||||
|
||||
## Decisions Made
|
||||
|
||||
| Decision | Rationale | Impact |
|
||||
|----------|-----------|--------|
|
||||
| Usunięcie nawigacji zamiast CSS hide | Czystsze — cron nie potrzebuje session user | Brak odwołań do $this->user w szablonie |
|
||||
| JSON.parse zamiast jQuery.parseJSON | jQuery.parseJSON deprecated od jQuery 3.0 | Zgodność z nowszymi wersjami jQuery |
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None — plan executed exactly as written.
|
||||
|
||||
## Issues Encountered
|
||||
|
||||
None.
|
||||
|
||||
## Next Phase Readiness
|
||||
|
||||
**Ready:**
|
||||
- Strona cron działa z czystym layoutem
|
||||
- JS cron loop odporny na błędy serwera
|
||||
|
||||
**Concerns:**
|
||||
- None
|
||||
|
||||
**Blockers:**
|
||||
- None
|
||||
|
||||
---
|
||||
*Phase: 02-critical-bugs-fix, Plan: 02*
|
||||
*Completed: 2026-03-15*
|
||||
Reference in New Issue
Block a user