Test QuickGV: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| (244 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
= Sandbox = | See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf | ||
= Colored Edge = | |||
<quickmmd name="colored-edge"> | |||
flowchart LR | |||
A1([🤖 Agent]) | |||
A2([👩🏻💻 Human]) | |||
subgraph backend handlers | |||
B1("HTTP<br>(Fiber v3)") | |||
B2("API handler") | |||
B3("MCP HTTP") | |||
B4("Streamable Handler") | |||
B5("SSE handler") | |||
B6("MCP Server") | |||
B7("Nuxt.js") | |||
end | |||
subgraph backend services | |||
C1(Mermaid to SVG) | |||
C2(Mermaid to PNG) | |||
C3(XML Formatter) | |||
end | |||
subgraph resources | |||
D1(Mermaid<br>Docker Container<br>yuzutech/kroki-mermaid) | |||
end | |||
A1 --> B1 | |||
A2 --> B1 | |||
B1 --> |/api| B2 | |||
B1 --> |/mcp or /sse| B3 | |||
B1 --> |otherwise| B7 | |||
B3 --> |/mcp| B4 | |||
B3 --> |/sse| B5 | |||
B4 & B5 --> B6 | |||
B6 --> C1 & C2 & C3 | |||
B2 --> D1 | |||
C1 & C2 --> D1 | |||
linkStyle 0,3 stroke:#0066cc,stroke-width:2px | |||
</quickmmd> | |||
= Dish = | |||
<quickmmd name="dish"> | |||
mindmap | |||
A[Dish] | |||
B1[Sauce Dish] | |||
B2[Shark's Fin Soup Dish] | |||
B3[Divided Dish] | |||
B4[Cassesrole Dish] | |||
</quickmmd> | |||
= MMD = | |||
<quickmmd name="testmmd"> | |||
flowchart LR | |||
Root("規則動詞變化<br>(play)") | |||
Root --> Past("過去") | |||
Root --> Pres("現在") | |||
Root --> Fut("未來") | |||
Past --> P1("過去普通: played") | |||
Past --> P2("過去進行: was/were playing") | |||
Past --> P3("過去完成: had played") | |||
Past --> P4("過去被動: was/were played") | |||
Pres --> R1("現在普通: play / plays") | |||
Pres --> R2("現在進行: am/is/are playing") | |||
Pres --> R3("現在完成: have/has played") | |||
Pres --> R4("現在被動: am/is/are played") | |||
Fut --> F1("未來普通: will play") | |||
Fut --> F2("未來進行: will be playing") | |||
Fut --> F3("未來完成: will have played") | |||
Fut --> F4("未來被動: will be played") | |||
</quickmmd> | |||
= WebSocket Service = | |||
<quickgv name="123" theme="warm" usage="ram"> | |||
subgraph cluster_client { | |||
label="WebSocket Client" | |||
c1[label="var ws = new WebSocket('/foo')"]; | |||
c2[label="ws.onerror = function (ev) ..."]; | |||
c3[label="ws.onopen = function (ev) ..."]; | |||
c4[label="ws.onmessage = function (ev) ..."]; | |||
c5[label="ws.send()"]; | |||
} | |||
subgraph cluster_server { | |||
label=""; | |||
s[label="Service Unit | <rh> Request Handler | <ph> Push Handler | <pw> Push Worker | <mh> Message Handler | <mw> Message Worker"]; | |||
iq[label="Inbound Queue"]; | |||
oq[label="Outbound Queue"]; | |||
} | |||
c1 -> s:rh [color="#ff0000"]; | |||
c2 -> s:rh [color="#0000ff",dir="back"]; | |||
c3 -> s:rh [color="#0000ff",dir="back"]; | |||
c4 -> s:ph [color="#0000ff",dir="back"]; | |||
s:ph -> oq [color="#0000ff",dir="back"]; | |||
s:pw -> oq [color="#0000ff"]; | |||
c5 -> s:mh [color="#ff0000"]; | |||
s:mh -> iq [color="#ff0000"]; | |||
s:mw -> iq [color="#ff0000",dir="back"]; | |||
</quickgv> | |||
= testflow = | |||
<quickgv name="G51" theme="warm"> | |||
label="五環境佈署流程"; | |||
rankdir=TB; | |||
A [label="Local\n開發新功能"]; | |||
B [label="Development\n測試模擬交易"]; | |||
C [label="Staging\n測試真實交易"]; | |||
D [label="Sandbox\n供分銷商測試"]; | |||
E [label="Production\n實際營運"]; | |||
A -> B; | |||
B -> C; | |||
B -> D; | |||
C -> E; | |||
</quickgv> | |||
<quickgv name="G52" theme="warm"> | |||
label="三環境佈署流程"; | |||
rankdir=TB; | |||
A [label="Local\n開發新功能"]; | |||
B [label="Sandbox\n升級新功能"]; | |||
C [label="Production\n升級新功能"]; | |||
A -> B -> C; | |||
</quickgv> | |||
test | |||
= Crawling Flow = | |||
<quickgv name="G4" theme="warm"> | <quickgv name="G4" theme="warm"> | ||
rankdir=TB; | |||
A1 [label="Website"]; | |||
A2 [label="Proxy Server"]; | |||
A3 [label="Daily Cache"]; | |||
A4 [label="Hash Cache"]; | |||
B [label="Requests Session"]; | |||
C [label="Crawler"]; | |||
D1 [label="BeautifulSoup\n(HTML)"]; | |||
D2 [label="json\n(JSON)"]; | |||
D3 [label="Pandas\n(CSV)"]; | |||
D4 [label="Custom Datasource", fillcolor="#ffffff:#00c000"]; | |||
E1 [label="Handler", fillcolor="#ffffff:#00c000"]; | |||
E2 [label="Models", fillcolor="#ffffff:#00c000"]; | |||
F1 [label="SQLAlchemy"]; | |||
F2 [label="Console"]; | |||
F3 [label="GeoJSON"]; | |||
F4 [label="Elastic Search", fillcolor="#ffffff:#aaaaaa"]; | |||
G1 [label="SQLite"]; | |||
G2 [label="PostgreSQL", fillcolor="#ffffff:#aaaaaa"]; | |||
G3 [label="MySQL", fillcolor="#ffffff:#aaaaaa"]; | |||
G4 [label="MongoDB", fillcolor="#ffffff:#aaaaaa"]; | |||
A1 -> A2; | |||
{A1 A2} -> B; | |||
{B A3 A4} -> C; | |||
C -> {D1 D2 D3 D4} -> E1 -> {F1 F2 F3 F4}; | |||
E2 -> F1; | |||
F1 -> {G1 G2 G3 G4}; | |||
</quickgv> | </quickgv> | ||
= | = GDS = | ||
<quickgv name="G3" theme="warm"> | <quickgv name="G3" theme="warm"> | ||
rankdir=TB; | rankdir=TB; | ||
A [label="[Product]\nAquaduck Tours Surfers Paradise"]; | |||
B1 [label="[Product Type]\n11:15am Tour"]; | |||
B2 [label="[Product Type]\n01:45pm Tour"]; | |||
B3 [label="[Product Type]\n01:00pm Tour (Peak Season and Weekends Only)"]; | |||
C1 [label="[Product Option & Date]\nAdult @ 2019-07-03\n38.49 AUD"]; | |||
C2 [label="[Product Option & Date]\nChild (2-16yrs) @ 2019-07-03\n19.99 AUD"]; | |||
C3 [label="[Product Option & Date]\nStudent @ 2019-07-11\n25.49 AUD"]; | |||
A -> {B1 B2 B3}; | |||
B1 -> {C1 C2 C3}; | |||
</quickgv> | </quickgv> | ||
= | = Geomancer = | ||
<quickgv name="G2" theme="warm"> | <quickgv name="G2" theme="warm"> | ||
rankdir=BT; | rankdir=BT; | ||
| Line 35: | Line 208: | ||
C1 [label="凶宅資料\nGeoJSON"]; | C1 [label="凶宅資料\nGeoJSON"]; | ||
C2 [label="凶宅資料\nSQLite"]; | C2 [label="凶宅資料\nSQLite 3"]; | ||
subgraph cluster_convertion { | subgraph cluster_convertion { | ||
| Line 66: | Line 239: | ||
D [label="Convert to land-polygons-taiwan.osm"]; | D [label="Convert to land-polygons-taiwan.osm"]; | ||
E [label="Convert to taiwan-merged-YYYYMMDD.osm.pbf"]; | E [label="Convert to taiwan-merged-YYYYMMDD.osm.pbf"]; | ||
F [label="Convert to taiwan-merged-YYYYMMDD.map"]; | F [label="Convert to taiwan-merged-YYYYMMDD.map "]; | ||
B -> C [ | B -> C [xlabel="ogr2ogr (gdal)"]; | ||
C -> D [ | C -> D [xlabel="python3 shp2osm.py"]; | ||
{A D} -> E [ | {A D} -> E [xlabel="osmosis"]; | ||
E -> F [ | E -> F [xlabel="osmosis with mapsforge writer"]; | ||
</quickgv> | </quickgv> | ||
Latest revision as of 10:21, 10 September 2026
See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf
Colored Edge
Dish
MMD
WebSocket Service
testflow
test