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>
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
RelayCommandaObservableObject— nepsat vlastní ani nepřidávat NuGet (CommunityToolkit apod.). - XAML: barvy a rozměry jen z
Rozpisky/Themes/Colors.Dark.xamlaMetrics.xaml(WPF-DarkTheme-Kit). Žádné hardcoded#RRGGBBani natvrdo zadané odsazení. NullableaImplicitUsingsjsou 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
UzivatelskaDatado%APPDATA%\Rozpisky. Do složky u.exese 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.