Files
Rozpisky/CLAUDE.md
T
marekandClaude Opus 5 f086e623d6 Oprava: úprava dodávané položky číselníku se tiše ztrácela
Nacti() uložilo dodávanou vrstvu do referenčního snímku _vychozi a tytéž
objekty vložilo do kolekcí, na které se váže mřížka. Úprava buňky tak
mutovala i ten snímek – UlozRozdil pak porovnával stav sám se sebou, rozdíl
vyšel prázdný a oprava dodávané položky zmizela. Mazání a přidávání přitom
fungovalo (tam se reference nesdílí), takže se chyba dobře schovala.

Sluc nově vkládá dodávané položky jako hluboké kopie (serializací, stejně
jako klonování přílohy), takže snímek zůstane netknutý.

Nahlášeno na přejmenování kraje Karlovarský – přesně ten scénář teď hlídají
dva regresní testy; bez opravy oba padají.

Build 0 chyb / 0 varování, 57 testů zelených.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 11:26:10 +02:00

4.3 KiB

Rozpisky — pokyny pro Claude Code

WPF desktopová aplikace (.NET 10, net10.0-windows, AnyCPU) — generátor výkresových rohových razítek („rozpisek") pro Správu železnic. Náhrada původního excelového nástroje „Rozpisky 1.0.8".

Příkazy

dotnet build "Rozpisky.sln" -nologo -v q -clp:ErrorsOnly
dotnet test  "Rozpisky.Tests\Rozpisky.Tests.csproj" -nologo -v q
dotnet run   --project "Rozpisky\Rozpisky.csproj"

Baseline: build bez chyb a varování, 57 testů zelených. Před hlášením hotovo obojí spustit (nebo použít /overit).

Architektura — jediné pravidlo, které se nesmí porušit

Veškerá kresba jde přes jedno rozhraní IProfileRenderer. Tatáž kresba teče na obrazovku, do PNG, do PDF i do DXF. Nový výstupní formát = nová implementace IProfileRenderer, nikdy nový kreslicí kód. Čtečka DxfTemplate jen čte DXF šablonu a „přehrává" ji do tohoto rozhraní.

Podrobnosti (vrstvy, NuGet API, pravidla zápisu DXF) — ROZPISKY.md. Nečíst celý, jen relevantní kapitolu.

Konvence

  • Kód, komentáře, commity i názvy typů jsou česky (BoundsTesty, PlaceholderHladiny, NajdiKoren). Držet se toho, nepřejmenovávat do angličtiny.
  • MVVM bez frameworku: znovupoužít RelayCommand a ObservableObject — nepsat vlastní ani nepřidávat NuGet (CommunityToolkit apod.).
  • XAML: barvy a rozměry jen z Rozpisky/Themes/Colors.Dark.xaml a Metrics.xaml (WPF-DarkTheme-Kit). Žádné hardcoded #RRGGBB ani natvrdo zadané odsazení.
  • Nullable a ImplicitUsings jsou zapnuté v obou projektech.
  • COM (CAD, MS Excel) jde přes pozdní vazbu (dynamic) — nepřidávat interop assembly.
  • Uživatelská data (číselníky, výběr CADu, logy) jdou přes UzivatelskaData do %APPDATA%\Rozpisky. Do složky u .exe se nezapisuje — může být jen pro čtení a přeinstalace ji přepíše. Číselníky navíc žijí ve dvou vrstvách (CiselnikyStore) a loga ve dvou složkách (LogaResolver): dodávané + uživatelské navrch. Při konfliktu vyhrává uživatelská vrstva — jinak by se jeho úprava tiše neprojevila. Výjimka jsou data, která drží správnost výstupu (mapovani.json, Rozpiska.dxf) — tam vyhrává program. Změnu slučování vždy pokrýt testem: chyba tam se projeví tichou ztrátou dat.

Rozvržení složky — tři druhy podkladů

Kde Co to je
docs/ Podklady jen pro tvorbu programu — architektura, datový model, normativní manuál SŽ v .md. Nedodává se uživateli.
Rozpisky/Podklady/ Podklady nutné k běhu — kopírují se vedle .exe (plochá struktura + loga\, řídí Link v .csproj). Aplikace je jen čte.
%APPDATA%\Rozpisky Podklady vznikající za běhu — vše, co píše uživatel. V repu nejsou a nemají tam co dělat.
vzorky/ Cizí vstupy pro ruční zkoušení (schema.dxf). Nedodává se.

Nové dodávané datum = do Rozpisky/Podklady/ a řádek v .csproj s Link, ať výstup zůstane plochý. Nový zapisovaný soubor = přes UzivatelskaData.Cesta(...), nikdy AppContext.BaseDirectory.

Kam nesahat

  • Rozpisky/Podklady/Rozpiska.dxf, vzorky/schema.dxf — produkční DXF šablony.
  • Rozpisky/Podklady/loga/*.dxf — dodávaná loga (9 ks, testy je renderují).
  • Rozpisky/Podklady/SEZNAM.xlsx — mustr „Seznam příloh".
  • docs/SZ_SM011_P10_Manual_v6.md, Rozpisky/Podklady/SZ_SM011_P10_Manual_v6.pdf — normativní podklad SŽ, jen ke čtení.

Delegování

Specializovaní subagenti v .claude/agents/: render-dxf (Rendering/, Dxf/), wpf-ui (ViewModels/, Views/, Themes/), verifikator (read-only build + testy). Pro úkol spadající celý do jedné z těchto domén je použít; drobnosti napříč vrstvami řešit v hlavním vlákně.

Další dokumentace

ROZHRANI.md — obrazovky, pole a datový model. PODKLAD_CAD_Layout_Tisk.md — CAD, layouty a tisk přes COM.