2
0

framework.svg 17 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1865.625px" preserveAspectRatio="none" style="width:2559px;height:1865px;background:#FFFFFF;" version="1.1" viewBox="0 0 2559 1865" width="2559.375px" zoomAndPan="magnify"><defs/><g><rect fill="none" height="91.0004" id="_title" style="stroke:none;stroke-width:3.125;" width="312.5" x="1101.5625" y="15.625"/><text fill="#000000" font-family="sans-serif" font-size="43.75" font-weight="bold" lengthAdjust="spacing" textLength="281.25" x="1117.1875" y="81.3873">技术栈示意图</text><!--MD5=[780dd7903b78c784e8bd3c1872dd0cb9]
  2. cluster Python Backend--><g id="cluster_Python Backend"><polygon fill="none" points="312.5,296.3013,343.75,265.0513,1615.625,265.0513,1615.625,724.4263,1584.375,755.6763,312.5,755.6763,312.5,296.3013" style="stroke:#181818;stroke-width:3.125;"/><line style="stroke:#181818;stroke-width:3.125;" x1="1584.375" x2="1615.625" y1="296.3013" y2="265.0513"/><line style="stroke:#181818;stroke-width:3.125;" x1="312.5" x2="1584.375" y1="296.3013" y2="296.3013"/><line style="stroke:#181818;stroke-width:3.125;" x1="1584.375" x2="1584.375" y1="296.3013" y2="755.6763"/><text fill="#000000" font-family="sans-serif" font-size="43.75" font-weight="bold" lengthAdjust="spacing" textLength="353.125" x="775" y="355.8136">Python Backend</text></g><!--MD5=[fca8240bc233c06068545f9c8883ae88]
  3. cluster Frontend--><g id="cluster_Frontend"><polygon fill="none" points="1246.875,1036.9263,1278.125,1005.6763,1912.5,1005.6763,1912.5,1311.9263,1881.25,1343.1763,1246.875,1343.1763,1246.875,1036.9263" style="stroke:#181818;stroke-width:3.125;"/><line style="stroke:#181818;stroke-width:3.125;" x1="1881.25" x2="1912.5" y1="1036.9263" y2="1005.6763"/><line style="stroke:#181818;stroke-width:3.125;" x1="1246.875" x2="1881.25" y1="1036.9263" y2="1036.9263"/><line style="stroke:#181818;stroke-width:3.125;" x1="1881.25" x2="1881.25" y1="1036.9263" y2="1343.1763"/><text fill="#000000" font-family="sans-serif" font-size="43.75" font-weight="bold" lengthAdjust="spacing" textLength="203.125" x="1465.625" y="1096.4386">Frontend</text></g><g id="cluster_##24"><path d="M1836.7222,529.9758 C1846.2939,515.8884 1863.1383,516.7306 1871.0434,531.929 C1880.2441,508.713 1893.3426,507.6004 1910.5828,523.8807 C1924.8072,506.8347 1939.9067,505.7221 1951.1978,526.9902 C1959.6782,502.7224 1976.537,505.6176 1991.6204,520.1026 C2003.4549,501.9284 2017.5386,499.9998 2032.3141,516.6677 C2042.4193,499.6187 2058.4449,496.7803 2068.5197,516.6976 C2081.0037,497.6054 2093.8674,501.1932 2104.7981,518.2561 C2120.8838,496.3928 2137.2612,499.6366 2149.2113,522.3742 C2160.873,503.0453 2178.1035,506.536 2186.2861,525.7231 C2200.4965,503.366 2214.1437,507.194 2227.9795,526.1015 C2238.8435,512.4709 2255.7064,513.3316 2263.725,529.5133 C2275.616,512.7085 2290.2606,510.8607 2303.3586,528.1084 C2328.5273,540.726 2332.3403,557.9669 2312.0611,578.4422 C2340.6963,594.4297 2336.9954,618.7244 2312.4023,635.0329 C2331.0192,651.9141 2335.3336,668.4662 2309.096,682.2035 C2327.4701,699.3161 2324.8704,720.4243 2302.7656,732.4356 C2292.6382,753.5595 2279.2756,751.8096 2264.7015,737.1681 C2253.9262,755.2264 2238.3861,756.3858 2226.507,738.3355 C2215.6946,758.5972 2198.1074,753.8722 2188.574,737.0281 C2173.8936,754.9389 2158.4954,758.0224 2145.0843,735.6575 C2134.9318,758.1276 2120.2996,755.6123 2105.3363,740.7844 C2092.9568,758.4331 2079.8488,759.4532 2067.2914,740.9717 C2054.6471,755.3841 2040.699,753.5267 2033.1316,735.6077 C2023.223,758.7031 2002.3075,756.6789 1989.2052,739.0527 C1976.1736,754.1616 1958.843,752.579 1951.1015,733.2068 C1938.4828,749.7453 1925.2503,752.5377 1912.5521,733.2923 C1902.5428,753.5083 1884.4766,754.5285 1870.6299,737.6265 C1858.5559,754.6179 1846.2387,749.3394 1837.0063,734.614 C1807.9169,725.3852 1803.2023,704.4253 1825.84,683.8241 C1800.0043,669.5228 1799.7882,651.7398 1822.6414,634.2941 C1802.2411,616.8807 1799.8577,594.6726 1827.6387,581.8504 C1807.813,562.7459 1808.4978,540.6665 1836.7222,529.9758 " fill="none" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[9219125b1cfa360473cfc05026343937]
  4. cluster Sqlite3--><g id="cluster_Sqlite3"><path d="M231.25,861.9263 C231.25,830.6763 500,830.6763 500,830.6763 C500,830.6763 768.75,830.6763 768.75,861.9263 L768.75,1783.8013 C768.75,1815.0513 500,1815.0513 500,1815.0513 C500,1815.0513 231.25,1815.0513 231.25,1783.8013 L231.25,861.9263 " fill="none" style="stroke:#181818;stroke-width:3.125;"/><path d="M231.25,861.9263 C231.25,893.1763 500,893.1763 500,893.1763 C500,893.1763 768.75,893.1763 768.75,861.9263 " fill="none" style="stroke:#181818;stroke-width:3.125;"/><text fill="#000000" font-family="sans-serif" font-size="43.75" font-weight="bold" lengthAdjust="spacing" textLength="150" x="425" y="949.5636">Sqlite3</text></g><!--MD5=[8f9e84a9791ee0d02160ab259f656d90]
  5. cluster Subject--><g id="cluster_Subject"><rect fill="none" height="321.875" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:3.125;" width="387.5" x="306.25" y="1021.3013"/><path d="M503.125,1021.3013 L503.125,1059.1766 L471.875,1090.4266 L306.25,1090.4266 " fill="none" style="stroke:#181818;stroke-width:3.125;"/><text fill="#000000" font-family="sans-serif" font-size="43.75" font-weight="bold" lengthAdjust="spacing" textLength="165.625" x="315.625" y="1074.5636">Subject</text></g><!--MD5=[6bf345afb6d5123b7cfa103be96f4e84]
  6. cluster Train--><g id="cluster_Train"><rect fill="none" height="321.875" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:3.125;" width="337.5" x="331.25" y="1418.1763"/><path d="M471.875,1418.1763 L471.875,1456.0516 L440.625,1487.3016 L331.25,1487.3016 " fill="none" style="stroke:#181818;stroke-width:3.125;"/><text fill="#000000" font-family="sans-serif" font-size="43.75" font-weight="bold" lengthAdjust="spacing" textLength="109.375" x="340.625" y="1471.4386">Train</text></g><!--MD5=[98b434497fa026c1024ede991aa00aae]
  7. entity Fastapi--><g id="elem_Fastapi"><rect fill="#F1F1F1" height="153.5004" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:1.5625;" width="271.875" x="364.0625" y="552.5513"/><rect fill="#F1F1F1" height="31.25" style="stroke:#181818;stroke-width:1.5625;" width="46.875" x="573.4375" y="568.1763"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="567.1875" y="574.4263"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="567.1875" y="586.9263"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="146.875" x="410.9375" y="665.1886">Fastapi</text></g><!--MD5=[953a8c67cfe21abaf9bf45dad8506ca8]
  8. entity Router--><g id="elem_Router"><rect fill="#F1F1F1" height="153.5004" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:1.5625;" width="259.375" x="745.3125" y="552.5513"/><rect fill="#F1F1F1" height="31.25" style="stroke:#181818;stroke-width:1.5625;" width="46.875" x="942.1875" y="568.1763"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="935.9375" y="574.4263"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="935.9375" y="586.9263"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="134.375" x="792.1875" y="665.1886">Router</text></g><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="50" x="1534.375" y="199.1882">p1</text><rect fill="#F1F1F1" height="37.5" style="stroke:#181818;stroke-width:4.6875;" width="37.5" x="1540.625" y="246.3013"/><!--MD5=[98fb5154a0018378cce3cf9fa07d576b]
  9. entity Jinja2--><g id="elem_Jinja2"><ellipse cx="1325" cy="1216.6138" fill="#F1F1F1" rx="25" ry="25" style="stroke:#181818;stroke-width:1.5625;"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="112.5" x="1268.75" y="1319.8761">Jinja2</text></g><!--MD5=[69dcce165cdf3342fce4037bcc79e347]
  10. entity HTML,CSS,JS--><g id="elem_HTML,CSS,JS"><rect fill="#F1F1F1" height="153.5004" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:1.5625;" width="400" x="1462.5" y="1140.0513"/><rect fill="#F1F1F1" height="31.25" style="stroke:#181818;stroke-width:1.5625;" width="46.875" x="1800" y="1155.6763"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="1793.75" y="1161.9263"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="1793.75" y="1174.4263"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="275" x="1509.375" y="1252.6886">HTML,CSS,JS</text></g><!--MD5=[457e549b7b4b0a646745962331482f7a]
  11. entity Uvicorn Server--><g id="elem_Uvicorn Server"><rect fill="#F1F1F1" height="153.5004" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:1.5625;" width="415.625" x="1857.8125" y="552.5513"/><rect fill="#F1F1F1" height="31.25" style="stroke:#181818;stroke-width:1.5625;" width="46.875" x="2210.9375" y="568.1763"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="2204.6875" y="574.4263"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="2204.6875" y="586.9263"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="290.625" x="1904.6875" y="665.1886">Uvicorn Server</text></g><!--MD5=[3c7c91fc8b54b782118ea1b8f7b323af]
  12. entity subjects--><g id="elem_subjects"><rect fill="#F1F1F1" height="153.5004" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:1.5625;" width="287.5" x="356.25" y="1140.0513"/><rect fill="#F1F1F1" height="31.25" style="stroke:#181818;stroke-width:1.5625;" width="46.875" x="581.25" y="1155.6763"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="575" y="1161.9263"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="575" y="1174.4263"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="162.5" x="403.125" y="1252.6886">subjects</text></g><!--MD5=[68c689839bf4e3948e11dd61ab30cf3f]
  13. entity trains--><g id="elem_trains"><rect fill="#F1F1F1" height="153.5004" rx="7.8125" ry="7.8125" style="stroke:#181818;stroke-width:1.5625;" width="234.375" x="382.8125" y="1536.9263"/><rect fill="#F1F1F1" height="31.25" style="stroke:#181818;stroke-width:1.5625;" width="46.875" x="554.6875" y="1552.5513"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="548.4375" y="1558.8013"/><rect fill="#F1F1F1" height="6.25" style="stroke:#181818;stroke-width:1.5625;" width="12.5" x="548.4375" y="1571.3013"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="109.375" x="429.6875" y="1649.5636">trains</text></g><!--MD5=[42abda1266478df28835e910665a53b7]
  14. entity EEG--><g id="elem_EEG"><ellipse cx="140.625" cy="265.0513" fill="#F1F1F1" rx="25" ry="25" style="stroke:#181818;stroke-width:1.5625;"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="243.75" x="18.75" y="368.3136">EEG Access</text></g><!--MD5=[4552cdf2d0aba18cd886a647220bb61d]
  15. entity FER--><g id="elem_FER"><ellipse cx="225" cy="629.1138" fill="#F1F1F1" rx="25" ry="25" style="stroke:#181818;stroke-width:1.5625;"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="268.75" x="90.625" y="732.3761">Face Camera</text></g><!--MD5=[5c9d7c41ec3c4647e63b827b237c0064]
  16. entity HPE--><g id="elem_HPE"><ellipse cx="2412.5" cy="629.1138" fill="#F1F1F1" rx="25" ry="25" style="stroke:#181818;stroke-width:1.5625;"/><text fill="#000000" font-family="sans-serif" font-size="43.75" lengthAdjust="spacing" textLength="250" x="2287.5" y="732.3761">Gait Camera</text></g><!--MD5=[6ea56afc68baa4752efeb5e92f8c4b8f]
  17. reverse link EEG to Fastapi--><g id="link_EEG_Fastapi"><path d="M178.75,306.145 C237.1875,364.3013 349.9688,476.6138 425.125,551.4575 " fill="none" id="EEG-backto-Fastapi" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="166.4688,293.895,177.5753,322.5989,177.5396,304.9212,195.2172,304.8855,166.4688,293.895" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[a73d5ec5cdb2c0f330358e56d2bba2e2]
  18. reverse link FER to Fastapi--><g id="link_FER_Fastapi"><path d="M270.25,629.1138 C301.3438,629.1138 332.4688,629.1138 363.5625,629.1138 " fill="none" id="FER-backto-Fastapi" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="254,629.1138,282.125,641.6138,269.625,629.1138,282.125,616.6138,254,629.1138" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[2bd0ae3bbe682e1716abd5475c0f49b3]
  19. link Fastapi to HPE--><g id="link_Fastapi_HPE"><path d="M564.1875,552.145 C609.25,504.4575 674.0313,447.4263 745.3125,421.3013 C904.4063,362.9888 2114.2188,355.3638 2270.3125,421.3013 C2338.9063,450.3013 2379.1875,532.7388 2398.4375,584.645 " fill="none" id="Fastapi-to-HPE" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="2403.75,599.6763,2406.2157,568.9975,2398.5684,584.9355,2382.6304,577.2881,2403.75,599.6763" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[e0e233bad13f49bbf8fd7d07db79ce06]
  20. link Router to Fastapi--><g id="link_Router_Fastapi"><path d="M744.4375,629.1138 C708.3438,629.1138 672.2813,629.1138 636.2188,629.1138 " fill="none" id="Router-Fastapi" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[25b5eeb31766efee941f3e10ee051a4e]
  21. link Jinja2 to HTML,CSS,JS--><g id="link_Jinja2_HTML,CSS,JS"><path d="M1354,1216.6138 C1390.1563,1216.6138 1426.3125,1216.6138 1462.4688,1216.6138 " fill="none" id="Jinja2-HTML,CSS,JS" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[e9f3a57fc378bb5de96bee67c9eccac3]
  22. link Router to Jinja2--><g id="link_Router_Jinja2"><path d="M932,705.8638 C1028.4688,830.4575 1220.6875,1078.77 1294.8438,1174.5513 " fill="none" id="Router-to-Jinja2" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="1304.9063,1187.5513,1297.5511,1157.6654,1295.332,1175.2032,1277.7942,1172.9841,1304.9063,1187.5513" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[c64bf5e3612392ff2f9ee314fdb3d330]
  23. link p1 to Uvicorn Server--><g id="link_p1_Uvicorn Server"><path d="M1578.5938,281.77 C1638.375,324.02 1824.3438,455.4575 1948.4063,543.145 " fill="none" id="p1-to-Uvicorn Server" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="1961.7188,552.5513,1945.9573,526.1156,1948.9561,543.5371,1931.5346,546.5359,1961.7188,552.5513" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[d7eed3e3278df8aa06258b175a067ff0]
  24. link Uvicorn Server to HTML,CSS,JS--><g id="link_Uvicorn Server_HTML,CSS,JS"><path d="M2014.5625,705.8638 C1940.25,812.9888 1802.5312,1011.5825 1723.1563,1126.02 " fill="none" id="Uvicorn Server-to-HTML,CSS,JS" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="1713.7813,1139.5513,1740.0532,1123.5185,1722.6635,1126.6965,1719.4856,1109.3068,1713.7813,1139.5513" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[93411afeafc54e61cf06be37f94efc01]
  25. link Fastapi to subjects--><g id="link_Fastapi_subjects"><path d="M500,705.8638 C500,812.1138 500,1008.3638 500,1123.2075 " fill="none" id="Fastapi-to-subjects" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="500,1139.5513,512.5,1111.4263,500,1123.9263,487.5,1111.4263,500,1139.5513" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[da37bba8c6fb72d3c61eb8fee896f5fb]
  26. link subjects to trains--><g id="link_subjects_trains"><path d="M500,1293.2075 C500,1357.4575 500,1450.9888 500,1519.8325 " fill="none" id="subjects-to-trains" style="stroke:#181818;stroke-width:3.125;"/><polygon fill="#181818" points="500,1535.895,512.5,1507.77,500,1520.27,487.5,1507.77,500,1535.895" style="stroke:#181818;stroke-width:3.125;"/></g><!--MD5=[778d849aaee11487910fe922eb48de1a]
  27. @startuml
  28. title 技术栈示意图
  29. skinparam dpi 300
  30. interface "EEG Access" as EEG
  31. interface "Face Camera" as FER
  32. interface "Gait Camera" as HPE
  33. node "Python Backend" {
  34. [Fastapi] -up-> EEG
  35. [Fastapi] -left-> FER
  36. [Fastapi] -right-> HPE
  37. [Router] - [Fastapi]
  38. port p1
  39. }
  40. node "Frontend" {
  41. Jinja2 - [HTML,CSS,JS]
  42. [Router] - -> Jinja2
  43. }
  44. cloud {
  45. [Uvicorn Server]
  46. }
  47. database "Sqlite3" {
  48. frame "Subject" {
  49. [subjects]
  50. }
  51. frame "Train" {
  52. [trains]
  53. }
  54. }
  55. p1 - -> [Uvicorn Server]
  56. [Uvicorn Server] - -> [HTML,CSS,JS]
  57. [Fastapi] - -> [subjects]
  58. [subjects] - -> [trains]
  59. @enduml
  60. PlantUML version 1.2022.7(Tue Aug 23 01:01:30 CST 2022)
  61. (GPL source distribution)
  62. Java Runtime: Java(TM) SE Runtime Environment
  63. JVM: Java HotSpot(TM) 64-Bit Server VM
  64. Default Encoding: GBK
  65. Language: zh
  66. Country: CN
  67. --></g></svg>