lenovo
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
- **2026-03-17**: Obnovena session – Claude si přečetl poznámky, připraven pokračovat
|
||||
- **2026-03-18**: Obnovena session – Claude si přečetl poznámky, připraven pokračovat. Průběžně zapisuje do tohoto souboru.
|
||||
- **2026-03-20**: Obnovena session – merge logika z `test_import_single.py` integrována do `s03soubory.py`. Import pipeline kompletní.
|
||||
- **2026-04-01**: Opravena chyba `BlobReader invalid BLOB handle` v `dekurz_report.py` – viz níže.
|
||||
|
||||
## Bezpečnost
|
||||
- Pracujeme na **místní kopii** – poškození DB nevadí, obnova = 5 minut
|
||||
@@ -356,6 +357,39 @@ Správný RTF formát klikacího odkazu:
|
||||
- `test_import_merge.py` ✅ otestováno – merge 3 souborů (jen 2 případy, bez detekce sekce)
|
||||
- `test_import_single.py` ✅ otestováno – všechny 3 případy, základ pro s03soubory.py
|
||||
|
||||
## Oprava BlobReader v dekurz_report.py (2026-04-01)
|
||||
|
||||
### Chyba
|
||||
```
|
||||
Exception ignored while calling deallocator <function BlobReader.__del__>:
|
||||
fdb.fbcore.DatabaseError: BlobReader.close/isc_close_blob: invalid BLOB handle (-901)
|
||||
```
|
||||
Skript fungoval správně (exit code 0, Excel uložen), ale garbage collector házel warningy.
|
||||
|
||||
### Příčina
|
||||
`fdb` vrací BLOB sloupce jako `BlobReader` objekty. Po `conn.close()` se při GC pokoušely
|
||||
zavřít handle, který již neexistoval.
|
||||
|
||||
### Oprava
|
||||
Explicitně zavřít `BlobReader` hned po `.read()`, ještě za živa spojení:
|
||||
|
||||
```python
|
||||
# PŘED (špatně):
|
||||
rtf = dekurs_blob.read() if hasattr(dekurs_blob, 'read') else (dekurs_blob or '')
|
||||
|
||||
# PO (správně):
|
||||
if hasattr(dekurs_blob, 'read'):
|
||||
rtf = dekurs_blob.read()
|
||||
dekurs_blob.close()
|
||||
else:
|
||||
rtf = dekurs_blob or ''
|
||||
```
|
||||
|
||||
### Obecné pravidlo
|
||||
Kdykoli čteme BLOB z fdb, vždy `.close()` po `.read()` – jinak GC po `conn.close()` hlásí chybu.
|
||||
|
||||
---
|
||||
|
||||
## Další postup (nápady)
|
||||
- Otestovat `s03soubory.py` na Windows se skutečnými soubory (všechny 3 případy)
|
||||
- Napsat `rtf_to_text()` pro extrakci čistého textu z dekurzů
|
||||
|
||||
Reference in New Issue
Block a user