copilot test
This commit is contained in:
71
README.md
71
README.md
@@ -1,3 +1,70 @@
|
||||
# Scenar-creator
|
||||
# Scenar Creator
|
||||
|
||||
Repozitar obsahuje nastroj pro vytvareni scenaru pro zazitkove kurzy
|
||||
Jednoduchá CGI aplikace pro vytváření časových plánů (Excel) z nahraného Excelu se seznamem programů.
|
||||
|
||||
Krátký, praktický popis, jak projekt spustit, testovat a kde hledat důležité části kódu.
|
||||
|
||||
## Co to dělá
|
||||
|
||||
- `cgi-bin/scenar.py` načte Excel s řádky obsahujícími Datum, Začátek, Konec, Program, Typ, Garant, Poznámka.
|
||||
- Na základě polí `Typ` vytvoří HTML formulář pro přiřazení popisů a barev, a nakonec vygeneruje výsledný sešit (OpenPyXL) s časovou osou.
|
||||
|
||||
## Rychlý start (lokálně, bez Dockeru)
|
||||
|
||||
1) V kořeni repozitáře spusť jednoduchý CGI server (vyžaduje Python):
|
||||
|
||||
```bash
|
||||
python -m http.server --cgi 8000
|
||||
# Otevři v prohlížeči: http://localhost:8000/cgi-bin/scenar.py
|
||||
```
|
||||
|
||||
2) Alternativně připrav virtuální prostředí a spusť testy:
|
||||
|
||||
```bash
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
pytest -q
|
||||
```
|
||||
|
||||
## Docker (produkční přiblížení)
|
||||
|
||||
Dockerfile vytváří image na `python:3.12-slim`, instaluje `pandas` a `openpyxl`, nastaví Apache s povoleným CGI a DocumentRoot na `/var/www/htdocs`. Nasazení:
|
||||
|
||||
```bash
|
||||
docker build -t scenar-creator .
|
||||
docker run -p 8080:8080 scenar-creator
|
||||
# Pak otevři: http://localhost:8080/
|
||||
```
|
||||
|
||||
## Testy
|
||||
|
||||
- Testy jsou v `tests/` a používají `pytest`.
|
||||
- Přidal jsem testy pro funkci `read_excel` (happy path + invalid time). Spuštění viz výše.
|
||||
|
||||
## Struktura projektu (klíčové soubory)
|
||||
|
||||
- `cgi-bin/scenar.py` — hlavní CGI skript (HTML generováno inline). Hledej funkce:
|
||||
- `read_excel(file_content)` — parsování vstupního xlsx (pandas) → vrací (valid_data, error_rows)
|
||||
- `create_timetable(...)` — vytváří OpenPyXL sešit
|
||||
- `get_program_types(form)` — načítání dynamických polí `type_code_{i}`, `desc_{i}`, `color_{i}`
|
||||
- `templates/scenar_template.xlsx` — šablona pro uživatele
|
||||
- `tmp/` — místo, kam se výsledné soubory ukládají při běhu (v Dockeru `/var/www/htdocs/tmp`)
|
||||
- `.github/copilot-instructions.md` — instrukce pro AI agenty (přehled konvencí a místa úprav)
|
||||
|
||||
## Konvence a poznámky pro vývojáře
|
||||
|
||||
- HTML jsou inline stringy v `scenar.py` (sekce `if step == '1'`, `if step == '2'`, `if step == '3'`). Pokud budeš měnit UI, uprav tyto bloky.
|
||||
- Výstupní soubor se ukládá s "safe" jménem: povolena písmena, čísla a `. _ -` a mezera.
|
||||
- Barvy pro OpenPyXL: v kódu se převádějí na AARRGGBB pomocí `'FF' + raw_color.lstrip('#')`.
|
||||
- Parsování času: `normalize_time` podporuje `%H:%M` a `%H:%M:%S`.
|
||||
|
||||
## Doporučené další kroky
|
||||
|
||||
- Přidat `requirements.txt` (hotovo) s pevnými verzemi pro deterministické buildy.
|
||||
- Přesunout jádro logiky z `cgi-bin/scenar.py` do importovatelného modulu (např. `scenar_core.py`) pro snazší testování a údržbu.
|
||||
- Přidat GitHub Actions workflow, který spouští `pytest` na PR.
|
||||
|
||||
## Kontakt
|
||||
|
||||
Autor: Martin Sukaný — martin@sukany.cz
|
||||
|
||||
Reference in New Issue
Block a user