# Baltique OS Core 0.45.1 — Predictive / Timeline Hotfix

Upgrade do obecnej instalacji. Nie jest to reinstalacja.

## Cel

Core 0.45.1 naprawia dwa błędy zgłoszone po próbie uruchomienia Core 0.45.0:

1. błąd SQL przy uruchamianiu upgrade 0.45.0:

```text
SQLSTATE[42000]: Syntax error or access violation: 1064
... near 'current_time DATETIME NOT NULL, tick_minutes INT UNSIGNED NOT NULL DEF'
```

2. błąd przy tworzeniu Ścieżki Pacjenta Operacyjnego:

```text
SQLSTATE[23000]: Integrity constraint violation: 1062
Duplicate entry '0-' for key 'operative_case_timeline.uq_op_timeline'
```

## Co naprawiono

### 1. current_time

`current_time` może być traktowane przez niektóre konfiguracje MySQL jako słowo zarezerwowane / funkcja czasu.

Naprawa:

- w tabelach symulacji dnia kolumna jest używana jako:

```text
`current_time`
```

- poprawiono SQL w:

```text
app/theatreflow_v2_simulation.php
database/migrations/052_theatreflow_v2_day_simulation.sql
```

- upgrade 0.45.1 uruchamia naprawione tworzenie tabel symulacji.

### 2. Duplicate entry 0- w timeline

Problem pochodził ze starszego schematu, w którym istniał legacy index:

```text
operative_case_timeline.uq_op_timeline
```

oparty o stare pole `case_id` lub częściowo utworzone pola domyślne.

Naprawa:

- usuwa legacy index `uq_op_timeline`, jeśli istnieje,
- usuwa wadliwe wpisy z `operative_case_id = 0`,
- synchronizuje stare `case_id` z nowym `operative_case_id`, jeśli kolumna istnieje,
- dodaje bezpieczny nieunikalny indeks,
- poprawia generowanie timeline w `app/operative_path.php`.

## Jak zainstalować

1. Zrób backup plików i bazy.
2. Wgraj zawartość paczki do głównego katalogu Baltique OS.
3. Zaloguj się jako administrator.
4. Otwórz:

```text
https://baltique.pl/upgrade_0_45_1.php
```

5. Kliknij:

```text
Uruchom upgrade 0.45.1
```

6. Po sukcesie przetestuj:

```text
https://baltique.pl/operative_path.php
https://baltique.pl/theatreflow_v2_predictive.php
```

## Uwaga

W paczce podmieniony jest też plik:

```text
upgrade_0_45_0.php
```

tak aby przypadkowe wejście w stary adres również używało naprawionej logiki hotfixu.
