Érvényesített futtatókörnyezeti hatóság közzététele¶
Ezt az útmutatót akkor használja, amikor a Cadrumo adószabály-nyilvántartását vagy annak jogi bizonyítékait módosítja. A közzététel az Agencia Estatal de Administración Tributaria (AEAT) érvényesített modelo-szabályait azzá az autoritássá alakítja, amelyet a futtatókörnyezet a számításokhoz és a bevallási exportokhoz olvas. Fejlesztési és kiadási művelet, nem adózóknak szánt aeat parancs.
A közzététel generált tartalom. Egy kis leíróból és egy tartalomcímzett SQLite-adatbázisból áll. A leíró rögzíti az adatbázis bájtszámát és lenyomatát, valamint a logikai generációt; az adatbázis kézirata és komponenssorai pedig a teljes forrás- és fordítónyugtákat és a függőségi zárványt. A leíró az egyetlen átállási él, így egy telepített folyamat egyetlen pontos generációt engedhet be, és megtarthatja egy folyamatban lévő művelethez. Egyúttal az egyetlen szállított futtatási forrás is: a telepített kód nem nyitja meg a szerkesztett nyilvántartási fát, nem elemez profil-TOML-t, és nem tart párhuzamos gyorsítótárat az onnan elemzett táblákról.
A közzététel formátumáról, a futtatási ellenőrzésekről, a hibaosztályokról és a Python alkalmazásprogramozási felületről (API) lásd Nyilvántartás, jogi források és Python API. Egy telepített parancs szokásos hibájához használja a Hibakeresés és javítás oldalt.
Közzététel¶
Olyan nyilvántartásból induljon, amelynek deklarációi és pontos jogi bizonyítékzárványa készen állnak a teljes nyilvántartási megfelelőségi ellenőrzésre.
A tároló gyökeréből futtassa:
uv run --no-sync python -m dev.registry.pipeline publish-authority
A parancs minden modelót, profildeklarációt, katalógust, tényt, exportkiosztást, valamint jogi és forrásbizonyíték-projekciót egyetlen teljes autoritássá fordít, a szerkesztési különbségeket teljes tipizált revíziókká anyagítja, a pontos bizonyítékzárványon lefuttatja a teljes nyilvántartási megfelelőséget, és tartalomcímzett SQLite-jelöltet telepít a
.authority/authority-<database_sha256>.sqlite3útvonalra. Csak azután cseréli le atomi módon a.authority/authority.current.jsonfájlt, hogy az adatbázist önállóan beengedte és bejárta. A parancs kiírja a rögzített leíró útvonalát és logikai generációját. A--registry-root,--source-root,--profile-schemaés--destinationmás bemeneteket vagy elszigetelt jelöltcélt választ. Egyéni nyilvántartási vagy forrásgyökér esetén a--profile-schemakifejezett megadása kötelező.--destinationnélkül a közzététel a beállított autoritásgyökérbe ír, és inkább elutasít, mint helyet találgatna, ha nincs beállítva. Nincs csak tényeket közzétevő parancs és nincs komponensenkénti újrahasznosítás sem: minden sikeres közzététel friss, teljes generáció. A--if-stalecsak akkor tesz közzé, ha a meglévő artefaktum már nem az élő nyilvántartást és forrásbizonyítékokat rögzíti, éspublished=skipped-currentüzenetet ír ki, ha igen. Ennek eldöntése fordítás nélkül olvassa a tartalmat, így másodpercekbe kerül ott, ahol egy közzététel perceket vesz igénybe, ezért a hozzá tartozó recept minden nyilvántartás-szerkesztés után biztonságosan futtatható:just registry-publish-authority-if-authority-stale
Az eredményt ne véglegesítse a verziókövetésben. A leíró és tartalomcímzett adatbázisa generált tartalom, a könyvtár pedig, ahová közzéteszi őket, ki van zárva a verziókövetésből: a nyilvántartás módosítása önállóan kerül véglegesítésre, és minden munkamásolat maga teszi közzé belőle a saját autoritását. Ne nevezzen át adatbázist, és ne szerkessze kézzel a leírót.
Hol lakik az autoritás¶
A közzétett autoritás generált tartalom, ezért a munkamásolat a csomagolt fán kívül, a tároló gyökerében lévő .authority/ könyvtárban tartja. Ez a könyvtár ki van zárva a verziókövetésből: a véglegesített nyilvántartásból újratermelhető, nagy, és minden nyilvántartási szerkesztéssel változik.
A CADRUMO_AUTHORITY_ROOT nevezi meg azt a könyvtárat, amelyből a program feloldja. Hogy beállítja-e, attól függ, hogyan indítja a folyamatot:
Ahogyan futtat |
A változó |
|---|---|
|
A program állítja be Önnek, az éppen használt tároló |
Az |
Ön állítja be. |
Az |
Soha nincs beállítva. Az autoritást a terjesztés hordozza. |
A beállítás szándékos, nem véletlen: a fejlesztői eszközök tudják, hol van egy tároló, a termék pedig nem. A Cadrumo futtatókörnyezete soha nem importálja a fejlesztői eszközeit, és nem keres felfelé tárológyökeret, így a telepített kódban semmi sem találhatja meg magától egy munkamásolat .authority/ könyvtárát. Ha az aeat parancsot egy munkamásolat saját autoritásával szeretné futtatni, nevezze meg a környezetben:
$env:CADRUMO_AUTHORITY_ROOT = "$PWD\.authority"
A kifejezett érték mindig győz, így egy másik autoritásfára állított kiadás-ellenőrzést soha nem írja felül a munkamásolat sajátja.
A telepített Cadrumónak egyáltalán nincs szüksége változóra. A terjesztés a leírót és a benne megnevezett pontos adatbázist a cadrumo/_data/registry/authority/ útvonalon hordozza, és a beállítás nélküli CADRUMO_AUTHORITY_ROOT oda oldódik fel.
A jelöltkönyvtár nem a futtatási hely¶
Elszigetelt csomag- vagy telepített kohorszellenőrzéshez állítsa a CADRUMO_AUTHORITY_CANDIDATE_DIR változót arra a könyvtárra, amely egy elfogadott, de még nem előléptetett jelöltet tart: a leíróját és a leíró által kiválasztott adatbázist. A csomagolási ellenőrzések csak ezt a két fájlt másolják egy privát forráspillanatképbe; a munkamásolatot soha nem módosítják, és ha a változó be van állítva, soha nem esnek vissza előléptetett párra.
Ez fejlesztési és kiadás-ellenőrzési változó. A termék üzemeltetője soha nem állítja be, és szándékosan nem része az alkalmazás konfigurációjának, ezért a környezeti hivatkozásban sem szerepel.
Nem a CADRUMO_AUTHORITY_ROOT másik írásmódja, és a kettőt nem szabad ugyanarra a könyvtárra állítani. A CADRUMO_AUTHORITY_ROOT azt nevezi meg, honnan oldja fel a termék az olvasható autoritást; a CADRUMO_AUTHORITY_CANDIDATE_DIR olyan bájtokat nevez meg, amelyeket a futtatókörnyezetnek nem szabad feloldania előléptetés előtt. A futtatási gyökeret kiadásépítés közben egy előléptetés nélküli jelöltre állítani pontosan az a félreértés, amelynek elkerülésére a második változó létezik.
A közzététel a célzárat addig tartja, amíg rögzíti a bemeneti nyugtát, érvényesíti és sorosítja a teljes komponenskészletet, előkészíti és kiírja az SQLite-bájtokat, ellenőrzi az adatbázis teljes lenyomatát, megvizsgálja a kézirat és a globális zárvány zártságát, friss olvasható jelöltet nyit, és közvetlenül a leíró lecserélése előtt újra ellenőrzi a nyugtát. Ha az érvényesítés vagy a beengedés elutasításra kerül, tartalomcímzési ütközés derül ki, vagy bármely nyilvántartási, bizonyíték-, fordító- vagy függőségi bemenet elmozdul, a parancs hibára fut, és az előző leírót bájtazonosan a helyén hagyja. Javítsa a bemenetet, majd tegye közzé újra.
A közzététel emellett kivetíti a megosztott floor, horizon és opcionális hard_ceiling támogatási keretet, valamint az IVA-szabályok, a teljesítési helyek, az országok és területek, a recargo-sávok és az apoderamiento-hatókörök típusos futásidejű katalógusait. Minden szükséges katalógust fel kell tölteni. A modelo- és adózási tartományazonosítók kódban elfogadják stabil szintaxisukat, de a tagság ehhez az érvényesített hatósághoz tartozik; a közzétett szókészletből hiányzó azonosító nem kerül be csendben.
Kiadásjelölt ellenőrzése¶
A leíró által kiválasztott SQLite-generációt közvetlenül ellenőrizze. A közzétételnek minden komponenst be kell engednie az indexelt olvasón, egyeznie kell a jelenlegi fordítónyugtával, és át kell mennie a csomagolási határellenőrzéseken. Nincs mindent betöltő JSON futtatási háttér és nincs futtatási tartalék sem.
A csomagolási ellenőrzések csak a leírót és a hozzá kiválasztott adatbázist készítik elő a privát kohorszukban. A munkamásolat által megtartott, meghaladott tartalomcímzett fájlok nem tagjai a jelöltcsomagnak.
A csak fejlesztési, páros mérés ugyanezt az elszigetelt leírót fogadja el, valamint egy kifejezett JSON-alapvonalat, amely ugyanabból az érvényesített AuthorityArtifact objektumból készült, mint a jelöltadatbázis. A fejlesztési alapvonal segédje a dev.registry.eager_authority_baseline.write_eager_authority_baseline; ezzel a pontos artefaktummal hívja meg az ellenőrzőpont-vezérlőből, és a keletkező fájlt tartsa a szállított csomagerőforrásokon kívül. A páros mérést így futtassa:
uv run --no-sync python -m dev.registry.indexed_authority_benchmark `
--descriptor <candidate>\authority.current.json `
--json-baseline <work>\authority-eager-baseline.json `
--backend both --runs 10
Az alapvonal kizárólag fejlesztési bizonyíték: a pontos, memóriában érvényesített autoritásból készül, mindent betöltve dekódolja a teljes gráfot, és a jelölt logikai identitását hordozza. A futtató mindkét oldal mérése előtt ellenőrzi a leíró pontos adatbázisbájtjait; nem olvassa a szállított csomagot, nem keres alapértelmezett JSON-fájlt, és nem válik futtatási tartalékká. Az M100, M200 és M303 munkaterhelés egymástól függetlenül kerül jelentésre; a beengedési, növekményes memória- és meleg kontextus szerinti küszöbök addig nyitva maradnak, amíg a C ellenőrzőpont le nem fut egy stabil jelöltkohorszon.
Ellenőrizze, hogy a közzététel aktuális¶
Futtassa a nyilvántartási ellenőrzést:
just check-registry
Az autoritáslépés a leírót és a benne megnevezett adatbázist csak olvasható módban engedi be. 1-es kóddal lép ki, és elutasítást ír a standard hibakimenetre, ha a kiválasztó vagy az adatbázis elavult, olvashatatlan, hibás, módosított, vagy már nem egyezik az élő jelölttel. Az elutasítás megnevezi a rögzített és az elvárt identitáslenyomatot, valamint azt a parancsot, amely újra közzéteszi az autoritást.
A forrásnyugta a fájlok tartalmától és a nyilvántartási, illetve forrásgyökérhez képest relatív útvonalaktól függ, beleértve a kézzel gondozott bizonyíték-kísérőfájlokat is. A fordítónyugta a fordítóra és a Cadrumo érintett kódjára, a pyproject.toml, uv.lock fájlra, a Python fő- és alverziójára, valamint a telepített pydantic és pydantic-core verziókra terjed ki. Ugyanabban a deklarált környezetben egy friss klón stabil; összeférhetetlen értelmező, függőségkészlet, kézirat vagy fordítóváltozás elavulttá teszi a közzétételt, és újbóli közzétételt kíván. A komponensnyugta ezeket a forrás- és fordítónyugtákat a teljes autoritás egyetlen generációjához köti. Az adatbázis lenyomata önállóan védi az összes tárolt komponensbájtot, miközben minden igény szerinti komponensbetöltés a saját tartalomlenyomatát és függőségi zárványát is ellenőrzi.
Érvénytelen hatóság helyreállítása¶
Ha egy telepített munkafolyamat elérhetetlen, hibás, módosított vagy olvashatatlan autoritást utasít el, állítsa le a munkafolyamatot. Az IndexedRegistryAuthority.operation() út kizárólag artefaktumból dolgozik: nem fordít szerkesztési forrásokat, nem elemez nyers TOML-t, nem javít adatbázist, és nem esik vissza a visszavont JSON-keretre. A futtatókörnyezet a tipizált komponenseket igény szerint, a generációhoz szögezett műveleten keresztül tölti be, és csak határolt, generációra szűkített értékeket tart; a leíró lecserélése új autoritásgenerációt indít, miközben a meglévő műveletek megtartják a beengedett olvasójukat.
Windowson a közzététel csak akkor töröl korábbi tartalomcímzett adatbázist, ha kizárólagos leírót tud szerezni rá, így egy folyamatban lévő olvasó a takarítást egy későbbi közzétételre tolja. POSIX rendszereken a közzététel megtartja a meghaladott adatbázisfájlokat: ott egy megnyitott fájl leválasztása sikerül, és nem ad biztonságos, folyamatok közti bérletjelzést. A változtathatatlan fájlnév megakadályozza, hogy a megtartott bájtokat a jelenlegi leíró válassza ki.
Tartsa meg a hibás leíró/adatbázis párt, ha van, a csomagverzióval, a logikai és fizikai lenyomatokkal, a hibaosztállyal és a névtelenített naplókkal együtt.
Tegye közzé újra egy érvényesített nyilvántartásból, majd erősítse meg, hogy a
just check-registrysikeresen lefut.Építse újra a csomagot, hogy a csereleírót és a benne megnevezett pontos adatbázist tartalmazza. A csomag nem tartalmazhatja a szerkesztett nyilvántartást, a profilséma-TOML-t vagy a visszavont JSON-keretet.
Eszkalálja az esetet a projekt hibakövetőjén a kiadásverzióval, az autoritáslenyomatokkal, a hibaosztállyal és a névtelenített naplókörnyezettel. Adózói adatot soha ne csatoljon.