Test QuickGV: Difference between revisions

From Fundamental Ramen
Jump to navigation Jump to search
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf
See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf


= MMD =
= Test =
<quickmmd name="testmmd">
<quickmmd name="main" dump-env="true">
flowchart TD
  A --> B2
</quickmmd>
 
= 認知負荷 =
 
<quickmmd name="cognitive-load">
mindmap
  ((認知負荷))
    ((熟能生巧<br>有效認知負荷<br>germane))
      --> 數學解題突破盲腸
      --> 游泳換氣成功了
      --> 繞口令不吃螺絲
    ((錯綜複雜<br>內在認知負荷<br>intrinsic))
      --> 教材太難, 越級打怪
      --> 基礎知識沒學好
    ((莫名其妙<br>外在認知負荷<br>extraneous))
      --> 教材太多雜訊
      --> 光罰寫就寫不完
</quickmmd>
 
= Colored Edge =
 
<quickmmd name="colored-edge" dump-env="true">
flowchart TD
flowchart TD
   A[(更新 MAINSYS_DB.md)]@{ shape: doc }
   A1(["👩🏻‍💻 Human"])
   B[(`task mig-create -- xxx`<br>新增一組資料庫版本異動)]
  A2(["🤖 Agent"])
   C[(`assets/migrations/xxx.sql`<br>修訂資料庫異動檔 )]
 
  D[(`task mig-up`<br>升級資料庫)]
   B1("HTTP<br>(Fiber v3)")
  E[(`task mig-down`<br>降級資料庫)]
 
   F{{`src/main_be/internal/schema/xxx.go`<br>新增 Ent schema 定義}}
   subgraph backend handlers 
   G{{`task ent-gen`<br>生成 Ent 資料存取碼}}
    B2("API handler")
  H([在 service 層寫業務邏輯])
    B3("MCP HTTP")
  I([在 service 層寫單元測試])
    B4("Streamable Handler")
  J([在 handler 層寫請求處理])
    B5("SSE handler")
   K[在 main.go 組裝 client, service, handler]@{ shape: procs }
    B6("MCP Server")
   end
 
   subgraph backend services
    C1(Mermaid to SVG)
    C2(Mermaid to PNG)
    C3(XML Formatter)
   end


   A --> B
   subgraph frontend
    B7("Nuxt.js")
  end


   subgraph database_layer
   subgraph resources
     direction LR
     D1(Mermaid Container<br>yuzutech/kroki-mermaid)
    B --> C
    C --> D
    D --Failed--> E
    E --Tunning--> C
   end
   end


   D --Passed--> F
   %% human path
   F --> G
  A1 --> B1
   G --> H
  B1 --> |the rest URI| B7
  linkStyle 0,1 stroke:#0000ff,stroke-width:2px
 
  %% agent path
   A2 --> B1
   B1 --> |/mcp or /sse| B3
  linkStyle 2,3 stroke:#00aa00,stroke-width:2px


   subgraph service_layer
   %% api path
      direction LR
  B7 --> |axios| B1
      H --> I
  B1 --> |/api| B2
      I --Failed--> H
  linkStyle 4,5 stroke:#9900cc,stroke-width:2px
      I --Passed--> J
 
   end 
  B3 --> |/mcp| B4
    
  B3 --> |/sse| B5
   J --> K
  B4 & B5 --> B6
   B6 --> C1 & C2 & C3
   B2 --> D1
   C1 & C2 --> D1
</quickmmd>
</quickmmd>


= ClinicWiz =
= Dish =
<quickmmd name="dish">
mindmap
  A[Dish]
    B1[Sauce Dish]
    B2[Shark's Fin Soup Dish]
    B3[Divided Dish]
    B4[Cassesrole Dish]
</quickmmd>


<quickgv name="clinicwiz" theme="warm">
= MMD =
rankdir=TB;


subgraph cluster_formain_cs {
<quickmmd name="testmmd">
  label="HTTP";
flowchart LR
  A [label="GenHTTP http://localhost:8168\n(FormMain.cs)"];
    Root("規則動詞變化<br>(play)")
  B [label="Functional Handler\n(FormMain.cs)"];
  C [label="Functions\n(RestfulMethods.cs)"];
}


subgraph cluster_form {
    Root --> Past("過去")
  label="WPF";
    Root --> Pres("現在")
  L [label="ReadTest.cs"];
    Root --> Fut("未來")
}


subgraph cluster_cshistaskfactory_cs {
    Past --> P1("過去普通: played")
  label="Queue Mechanism";
    Past --> P2("過去進行: was/were playing")
  D [label="TaskFactory\n(CsHisTask/CsHisTaskFactory.cs)"];
    Past --> P3("過去完成: had played")
  E [label="Task\n(CsHisTask/CsHisTaskFactory.cs)"];
    Past --> P4("過去被動: was/were played")
  F [label="StateMachine\n(CsHisStateMachine.cs)"];
}


subgraph cluster_hal {
    Pres --> R1("現在普通: play / plays")
  label="Hardware Control";
    Pres --> R2("現在進行: am/is/are playing")
  G [label="CsHisHAL.cs"];
    Pres --> R3("現在完成: have/has played")
  H [label="CsHis.dll\n(CsHis99Native.cs)"];
    Pres --> R4("現在被動: am/is/are played")
  J [label="PCSC API"];
  K [label="SetupAPI"];
  R1 [label="HC3000"];
  R2 [label="DWR18"];
  R3 [label="PCSC Reader"];
}


A -> B -> C -> D -> E -> F -> G -> H;
    Fut --> F1("未來普通: will play")
F -> J;
    Fut --> F2("未來進行: will be playing")
F -> K;
    Fut --> F3("未來完成: will have played")
L -> D;
    Fut --> F4("未來被動: will be played")
 
</quickmmd>
H -> R1;
H -> R2;
H -> R3;
J -> R2;
J -> R3;
</quickgv>


= WebSocket Service =
= WebSocket Service =
Line 115: Line 142:
s:mh -> iq [color="#ff0000"];
s:mh -> iq [color="#ff0000"];
s:mw -> iq [color="#ff0000",dir="back"];
s:mw -> iq [color="#ff0000",dir="back"];
</quickgv>
= 建議線路 gen1 =
<quickgv name="topology" theme="warm">
subgraph cluster_clinic {
  label="診間網路";
  his[label="HIS Server"];
  nas[label="NAS"];
  opd[label="診間"];
  pt[label="復健"];
  reg[label="掛號"];
  tv[label="衛教"];
  prn[label="印表機"];
  sw[label="辦公室交換器"];
  fw[label="防火牆"];
  wan1[label="固定IP線路"];
  wan2[label="健保局 VPN"];
  cross[label="跨院病歷"];
  {opd pt reg tv his nas prn} -> sw;
  sw -> fw;
  fw -> {wan1 wan2};
  wan1 -> cross [dir="back", color="#ff0000"];
}
// 開放網路
subgraph cluster_open {
  label="開放網路";
  gu[label="新光保全"];
  mo[label="監視系統"];
  pc1[label="外網專用PC"];
  rt[label="IP分享器"];
  wan3[label="浮動IP線路"];
  mobile[label="監視系統 App"];
  hacker[label="駭客 or 殭屍電腦"];
  {pc1 gu mo} -> rt -> wan3;
  wan3 -> {mobile hacker} [label="tcp:3880", dir="back", color="#ff0000"];
}
</quickgv>
= 建議線路 gen2 =
<quickgv name="topology_gen2" theme="warm">
subgraph cluster_clinic {
  label="診間網路";
  his[label="HIS Server"];
  nas[label="NAS"];
  opd[label="診間"];
  pt[label="復健"];
  reg[label="掛號"];
  tv[label="衛教"];
  prn[label="印表機"];
  fw[label="防火牆"];
  wan1[label="固定IP線路"];
  wan2[label="健保局 VPN"];
  cross[label="跨院病歷"];
  subgraph cluster_switch {
    label="網路交換器";
    vlan1[label="診間區虛擬網路"];
    vlan2[label="敏感區虛擬網路"];
  }
  {opd pt reg tv prn} -> vlan1;
  {his nas} -> vlan2;
  {vlan1 vlan2} -> fw;
  fw -> {wan1 wan2};
  wan1 -> cross [dir="back", color="#ff0000"];
}
// 開放網路
subgraph cluster_open {
  label="開放網路";
  gu[label="新光保全"];
  mo[label="監視系統"];
  pc1[label="外網專用PC"];
  rt[label="IP分享器"];
  wan3[label="浮動IP線路"];
  mobile[label="監視系統 App\n(僅限特定地點存取)"];
  {pc1 gu mo} -> rt -> wan3;
  wan3 -> mobile [label="tcp:3880", dir="back", color="#ff0000"];
}
</quickgv>
= A =
<quickgv name="Gff" theme="warm">
rankdir=TB;
A [label="驗證銷售權"];
B [label="驗證輸入值格式"];
C [label="驗證報價是否存在"];
D [label="產生 GDS 訂單"];
E [label="產生供應商訂單"];
A -> B -> C -> D -> E;
</quickgv>
</quickgv>



Latest revision as of 07:12, 6 October 2026

See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf

Test

File Path/images/quickmmd/Test_QuickGV-main.svg
File Size10.54 KB
Last modified14:13:01
Time of SVG loading2.41 second(s)
Time of SVG convertion0.00 second(s)
Cache DetectedNo
MD5 of incoming syntax4537a9182d13375d53fc4fc20a27e7fe
⧼md5-existed⧽4a8ad1cf342dd45a6f021735b1836410
SVG EngineKroki API
Kroki API URLhttp://kroki:8000
Mermaid syntax Referencehttps://mermaid.js.org/intro/syntax-reference.html
QuickMMD Version1.0.0 - About QuickMMD

認知負荷

Colored Edge

File Path/images/quickmmd/Test_QuickGV-colored-edge.svg
File Size116.64 KB
Last modified14:11:18
Time of SVG loading0.00 second(s)
Time of SVG convertion0.00 second(s)
Cache DetectedYes
SVG EngineKroki API
Kroki API URLhttp://kroki:8000
Mermaid syntax Referencehttps://mermaid.js.org/intro/syntax-reference.html
QuickMMD Version1.0.0 - About QuickMMD

Dish

MMD

WebSocket Service

testflow

test

Crawling Flow

GDS

Geomancer

Sandbox