Generovaná referenční dokumentace struktury aplikace
Replikátor vytváří společný balík čitelné Markdown dokumentace a strojových indexů dokumentových typů, oblastí a prvků. Slouží jako reference výsledné struktury aplikace pro vývojáře i agenty: podle systémové cesty nebo XDS ID lze dohledat konkrétní segment, jeho popis a všechna nalezená databázová pole.
Tato stránka popisuje implementovaný formát balíku format_version: 1.
Zdrojem je výsledná struktura role 1, včetně jejích úprav. Reference proto
vyjadřuje pohled této role; pro ověření jiné role je nutné použít její definice.
Balík obsahuje definice, nikoli záznamy dokumentů uložené v databázi.
Nastavení a vznik balíku
Jediným nastavením je Kořenová složka dokumentace aplikace v B-1 Složky replikátoru. Příklad hodnoty:
C:\flexideo\aplikace\moje-aplikace\DEV\dokumentace
Podsložka fdt se do nastavení nepřidává. Replikátor sám vytváří obsah a
podsložky níže. Prázdná hodnota vypíná generování i distribuci.
| Konfigurace | Cesta k hodnotě |
|---|---|
| Aplikační nastavení | /application_settings/basic/replicator-folders/documentation-folder |
| Konfigurace připravené verze | /ConfigVer/folders/documentation-folder |
Při přípravě verze se hodnota z aplikace převezme do konfigurace verze. Dodatečná změna aplikace sama nezmění konfiguraci již připravené verze.
Balík vzniká ve fázi tvorby stránek,
po finálním uložení XDS role 1. Vstupy jsou její aktuální role.xds a
role.dad. Při light-update již obsahují sloučené změny a nezměněné typy;
zrušené definice jsou odstraněné. Sestavuje se vždy celá aktuální reference,
ale při rozdílovém běhu se Markdowny mohou převzít bez nové transformace.
Historické history.xds a history.dad se nepoužívají, protože obsahují také
zrušené definice. Zdrojem není ani complete.xds.
Přípravný balík se uloží do documentation/ ve složce verze. Plná instalace
jej přenese do nastaveného kořene dokumentace, také při light-update.
Výstup je nezávislý na instalačním adresáři web/ a neleží ve složce roles/.
Samotné opakování instalace chybějící balík nevygeneruje: musí mu předcházet
tvorba stránek zahrnující roli 1. Samostatná tvorba jiné role referenci neobnoví.
Režim instalace jediné role dokumentační balík nedistribuuje.
Chyba generování nebo distribuce brání dokončení příslušné fáze.
Po úspěšné instalaci včetně závěrečného překopírování souborů (ReCopyFiles)
se odstraní manifestem vlastněné přípravné soubory ve složce verze.
Instalovaná dokumentace v nastaveném kořeni zůstává.
Rozdílová tvorba Markdownů
Výběr vychází ze stejné CblvCrpSingleRole.UpdateCondition jako ostatní tvorba
role. Při rozdílové replikaci je to [@updating]. Při úplné obnově role,
včetně nové nebo změněné role, je podmínka prázdná a transformují se všechny typy.
V rozdílovém režimu se vybrané typy přegenerují. Markdown nevybraného typu se
převezme z ověřené předchozí sady stejné aplikace, pokud se shoduje otisk
šablony a vstupů tohoto typu včetně skupiny a DAD vazeb. Nové, chybějící nebo
změněné nevybrané typy se dogenerují. Změna celé šablony zneplatní převzetí.
Dočasný příznak updating a verze celého balíku samy tento otisk nemění.
Základ se hledá nejprve v přípravné složce aktuální verze, potom v místním dokumentačním kořeni. Chybějící, poškozená či cizí sada se nepřebírá. Starší manifest bez nových ověřovacích otisků je nadále čitelný, ale při prvním běhu se dokumentace vytvoří celá; další rozdílové běhy již mohou typy přebírat. FTP/HTTP nemají zpětné čtení balíku, takže bez dostupného místního základu zůstává úplné generování. Žádné další nastavení se nezadává.
Indexy a manifest se vždy znovu sestaví pro všechny aktuální typy. Přípravný balík je proto úplný a obsahuje také převzaté Markdowny. Počty nově vytvořených a převzatých typů uvádí replikační log i manifest. Místní instalace obsahově stejné soubory nepřepisuje, a zachovává tak jejich čas změny.
Převzatý Markdown zůstává bajtově stejný včetně položky Verze, která označuje
jeho poslední vytvoření. Aktuální verzi celé reference určuje
manifest.application_version; záznamy indexu rovněž nesou aktuální verzi.
Původ každého Markdownu lze dohledat v manifest.documents.
Adresáře a soubory
dokumentace/ # nastavený kořen
index.md
manifest.json
fdt/
index.md
uzivatel.md
...
indexes/
fdt/
segments.jsonl
by-xds-id.json
| Cesta od kořene | Obsah a použití |
|---|---|
index.md | Vstupní rozcestník; aplikace, verze, role a odkazy na FDT a indexy. |
manifest.json | Identita a formát balíku, zdrojové otisky, počty, vlastněné soubory a jejich kontrolní součty. |
fdt/index.md | Seznam dokumentových typů seřazený podle systémového názvu. |
fdt/<name>.md | Jeden soubor pro každý výsledný dokumentový typ včetně jeho oblastí a prvků. Jméno vychází z <name> kmene dokumentu. |
indexes/fdt/segments.jsonl | Úplný strojový seznam segmentů a DAD vazeb; jeden JSON objekt na fyzický řádek. |
indexes/fdt/by-xds-id.json | Přímé dohledání všech výskytů přesného XDS ID a jejich odkazů do Markdownu. |
Pro N dokumentových typů vzniká N + 5 souborů. Všechny jsou UTF-8 bez BOM.
Cesty uložené v indexech a manifestu jsou relativní vůči kořeni dokumentace a
používají /. Odkazy uvnitř fdt/index.md jsou relativní vůči složce fdt.
Obsah je při stejných vstupech a stejném předchozím základu deterministický;
manifest neobsahuje čas generování.
Kořen a indexes/ umožňují pozdější rozšíření o další druhy dokumentace.
V popsaném formátu je implementována větev FDT; další výstupy se tímto nastavením
automaticky nezavádějí.
Identita segmentu a nadpisy
Základní referencí je úplná systémová cesta, například
uzivatel/x_common/label. Skládá se z <name> dokumentového typu a @name
oblastí a prvků v pořadí zanoření. Popisek label je samostatná čitelná vlastnost.
Změna popisku tedy nemění systémovou cestu; přejmenování nebo přesun segmentu ji mění.
Kmen dokumentu používá nadpis první úrovně. Přímí potomci mají druhou úroveň, jejich potomci třetí atd., nejvýše šestou. U hlubších struktur zůstává úplná cesta v nadpisu, i když se úroveň již nezvyšuje. Nadpisy nemají číslování ani prefixy „Oblast“ a „Prvek“ a nevkládá se mezilehlý nadpis „Struktura“.
Každému segmentu předchází explicitní kotva podle XDS ID:
<a id="xds-10101127"></a>
### uzivatel/osoba/prijmeni
- Popisek: Příjmení
- Druh segmentu: prvek
- Název: `prijmeni`
- ID: `10101127`
- Zkratka: `prjm`
- Datový typ: `varc(150)`
- Typ kolony: `txf(40,false,false)`
- Zdroj: `own::`
Ukázka je zkrácená. DAD údaje, podmínky a textové popisy se doplní podle definice.
Odkaz na tento segment má tvar fdt/uzivatel.md#xds-10101127.
Při odkazování používejte kotvu z indexu; automaticky odvozený slug nadpisu
závisí na Markdown prohlížeči.
XDS ID je ve všech indexech řetězec. Osmimístné ID se hledá celé a přesně,
včetně případných počátečních nul. U dokumentu pochází z <id>, u oblasti a
prvku z @id. Generátor vyžaduje neprázdné číslice; pevnou délku osmi znaků
samostatně nevynucuje. Stejné ID v různých dokumentech může mít více odkazů,
proto se při hledání zohledňuje také systémová cesta.
Generování skončí chybou při chybějícím či nenumerickém ID, duplicitním ID
uvnitř jednoho dokumentu nebo duplicitní systémové cestě. Názvy segmentů musí
být neprázdné a nesmějí obsahovat /. Jméno dokumentového typu musí být platným
jménem souboru ve Windows; index je rezervované a kolize názvů souborů se
neřeší tichým přejmenováním.
Vlastnosti v Markdownu
Výpis obsahuje vybrané vlastnosti výsledné definice, nikoli úplnou serializaci XDS.
| Údaj | Zdroj a pravidlo |
|---|---|
| Popisek | <label> dokumentu nebo @label potomka. |
| Název | <name> dokumentu nebo @name potomka. |
| Aplikace, Verze, Role | U kmene dokumentu identifikují kontext jeho posledního vytvoření. Role je 1; aktuální verzi celé reference určuje manifest. |
| Skupina | Popisek definiční skupiny dokumentu. |
| Druh | U dokumentu rozlišuje dokumentový typ, pohled s cílovým typem a pseudo-typ. |
| Druh segmentu | U potomků rozlišuje oblast a prvek. |
| ID, Zkratka | XDS identifikátor a systémová zkratka. |
| Datový typ | @d-type prvku. |
| Typ kolony | @f-type prvku. |
| Povinnost | Jen pro @required="true" prvku; vypisuje se true. Při false nebo chybějícím atributu se položka vynechá. |
| Výchozí hodnota | Přítomné @initial prvku, kromě klíčového slova null. Hodnoty 0 a false se zachovávají, explicitní prázdný řetězec se zapisuje jako "". |
| Nullable | Jen pokud vlastnost @data prvku obsahuje část nullable:true; vypisuje se true. nullable:false a chybějící část se neuvádějí. |
| Opakovatelnost | @repeat, pokud existuje a není none. |
| Zdroj | Neprázdné @source, včetně případného výrazu za count::. |
| Přístup | @access, pokud existuje a liší se od editable. |
| Podmínka zobrazení | @appear-if, po zpracování pravidel níže. |
| Podmínka editace | @edit-if, po zpracování pravidel níže. |
secrecy-lev, section | U kmene přítomné hodnoty; u potomků jen změny proti nejbližšímu předku s danou vlastností. |
| Nápověda | Neprázdné descr nebo @descr bez výchozích textů. |
| Dokumentace | Neprázdné documentation nebo @documentation. |
| Možné hodnoty | Tabulka hodnot a popisů z select/option u prvku. |
| DAD odkazy a pole | Zdrojové odkazy a všechny dohledané vazby popsané níže. |
Popisky položek seznamu nejsou tučné; technické hodnoty se zapisují jako inline kód. Samostatné textové bloky mají označení Nápověda: a Dokumentace:.
Například pro prvek s required="true", initial="Nový kontakt" a částí
nullable:true v data vzniknou položky:
- Povinnost: `true`
- Výchozí hodnota: `Nový kontakt`
- Nullable: `true`
Při rozhodování o vynechání výchozího null se ignorují okolní mezery
a velikost písmen. Ostatní výchozí hodnoty se vypisují v původním znění.
U nápovědy se ignorují výchozí hodnoty - nepopsáno -, - nepopsano -,
[no description] a - no description -. Při porovnání se normalizují mezery
a velikost písmen ASCII. Vlastní text nápovědy se vypíše v původním znění.
Prázdné podmínky, none a ~kwnone se nevypisují pro appear-if ani edit-if.
Rozpoznané výrazy v interním zápisu s ~ se před transformací převedou na
obecnou čitelnou syntaxi stejnou funkcí jako v dialogu rozpoznávání výrazů
(CReplicUtilities.TranslateExpress(..., True)). U zdroje count::~... se
zachová prefix count:: a převede se jeho výrazová část. Speciální podmínky
~kwinput a ~kwoutput mají čitelný zápis input a output.
Již obecně zapsané výrazy se nepřekládají znovu. Úpravy probíhají na kopii XML;
export nepřepisuje zdrojové XDS.
Nevypsaná hodnota secrecy-lev nebo section u potomka se pro čtení reference
přebírá od nejbližšího předka, který ji uvádí. Vynechání ostatních vlastností
v Markdownu samo o sobě neurčuje jejich výchozí význam v XDS.
Index segmentů: segments.jsonl
Soubor obsahuje jeden objekt pro každý kmen dokumentu, oblast a prvek. Dokumentové typy jsou řazené podle systémového názvu, jejich segmenty v pořadí zdrojové struktury. Každý záznam opakuje aplikaci, verzi a roli, aby byl interpretovatelný i při samostatném zpracování.
| Klíč | JSON typ | Význam |
|---|---|---|
application | string | Název aplikace doplněný projektovým klíčem v závorkách. |
application_version | string | Úplný kód verze aplikace. |
role_id | string | V tomto formátu vždy "1". |
xds_id | string | Přesné XDS ID segmentu. |
path | string | Úplná systémová cesta segmentu. |
parent_path | string | Cesta rodiče; pro kmen dokumentu prázdný řetězec. |
kind | string | Přesný název XDS uzlu: DocumentDef, area nebo element. |
name | string | Systémový název samotného segmentu. |
label | string | Jeho čitelný popisek. |
markdown_file | string | Relativní cesta k souboru, například fdt/uzivatel.md. |
anchor | string | Explicitní kotva bez #, například xds-10101127. |
dad_references | object | Přítomné zdrojové DAD atributy segmentu. |
dad_bindings | array of objects | Všechna dohledaná databázová pole; bez vazeb prázdné pole. |
Následující objekt je pro čitelnost rozepsaný. Ve skutečném JSONL je celý na jednom fyzickém řádku:
{
"application": "Ukázková aplikace (123)",
"application_version": "15-00-05",
"role_id": "1",
"xds_id": "10101127",
"path": "uzivatel/osoba/prijmeni",
"parent_path": "uzivatel/osoba",
"kind": "element",
"name": "prijmeni",
"label": "Příjmení",
"markdown_file": "fdt/uzivatel.md",
"anchor": "xds-10101127",
"dad_references": {
"dad-id": "100001",
"dad-path": "/100000/100001/e10101127"
},
"dad_bindings": [
{
"kind": "value",
"document": "uzivatel",
"dad_id": "100001",
"array_path": "/100000/100001",
"dad_path": "/100000/100001/e10101127",
"field_name": "prjm",
"field_path": "/100000/100001/prjm",
"data_type": "varc(150)"
}
]
}
Index slouží k vyhledání a mapování. Nápovědu, dokumentaci, podmínky a další vlastnosti uvedené ve výpisu čtěte z odkazované sekce Markdownu.
Přímý index: by-xds-id.json
Kořenem je JSON objekt. Klíč je přesné XDS ID, jeho hodnota je vždy seznam odkazů, i pokud existuje jediný výskyt:
{
"10101127": [
{
"path": "uzivatel/osoba/prijmeni",
"markdown_file": "fdt/uzivatel.md",
"anchor": "xds-10101127"
}
]
}
Klíče jsou seřazené jako řetězce. Chybějící klíč znamená, že dané ID v aktuální
referenci není. Více odkazů se rozliší podle path; první výskyt se nesmí
automaticky považovat za jediný správný. URL se složí jako
markdown_file + "#" + anchor.
DAD odkazy a více databázových polí
dad_references zachovává pouze přítomné zdrojové atributy se stejným názvem:
dad-id, dad-path, pdk-dad-path, psk-dad-path, key-dad-path a
foreign-dad-path. Nevyplňuje chybějící atributy odhadem. V Markdownu se stejné
atributy vypisují jako samostatné položky.
dad_bindings doplňuje skutečně dohledaná pole z role.dad. Jeden segment
může mít více vazeb, včetně klíčových a pomocných polí. V Markdownu tvoří tabulku
„DAD pole“; v JSON zůstává každá vazba samostatným objektem.
| Klíč vazby | Význam |
|---|---|
kind | Způsob vazby: value, key, file-size nebo change-flag. |
document | Název dokumentu v DAD. |
dad_id | ID DAD array obsahujícího pole; jde o jiný identifikátor než XDS ID segmentu. |
array_path | Cesta přes ID uzlů array, například /100000/100001; hierarchie vychází z key-prev. |
dad_path | Logická Flexideo DAD cesta, pokud je pro danou vazbu doložená. |
field_name | Fyzický název pole z DAD. |
field_path | Přesné fyzické umístění: array_path + "/" + field_name. |
data_type | Datový typ @d-type příslušného DAD pole. |
Všechny hodnoty objektu vazby jsou řetězce. Vazby se určují takto:
| Druh | Vazba ve zdrojovém DAD | Logická cesta |
|---|---|---|
value | Neprázdné, nenulové field/@xds-id odpovídá XDS ID. | array_path + "/e" + XDS ID |
key | Neprázdné, nenulové field/@xjoin odpovídá XDS ID. | array_path + "/f" + XDS ID; při lex-key="true" se místo f použije k. |
file-size | Pole má xds-id="0", vazbu přes nenulové @join a název končí _size. | Prázdný řetězec; použije se fyzická cesta. |
change-flag | Pole má xds-id="0", vazbu přes nenulové @join a název končí _chng. | Prázdný řetězec; použije se fyzická cesta. |
Fyzická field_path není logický dad-path. U pomocných polí se proto logická
cesta nevymýšlí. Chybějící rodič DAD array nebo cyklus v key-prev ukončí
generování chybou. Prázdné dad_bindings znamená, že touto vazbou nebylo pole
dohledáno; samo o sobě nedokazuje, že segment nemá žádný jiný způsob uložení.
Pro vyhledání DAD array nebo fyzického pole se filtruje segments.jsonl podle
dad_references a dad_bindings. Samostatný index podle DAD ID tento formát
nevytváří.
Manifest a kontrolní součty
manifest.json je JSON objekt s následujícími položkami:
| Klíč | JSON typ | Obsah |
|---|---|---|
format_version | number | Verze kontraktu balíku, nyní 1. |
application | string | Název aplikace a projektový klíč, stejně jako v indexu segmentů. |
application_version | string | Verze aplikace. |
role_id | string | "1". |
xds_source | string | "role.xds". |
dad_source | string | "role.dad". |
xds_sha256 | string | SHA-256 textové serializace vstupního XDS DOMu. |
dad_sha256 | string | SHA-256 textové serializace vstupního DAD DOMu. |
document_count | number | Počet exportovaných dokumentových typů. |
segment_count | number | Počet všech záznamů v segments.jsonl, včetně kmenů dokumentů. |
owned_files | array of strings | Úplný seřazený seznam souborů vlastněných touto sadou, včetně manifest.json. |
sha256 | object | Relativní cesta → SHA-256 obsahu souboru; zahrnuje všechny vlastněné soubory kromě manifestu. |
template_sha256 | string | Otisk XSL šablony použitý pro ověření převzatých dokumentů. |
documents | object | Relativní cesta Markdownu → objekt s input_sha256 a application_version jeho posledního vytvoření. |
generated_document_count | number | Počet typů transformovaných při tomto sestavení balíku. |
reused_document_count | number | Počet typů převzatých bez nové transformace. Součet obou počtů odpovídá document_count. |
Poslední čtyři položky jsou doplňkovým rozšířením formátu 1 pro rozdílovou tvorbu.
Starší balíky je nemají a vyžadují jednorázové úplné vytvoření před prvním
převzetím. V documents je jeden záznam pro každý dokumentový Markdown,
například tento schematický výřez (otisk je zde zkrácený):
{
"fdt/uzivatel.md": {
"input_sha256": "...",
"application_version": "15-00-04"
}
}
input_sha256 otiskuje vstupy typu včetně DAD mapování. Vynechává verzi celého
balíku a přechodné atributy updating. Nejde o otisk Markdownu; jeho skutečný
obsah nadále kontroluje položka sha256. Verze v tomto záznamu může být starší
než application_version celého manifestu, pokud se nezměněný typ přebírá.
Otisky jsou hexadecimální řetězce o 64 znacích s malými písmeny. Počítají se z UTF-8 bez BOM. U zdrojových otisků jde o serializaci XML v paměti, takže se nemusí rovnat otisku původních bajtů souboru na disku. Manifest neobsahuje vlastní kontrolní součet. Kontrolní součty ověřují integritu sady; nejsou elektronickým podpisem.
Povinnými soubory jsou index.md, manifest.json, fdt/index.md a oba strojové
indexy. Každý exportovaný typ doplňuje vlastní fdt/<name>.md. Při čtení
Replikátor kontroluje podporovaný formát, roli, přítomnost souborů, seznamy
a souhlas kontrolních součtů. Instalace navíc porovnává aplikaci a verzi
manifestu s aktivní konfigurací.
Zápis, aktualizace a distribuce
Před zápisem se ověřuje celý příchozí balík i jeho relativní cesty. Povolené
jsou jen výše uvedené pevné cesty a fdt/<jediné jméno souboru>.md.
Absolutní cesty, zpětná lomítka a úniky přes .. se nepřijímají.
Manifest se zapisuje poslední. Nejde však o atomickou výměnu celého adresáře: během distribuce může být krátce dostupná kombinace starých a nových souborů. Čtenář proto nejprve ověří manifest a kontrolní součty; při nesouladu sadu nepoužije a čtení zopakuje po dokončení zápisu.
| Cíl | Způsob distribuce a úklidu |
|---|---|
| Místní nebo síťová disková složka | Přenese se úplná sada, ale bajtově stejné soubory se nezapisují znovu. Zastaralé soubory se odstraňují pouze podle předchozího manifestu. |
| FTP | Stávající textový transport Replikátoru; manifest poslední. Starší vzdálené soubory se nemažou. |
| HTTP | Stávající Flexideo transport pro předání souborů, pokud jej protistrana podporuje; manifest poslední. Starší vzdálené soubory se nemažou. |
s3:// | Tento dokumentační výstup jej zatím nepodporuje. |
Aktuální rozsah vždy určuje nový manifest a indexy. Výskyt starého souboru mimo manifest neznamená, že typ v aktuální verzi existuje. Neznámé soubory mimo rezervované výstupní cesty se zachovávají; kořen dokumentace se nemaže rekurzivně. Vlastní ručně psané soubory ukládejte mimo rezervované cesty generátoru.
Doporučený postup pro agenta nebo jiného konzumenta
- Načíst
manifest.json; ověřitformat_version, očekávanou aplikaci,application_versionarole_id. - Ověřit povinné soubory, bezpečné relativní cesty a SHA-256 všech souborů
uvedených v
sha256. Zpracovávat pouze soubory aktuálníhoowned_files. - Při známém XDS ID vyhledat jeho přesný řetězec v
by-xds-id.jsona případné vícečetné výsledky rozlišit podle systémové cesty. - Při známé cestě, názvu nebo DAD vazbě vyhledat odpovídající záznamy v
segments.jsonl; strom lze sestavit pomocíparent_path. - Otevřít
markdown_filea sekci s příslušnou explicitní kotvou. Pro strukturu podstromu použít index; pouhé hledání dalšího nadpisu stejné úrovně není spolehlivé při zanoření hlubším než šest úrovní. - Ve výsledku uvést aplikaci, verzi, roli, systémovou cestu a XDS ID spolu s odkazem na konkrétní soubor a kotvu. Aktuální verzi brát z manifestu; starší verze uvnitř převzatého Markdownu je jeho původ, nikoli neaktuálnost reference.
Příklad přesného vyhledání ID v Pythonu po ověření integrity balíku:
import json
from pathlib import Path
root = Path(r"C:\flexideo\aplikace\moje-aplikace\DEV\dokumentace")
lookup = json.loads(
(root / "indexes/fdt/by-xds-id.json").read_text(encoding="utf-8")
)
xds_id = "10101127" # Zachovat jako řetězec, včetně počátečních nul.
for hit in lookup.get(xds_id, []):
print(hit["path"], hit["markdown_file"] + "#" + hit["anchor"])
Diagnostika chybějícího nebo neaktuálního výstupu
| Projev | Co ověřit |
|---|---|
| Nevznikl žádný Markdown | Neprázdné nastavení v konfiguraci konkrétní verze, dokončenou tvorbu stránek role 1 a dostupnost šablony. Samotná kompletace ani opakovaná instalace balík nevytvoří. |
Soubory nejsou v roles/ ani web/ | Přípravný výstup je ve documentation/ verze; instalovaný výstup v nastaveném kořeni dokumentace. |
| Výstup je v jiné složce | Porovnat aplikační nastavení se snapshotem ConfigVer/folders/documentation-folder. Hodnota je kořen, bez koncového fdt. |
| Přípravná složka je po instalaci prázdná | Po úspěšné instalaci se vlastněné přípravné soubory uklízejí. Zkontrolovat cílový kořen. |
| Typ nebo ID není v indexu | Ověřit aktuální roli 1, verzi manifestu, přesný řetězec ID a případné odstranění definice. Historické definice se do reference nevracejí. |
| V cíli zůstává starý soubor | Rozhoduje aktuální owned_files. Vzdálený transport staré soubory neodstraňuje; na disku lze uklízet jen soubory známé předchozímu manifestu. |
| Nesouhlasí kontrolní součty | Vyčkat na dokončení distribuce a čtení opakovat; při trvalém nesouladu znovu vytvořit a distribuovat celý balík. |
Chybí logický dad_path pomocného pole | U file-size a change-flag je prázdná hodnota očekávaná; přesné pole určuje field_path. |
| I v rozdílovém režimu se tvoří všechny Markdowny | Ověřit úplnou obnovu role, přítomnost moderního místního základu, jeho integritu, aplikaci a otisk šablony. První běh po starším formátu je úplný. |
| V převzatém Markdownu je starší verze | Očekávaný původ posledního vytvoření. Aktuální snapshot určuje manifest a index; původ souboru uvádí documents. |
Implementační zdroje a ověření
Kontrakt je popsán v doménové dokumentaci Replikátoru
docs/agent-context/fdt-reference-package.md a v ADR-0045, který nahrazuje
úplnou regeneraci z ADR-0044 selektivní tvorbou Markdownů při zachování celého balíku.
Implementaci tvoří:
product/CblvCmpFdtDocumentation.vb: příprava snapshotu, tvorba Markdownu a indexů, DAD mapování, manifest, validace, zápis a úklid balíku.product/CblvCrpMaster.vb: zařazení generování po finálním uložení role 1.product/CDatInstall.vb: přenos balíku do nastaveného kořene a úklid přípravy.product/CdatTXT.vb: textový transport typudocumentation-artifact.make-fdt-markdown.xslv systémové pracovní složce Replikátoru: podoba Markdownu; zdrojová verze je v repozitářiFlexideo-replicator-work-folder.
Regresní scénáře v toolkit/development/fdt-markdown/ ověřují transformaci,
indexy, vícečetné DAD vazby, identitu, integritu, lokální aktualizaci a úklid
nad syntetickými daty pro GUI i Headless sestavení. Pokrývají také update filtr,
převzetí nezměněných typů, doplnění chybějících, změnu DAD/šablony, neplatný
základ a zachování času nezměněného souboru. Lokální souborové scénáře
vyžadují přepínač -AllowLocalWrites a používají vlastní dočasnou složku.
Tyto testy nespouštějí replikaci skutečné aplikace ani uzavření verze.
FTP a HTTP používají existující transport; nová integrační zkouška jejich
distribuce není součástí ověření tohoto balíku.