538 lines
17 KiB
XML
538 lines
17 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<svg
|
|
width="1600"
|
|
height="900"
|
|
viewBox="0 0 1600 900"
|
|
version="1.1"
|
|
id="svg57"
|
|
sodipodi:docname="archicratie-web-edition-global-verbatim-v2.svg"
|
|
inkscape:version="1.3-alpha (95f74fb, 2023-03-31)"
|
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
xmlns:svg="http://www.w3.org/2000/svg">
|
|
<sodipodi:namedview
|
|
id="namedview57"
|
|
pagecolor="#ffffff"
|
|
bordercolor="#000000"
|
|
borderopacity="0.25"
|
|
inkscape:showpageshadow="2"
|
|
inkscape:pageopacity="0.0"
|
|
inkscape:pagecheckerboard="0"
|
|
inkscape:deskcolor="#d1d1d1"
|
|
inkscape:zoom="0.82625"
|
|
inkscape:cx="540.99849"
|
|
inkscape:cy="369.74281"
|
|
inkscape:window-width="1472"
|
|
inkscape:window-height="1022"
|
|
inkscape:window-x="234"
|
|
inkscape:window-y="30"
|
|
inkscape:window-maximized="0"
|
|
inkscape:current-layer="svg57" />
|
|
<defs
|
|
id="defs4">
|
|
<!-- Fond clair lisible partout -->
|
|
<linearGradient
|
|
id="bg"
|
|
x1="0"
|
|
y1="0"
|
|
x2="1"
|
|
y2="1">
|
|
<stop
|
|
offset="0"
|
|
stop-color="#ffffff"
|
|
id="stop1" />
|
|
<stop
|
|
offset="1"
|
|
stop-color="#f1f5f9"
|
|
id="stop2" />
|
|
</linearGradient>
|
|
<!-- Flèches -->
|
|
<marker
|
|
id="arrow"
|
|
markerWidth="10"
|
|
markerHeight="10"
|
|
refX="9"
|
|
refY="3"
|
|
orient="auto">
|
|
<path
|
|
d="M0,0 L9,3 L0,6 Z"
|
|
fill="#334155"
|
|
id="path2" />
|
|
</marker>
|
|
<marker
|
|
id="arrowA"
|
|
markerWidth="10"
|
|
markerHeight="10"
|
|
refX="9"
|
|
refY="3"
|
|
orient="auto">
|
|
<path
|
|
d="M0,0 L9,3 L0,6 Z"
|
|
fill="#2563eb"
|
|
id="path3" />
|
|
</marker>
|
|
<marker
|
|
id="arrowG"
|
|
markerWidth="10"
|
|
markerHeight="10"
|
|
refX="9"
|
|
refY="3"
|
|
orient="auto">
|
|
<path
|
|
d="M0,0 L9,3 L0,6 Z"
|
|
fill="#059669"
|
|
id="path4" />
|
|
</marker>
|
|
<!-- Styles SANS variables CSS (compat max) -->
|
|
<style
|
|
id="style4"><![CDATA[
|
|
.title{font:800 28px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#0f172a}
|
|
.subtitle{font:500 14px/1.3 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#475569}
|
|
.h{font:800 16px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#0f172a}
|
|
.t{font:500 13px/1.35 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#111827}
|
|
.s{font:500 12px/1.35 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#475569}
|
|
.mono{font:600 12px/1.35 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;fill:#0f172a}
|
|
|
|
/* Cadres lisibles */
|
|
.box{fill:#ffffff;stroke:#0ea5e9;stroke-width:1.4}
|
|
.box2{fill:#f8fafc;stroke:#94a3b8;stroke-width:1.2}
|
|
|
|
/* Pills */
|
|
.chip{fill:#dbeafe;stroke:#2563eb;stroke-width:1}
|
|
.chip2{fill:#d1fae5;stroke:#059669;stroke-width:1}
|
|
.chipW{fill:#fef3c7;stroke:#d97706;stroke-width:1}
|
|
.chipD{fill:#fee2e2;stroke:#dc2626;stroke-width:1}
|
|
|
|
/* Traits / flèches */
|
|
.line{stroke:#334155;stroke-width:1.4;fill:none}
|
|
.dash{stroke-dasharray:6 6}
|
|
.arrow{stroke:#334155;stroke-width:1.8;fill:none;marker-end:url(#arrow)}
|
|
.arrowA{stroke:#2563eb;stroke-width:2.0;fill:none;marker-end:url(#arrowA)}
|
|
.arrowG{stroke:#059669;stroke-width:2.0;fill:none;marker-end:url(#arrowG)}
|
|
]]></style>
|
|
</defs>
|
|
<rect
|
|
x="0"
|
|
y="0"
|
|
width="1600"
|
|
height="900"
|
|
fill="url(#bg)"
|
|
id="rect4" />
|
|
<text
|
|
x="40"
|
|
y="56"
|
|
class="title"
|
|
id="text4">Archicratie — Vue globale (v2, verbatim)</text>
|
|
<text
|
|
x="40"
|
|
y="84"
|
|
class="subtitle"
|
|
id="text5">Étape 8 (hotfix UI + sync Git) — mise à jour 2026-02-20 — Astro static + Pagefind + Authelia + Blue/Green</text>
|
|
<rect
|
|
x="40"
|
|
y="120"
|
|
width="470"
|
|
height="290"
|
|
class="box"
|
|
id="rect5" />
|
|
<text
|
|
x="58"
|
|
y="150"
|
|
class="h"
|
|
id="text6">Atelier DEV (Mac Studio)</text>
|
|
<text
|
|
x="58"
|
|
y="174"
|
|
class="mono"
|
|
id="text7">repo git (branches, PR vers main)</text>
|
|
<text
|
|
x="58"
|
|
y="192"
|
|
class="mono"
|
|
id="text8">npm run dev → http://localhost:4321</text>
|
|
<text
|
|
x="58"
|
|
y="210"
|
|
class="mono"
|
|
id="text9">npm run build → dist/ (static)</text>
|
|
<text
|
|
x="58"
|
|
y="228"
|
|
class="mono"
|
|
id="text10">postbuild:</text>
|
|
<text
|
|
x="58"
|
|
y="246"
|
|
class="mono"
|
|
id="text11"> inject-anchor-aliases.mjs</text>
|
|
<text
|
|
x="58"
|
|
y="264"
|
|
class="mono"
|
|
id="text12"> dedupe-ids-dist.mjs</text>
|
|
<text
|
|
x="58"
|
|
y="282"
|
|
class="mono"
|
|
id="text13"> build-para-index.mjs → dist/para-index.json</text>
|
|
<text
|
|
x="58"
|
|
y="300"
|
|
class="mono"
|
|
id="text14"> build-annotations-index.mjs → dist/annotations-index.json</text>
|
|
<text
|
|
x="58"
|
|
y="318"
|
|
class="mono"
|
|
id="text15"> pagefind → dist/pagefind/</text>
|
|
<text
|
|
x="58"
|
|
y="336"
|
|
class="s"
|
|
id="text16">predev: build public/para-index.json + public/annotations-index.json</text>
|
|
<rect
|
|
x="60"
|
|
y="420"
|
|
width="206"
|
|
height="28"
|
|
class="chip2"
|
|
id="rect16" />
|
|
<text
|
|
x="74"
|
|
y="439"
|
|
class="mono"
|
|
id="text17">dist/ + pagefind + indexes</text>
|
|
<rect
|
|
x="300"
|
|
y="420"
|
|
width="198"
|
|
height="28"
|
|
class="chip"
|
|
id="rect17" />
|
|
<text
|
|
x="314"
|
|
y="439"
|
|
class="mono"
|
|
id="text18"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">public/*-index.json</text>
|
|
<rect
|
|
x="40"
|
|
y="470"
|
|
width="470"
|
|
height="330"
|
|
class="box2"
|
|
id="rect18" />
|
|
<text
|
|
x="58"
|
|
y="500"
|
|
class="h"
|
|
id="text19">UI Lecture / Édition (dans le site)</text>
|
|
<text
|
|
x="58"
|
|
y="524"
|
|
class="t"
|
|
id="text20">EditionLayout.astro (globals + meta)</text>
|
|
<text
|
|
x="58"
|
|
y="542"
|
|
class="t"
|
|
id="text21">SidePanel.astro (reading-follow + annotations + propose)</text>
|
|
<text
|
|
x="58"
|
|
y="560"
|
|
class="t"
|
|
id="text22">LevelToggle.astro (Niveaux)</text>
|
|
<text
|
|
x="58"
|
|
y="578"
|
|
class="t"
|
|
id="text23">global.css (UX lecture + TOC-local sync)</text>
|
|
<text
|
|
x="58"
|
|
y="596"
|
|
class="s"
|
|
id="text24">SidePanel consomme para-index + annotations-index</text>
|
|
<text
|
|
x="58"
|
|
y="614"
|
|
class="s"
|
|
id="text25">ProposeModal ouvre une issue Gitea (direct ou via bridge)</text>
|
|
<text
|
|
x="58"
|
|
y="632"
|
|
class="mono"
|
|
id="text26">env publics: PUBLIC_GITEA_* + PUBLIC_ISSUE_BRIDGE_PATH</text>
|
|
<rect
|
|
x="673.92584"
|
|
y="119.57942"
|
|
width="344.13016"
|
|
height="250"
|
|
class="box"
|
|
id="rect26" />
|
|
<text
|
|
x="723"
|
|
y="180"
|
|
class="h"
|
|
id="text27"
|
|
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:16px;line-height:1.2;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">Gitea (sur NAS) — source of truth</text>
|
|
<text
|
|
x="723"
|
|
y="204"
|
|
class="t"
|
|
id="text28"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">main protégé (push direct interdit)</text>
|
|
<text
|
|
x="723"
|
|
y="222"
|
|
class="t"
|
|
id="text29"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">branches de travail → PR → merge</text>
|
|
<text
|
|
x="723"
|
|
y="240"
|
|
class="t"
|
|
id="text30"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">CI (workflow) : build + checks + artefacts</text>
|
|
<text
|
|
x="723"
|
|
y="258"
|
|
class="t"
|
|
id="text31"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">issues + labels (tickets)</text>
|
|
<rect
|
|
x="745"
|
|
y="320"
|
|
width="126"
|
|
height="28"
|
|
class="chip2"
|
|
id="rect31" />
|
|
<text
|
|
x="759"
|
|
y="339"
|
|
class="mono"
|
|
id="text32"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">PR → CI.yaml</text>
|
|
<rect
|
|
x="565"
|
|
y="430"
|
|
width="470"
|
|
height="160"
|
|
class="box2"
|
|
id="rect32" />
|
|
<text
|
|
x="583"
|
|
y="460"
|
|
class="h"
|
|
id="text33">Hotfix de release → re-sync Git (méthode step8)</text>
|
|
<text
|
|
x="583"
|
|
y="484"
|
|
class="t"
|
|
id="text34">1) lister fichiers modifiés sur NAS</text>
|
|
<text
|
|
x="583"
|
|
y="502"
|
|
class="t"
|
|
id="text35">2) tar + sha256 → transfert</text>
|
|
<text
|
|
x="583"
|
|
y="520"
|
|
class="t"
|
|
id="text36">3) rsync --checksum vers repo local</text>
|
|
<text
|
|
x="583"
|
|
y="538"
|
|
class="t"
|
|
id="text37">4) commit sur branche dédiée + push + PR</text>
|
|
<rect
|
|
x="1183.1921"
|
|
y="122.42058"
|
|
width="376.80786"
|
|
height="247.57942"
|
|
class="box"
|
|
id="rect37" />
|
|
<text
|
|
x="1228"
|
|
y="150"
|
|
class="h"
|
|
id="text38"
|
|
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:16px;line-height:1.2;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">NAS DS220+ — runtime Blue/Green</text>
|
|
<text
|
|
x="1228"
|
|
y="174"
|
|
class="mono"
|
|
id="text39"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">/volume2/docker/archicratie-web/</text>
|
|
<text
|
|
x="1228"
|
|
y="192"
|
|
class="mono"
|
|
id="text40"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">releases/<timestamp>/app (build context)</text>
|
|
<text
|
|
x="1228"
|
|
y="210"
|
|
class="mono"
|
|
id="text41"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">current → release active</text>
|
|
<text
|
|
x="1228"
|
|
y="228"
|
|
class="mono"
|
|
id="text42"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">docker compose: web_blue / web_green</text>
|
|
<text
|
|
x="1228"
|
|
y="246"
|
|
class="s"
|
|
id="text43"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">une seule couleur sert le trafic (reverse-proxy)</text>
|
|
<rect
|
|
x="1210"
|
|
y="310"
|
|
width="322"
|
|
height="28"
|
|
class="chipW"
|
|
id="rect43" />
|
|
<text
|
|
x="1224"
|
|
y="329"
|
|
class="mono"
|
|
id="text44"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">docker compose build --no-cache web_*</text>
|
|
<rect
|
|
x="1184.4025"
|
|
y="393.94858"
|
|
width="375.59756"
|
|
height="246.05144"
|
|
class="box2"
|
|
id="rect44" />
|
|
<text
|
|
x="1208"
|
|
y="430"
|
|
class="h"
|
|
id="text45"
|
|
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:16px;line-height:1.2;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">Edge & Auth</text>
|
|
<text
|
|
x="1208"
|
|
y="454"
|
|
class="t"
|
|
id="text46"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">Reverse-proxy (Nginx) protège le site</text>
|
|
<text
|
|
x="1208"
|
|
y="472"
|
|
class="t"
|
|
id="text47"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">Authelia (SSO) + LLDAP (LDAP) + Redis</text>
|
|
<text
|
|
x="1208"
|
|
y="490"
|
|
class="t"
|
|
id="text48"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">302 vers auth.* si non authentifié</text>
|
|
<text
|
|
x="1208"
|
|
y="508"
|
|
class="t"
|
|
id="text49"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:13px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">Host header: staging.* / archicratie.*</text>
|
|
<text
|
|
x="1208"
|
|
y="526"
|
|
class="s"
|
|
id="text50"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">/_auth/whoami utilisé en check côté client (peut 404 en local)</text>
|
|
<path
|
|
d="m 510,260 163.92587,-1.21029"
|
|
class="arrowA"
|
|
id="path50"
|
|
sodipodi:nodetypes="cc" />
|
|
<text
|
|
x="514"
|
|
y="245"
|
|
class="s"
|
|
id="text51"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial"><tspan
|
|
style="font-size:14.6667px"
|
|
id="tspan57">git push (branche) + PR</tspan></text>
|
|
<path
|
|
d="m 1016.8457,240 h 166.3464"
|
|
class="arrowA"
|
|
id="path51"
|
|
sodipodi:nodetypes="cc" />
|
|
<text
|
|
x="1025.3177"
|
|
y="206.9062"
|
|
class="s"
|
|
id="text52"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial"><tspan
|
|
sodipodi:role="line"
|
|
id="tspan58"
|
|
x="1025.3177"
|
|
y="206.9062"
|
|
style="font-size:14.6667px">CI/artefact</tspan><tspan
|
|
sodipodi:role="line"
|
|
id="tspan59"
|
|
x="1025.3177"
|
|
y="226.70625"
|
|
style="font-size:14.6667px">→ déploiement release</tspan></text>
|
|
<path
|
|
d="M1420 650 C1480 650 1520 650 1560 650"
|
|
class="arrow"
|
|
id="path52" />
|
|
<text
|
|
x="1420"
|
|
y="632"
|
|
class="s"
|
|
id="text53">HTTPS → navigateur</text>
|
|
<path
|
|
d="M 510,640.25719 C 540,640.25719 540,520 565,520"
|
|
class="arrow"
|
|
id="path53"
|
|
sodipodi:nodetypes="cc" />
|
|
<text
|
|
x="534.84113"
|
|
y="620.20575"
|
|
class="s"
|
|
id="text54"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial"><tspan
|
|
style="font-size:14.6667px"
|
|
id="tspan60">Propose → issue</tspan></text>
|
|
<path
|
|
d="m 1181.9818,520 -145.7715,-1.21029"
|
|
class="arrowG"
|
|
id="path54"
|
|
sodipodi:nodetypes="cc" />
|
|
<path
|
|
d="M565 520 C520 520 520 520 510 520"
|
|
class="arrowG"
|
|
id="path55" />
|
|
<text
|
|
x="800"
|
|
y="505"
|
|
class="s"
|
|
id="text55">tar+sha256 → scp → rsync --checksum</text>
|
|
<rect
|
|
x="40"
|
|
y="820"
|
|
width="1520"
|
|
height="60"
|
|
class="box2"
|
|
id="rect55" />
|
|
<text
|
|
x="58"
|
|
y="850"
|
|
class="h"
|
|
id="text56">Légende</text>
|
|
<text
|
|
x="58"
|
|
y="874"
|
|
class="s"
|
|
id="text57"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial"><tspan
|
|
style="font-size:14.6667px"
|
|
id="tspan61">Bleu = flux Git/CI · Vert = flux de re-sync hotfix · Orange = build runtime · Le reste = navigation/HTTP</tspan></text>
|
|
</svg>
|