card-layouts
Wspólne źródło schematów, layoutów i generatora kart pracy używanych przez
serie edukacyjne. Jeden plik card_source.json opisuje treść oraz mapowanie
edukacyjne, a tools/render_card.py generuje z niego równolegle LaTeX i HTML.
Repozytorium rozdziela trzy warstwy:
- Treść karty —
card_source.json: cele, efekty nauczania, kryteria, drzewka marginesowe, kroki oraz zadania. - Layout —
templates/*.json: geometria strony, role marginesów, komponenty i wybór emitera TeX/HTML. - Seria —
series.json: kolejność kart, repozytoria, wersje i kontrakt uruchamiania zadań.
Zawartość
card-layouts/
├── schemas/
│ ├── card-source.schema.json
│ ├── card-template.schema.json
│ ├── reference-registry.schema.json
│ └── series.schema.json
├── templates/
│ ├── karta-klasyczna.json
│ ├── karta-5a.json
│ └── karta-5b.json
├── tools/render_card.py
├── docs/
│ ├── CARD.md
│ ├── api.md
│ └── SERIES.md
└── examples/
├── card/
└── series/
Layouty
| Layout | Przeznaczenie | Marginesy | Emitery |
|---|---|---|---|
karta-klasyczna |
elastyczna karta sekcyjna | dwa panele drzewek | TeX + HTML |
karta-5a |
wielostronicowa karta A4 landscape | TECH po lewej, OG po prawej | TeX + HTML |
karta-5b |
referencyjna karta A4 portrait | gołe drzewka TECH/OG | TeX + HTML |
karta-5b jest obecnym layoutem referencyjnym. Używa geometrii
0,55 / 2,05 / 0,55 / 14,70 / 0,55 / 2,05 / 0,55 cm; lewy margines
zawiera efekty zawodowe TECH, a prawy efekty ogólne OG.
Szybki start
Wygenerowanie przykładowej karty:
make render-example
Powstaną:
examples/card/build/tex/main.tex
examples/card/build/html/index.html
examples/card/build/html/style.css
Złożenie kontrolnego PDF-u wymaga latexmk i pakietów LaTeX używanych przez
generator:
make pdf-example
Pełna kontrola repozytorium:
make check
Walidacja względem JSON Schema jest wykonywana, gdy dostępny jest pakiet
jsonschema. Workflow Gitei pozostaje samowystarczalny i zawsze uruchamia
walidację relacji generatora; pełną walidację schematów można włączyć lokalnie:
python3 -m pip install -r requirements-dev.txt
CARD_LAYOUTS_REQUIRE_JSONSCHEMA=1 python3 scripts/check_repository.py
Generator można też wywołać bezpośrednio dla dowolnego katalogu karty:
python3 tools/render_card.py /sciezka/do/karty
python3 tools/render_card.py /sciezka/do/karty --template templates/karta-5b.json
Katalog karty musi zawierać json/card_source.json. Ścieżki wyjściowe
określa obiekt generated w tym pliku.
Model edukacyjny
Źródłem marginesów nie jest luźny tekst. Relacje są jawne:
WE (wymaganie edukacyjne)
└── EN/EK (efekt nauczania lub efekt kształcenia)
└── KW (kryterium weryfikacji)
Każda sekcja i każdy krok mogą wskazywać te same drzewka przez tree_refs.
Dzięki temu TeX i HTML pokazują identyczne powiązanie treści z efektami.
Sekcje mogą także deklarować strukturalne assets (najczęściej zrzuty ekranu
z doc/assets). Generator wstawia je do TeX/PDF i HTML, zachowuje podpis,
tekst alternatywny i stabilną etykietę oraz przygotowuje link do pełnego
obrazu w wersji ekranowej.
Szczegóły modelu karty opisuje docs/CARD.md, manifestu serii docs/SERIES.md, a wspólnego serwera aplikacji docs/api.md.
Słowniki podstaw programowych
Generator może rozszerzać skróty z zewnętrznych słowników JSON. Karta podaje ich katalog przez:
{
"dictionary_refs": {
"pp_json_root": "../../pp/json"
}
}
Brak słowników nie blokuje generowania, jeśli karta zawiera kompletne pola
display i text we własnych drzewkach.
Rejestry referencji
Wspólnej strategii, innej karty, treści ani wzoru nie kopiujemy do karty.
card_source.json przechowuje stabilne UUID-y, a generator rozwiązuje je przez
lokalny kanoniczny rejestr JSON. Widocznym hiperłączem jest kod strategii
(Mxx), nazwa karty albo etykieta treści/wzoru. Model danych i przykład są w
docs/CARD.md.
Zasada zmian
- zmiana treści należy do
card_source.json; - zmiana geometrii i stylu należy do
templates/*.jsonoraz emitera; - wygenerowanych plików nie edytujemy ręcznie;
- nowa wersja layoutu wymaga aktualizacji numeru
version, przykładu i testu obu wyjść.