É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

  1. 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.

  2. 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.json fá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 --destination más bemeneteket vagy elszigetelt jelöltcélt választ. Egyéni nyilvántartási vagy forrásgyökér esetén a --profile-schema kifejezett megadása kötelező. --destination né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-stale csak 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, és published=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
    
  3. 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ó

just receptek, python -m dev.*, pytest

A program állítja be Önnek, az éppen használt tároló .authority/ könyvtárára.

Az aeat parancs munkamásolatból

Ön állítja be.

Az aeat parancs telepített Cadrumóból

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.

  1. 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.

  2. Tegye közzé újra egy érvényesített nyilvántartásból, majd erősítse meg, hogy a just check-registry sikeresen lefut.

  3. É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.