{"id":11715,"date":"2026-07-10T09:51:36","date_gmt":"2026-07-10T01:51:36","guid":{"rendered":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/"},"modified":"2026-07-26T19:02:25","modified_gmt":"2026-07-26T11:02:25","slug":"vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform","status":"publish","type":"post","link":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/","title":{"rendered":"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t"},"content":{"rendered":"<div class=\"toastui-editor-main toastui-editor-md-mode\">\n<div class=\"toastui-editor-main-container\">\n<div class=\"toastui-editor-md-container toastui-editor-md-vertical-style\">\n<div class=\"toastui-editor-md-preview\">\n<div class=\"toastui-editor-contents\">\n<p data-nodeid=\"30819\">Trong th\u1ebf gi\u1edbi t\u00e0i li\u1ec7u k\u1ef9 thu\u1eadt, &#8216;S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3&#8217; \u0111\u00e3 chuy\u1ec3n t\u1eeb m\u1ed9t th\u1ef1c h\u00e0nh chuy\u00ean bi\u1ec7t c\u1ee7a nh\u00e0 ph\u00e1t tri\u1ec3n th\u00e0nh ph\u01b0\u01a1ng ph\u00e1p chu\u1ea9n ng\u00e0nh. Nh\u01b0ng \u0111\u1ed1i v\u1edbi c\u00e1c \u0111\u1ed9i ng\u0169 ph\u1ea3i x\u1eed l\u00fd nhi\u1ec1u lo\u1ea1i s\u01a1 \u0111\u1ed3 kh\u00e1c nhau\u2014s\u01a1 \u0111\u1ed3 lu\u1ed3ng, s\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1, m\u00f4 h\u00ecnh C4 v\u00e0 b\u1ea3n \u0111\u1ed3 h\u1ea1 t\u1ea7ng\u2014th\u00e1ch th\u1ee9c n\u1eb1m \u1edf s\u1ef1 ph\u00e2n m\u1ea3nh c\u00f4ng c\u1ee5. Visual Paradigm\u2019s\u00a0<strong data-nodeid=\"31054\">VPasCode<\/strong>\u00a0\u0111i\u1ec1u n\u00e0y m\u1ed9t c\u00e1ch tr\u1ef1c ti\u1ebfp b\u1eb1ng c\u00e1ch th\u1ed1ng nh\u1ea5t ba \u0111\u1ed9ng c\u01a1 chuy\u1ec3n \u0111\u1ed5i v\u0103n b\u1ea3n th\u00e0nh s\u01a1 \u0111\u1ed3 ch\u00ednh y\u1ebfu trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t d\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t, \u0111\u01b0\u1ee3c n\u00e2ng cao b\u1eb1ng kh\u1ea3 n\u0103ng AI v\u00e0 t\u00edch h\u1ee3p li\u1ec1n m\u1ea1ch v\u1edbi quy tr\u00ecnh l\u00e0m vi\u1ec7c t\u00e0i li\u1ec7u.<\/p>\n<p data-nodeid=\"30820\">H\u01b0\u1edbng d\u1eabn n\u00e0y kh\u00e1m ph\u00e1 c\u00e1c t\u00ednh n\u0103ng c\u1ed1t l\u00f5i c\u1ee7a VPasCode, minh h\u1ecda c\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf tr\u00ean c\u00e1c c\u00fa ph\u00e1p \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3, v\u00e0 cho th\u1ea5y c\u00e1ch n\u00f3 k\u1ebft n\u1ed1i v\u1edbi h\u1ec7 sinh th\u00e1i OpenDocs r\u1ed9ng l\u1edbn \u0111\u1ec3 t\u1ea1o t\u00e0i li\u1ec7u s\u1ed1ng \u0111\u1ed9ng.<\/p>\n<hr data-nodeid=\"30821\"\/>\n<h2 data-nodeid=\"30822\">\u0110i\u1ec1u g\u00ec l\u00e0m cho VPasCode kh\u00e1c bi\u1ec7t?<\/h2>\n<p data-nodeid=\"30823\">VPasCode n\u1ed5i b\u1eadt nh\u01b0 m\u1ed9t\u00a0<strong data-nodeid=\"31064\">n\u1ec1n t\u1ea3ng s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 th\u1ed1ng nh\u1ea5t<\/strong>\u00a0h\u1ed7 tr\u1ee3 Mermaid.js, PlantUML v\u00e0 Graphviz trong m\u1ed9t giao di\u1ec7n duy nh\u1ea5t. Thay v\u00ec chuy\u1ec3n \u0111\u1ed5i gi\u1eefa c\u00e1c c\u00f4ng c\u1ee5 t\u00f9y theo lo\u1ea1i s\u01a1 \u0111\u1ed3, c\u00e1c \u0111\u1ed9i c\u00f3 th\u1ec3 chu\u1ea9n h\u00f3a tr\u00ean m\u1ed9t tr\u00ecnh so\u1ea1n th\u1ea3o duy nh\u1ea5t, t\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n v\u00e0 hi\u1ec3n th\u1ecb t\u1eebng c\u00fa ph\u00e1p.<\/p>\n<h3 data-nodeid=\"30824\">C\u00e1c kh\u1ea3 n\u0103ng ch\u00ednh nh\u00ecn nhanh<\/h3>\n<table data-nodeid=\"30826\">\n<thead data-nodeid=\"30827\">\n<tr data-nodeid=\"30828\">\n<th data-nodeid=\"30830\">T\u00ednh n\u0103ng<\/th>\n<th data-nodeid=\"30831\">M\u00f4 t\u1ea3<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"30834\">\n<tr data-nodeid=\"30835\">\n<td data-nodeid=\"30836\"><strong data-nodeid=\"31071\">H\u1ed7 tr\u1ee3 \u0111a \u0111\u1ed9ng c\u01a1<\/strong><\/td>\n<td data-nodeid=\"30837\">H\u1ed7 tr\u1ee3 \u0111\u1ea7y \u0111\u1ee7 c\u00fa ph\u00e1p cho Mermaid, PlantUML v\u00e0 Graphviz trong m\u1ed9t tr\u00ecnh so\u1ea1n th\u1ea3o<\/td>\n<\/tr>\n<tr data-nodeid=\"30838\">\n<td data-nodeid=\"30839\"><strong data-nodeid=\"31076\">Xem tr\u01b0\u1edbc th\u1eddi gian th\u1ef1c<\/strong><\/td>\n<td data-nodeid=\"30840\">Hi\u1ec3n th\u1ecb ngay l\u1eadp t\u1ee9c v\u1edbi \u0111\u1ed9 ch\u00ednh x\u00e1c cao khi b\u1ea1n g\u00f5<\/td>\n<\/tr>\n<tr data-nodeid=\"30841\">\n<td data-nodeid=\"30842\"><strong data-nodeid=\"31081\">S\u1eeda l\u1ed7i m\u00e3 b\u1eb1ng AI<\/strong><\/td>\n<td data-nodeid=\"30843\">Ph\u00e1t hi\u1ec7n v\u00e0 s\u1eeda l\u1ed7i c\u00fa ph\u00e1p ngay l\u1eadp t\u1ee9c<\/td>\n<\/tr>\n<tr data-nodeid=\"30844\">\n<td data-nodeid=\"30845\"><strong data-nodeid=\"31086\">Chuy\u1ec3n \u0111\u1ed5i s\u01a1 \u0111\u1ed3 b\u1eb1ng AI<\/strong><\/td>\n<td data-nodeid=\"30846\">Chuy\u1ec3n \u0111\u1ed5i nh\u00e3n v\u0103n b\u1ea3n th\u00e0nh nhi\u1ec1u ng\u00f4n ng\u1eef cho c\u00e1c \u0111\u1ed9i ng\u0169 to\u00e0n c\u1ea7u<\/td>\n<\/tr>\n<tr data-nodeid=\"30847\">\n<td data-nodeid=\"30848\"><strong data-nodeid=\"31091\">Kh\u00f4ng c\u1ea7n c\u00e0i \u0111\u1eb7t<\/strong><\/td>\n<td data-nodeid=\"30849\">D\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t, kh\u00f4ng c\u1ea7n c\u00e0i \u0111\u1eb7t<\/td>\n<\/tr>\n<tr data-nodeid=\"30850\">\n<td data-nodeid=\"30851\"><strong data-nodeid=\"31096\">T\u00edch h\u1ee3p Git<\/strong><\/td>\n<td data-nodeid=\"30852\">C\u00e1c t\u1ec7p ngu\u1ed3n s\u01a1 \u0111\u1ed3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00f9ng v\u1edbi m\u00e3 ngu\u1ed3n<\/td>\n<\/tr>\n<tr data-nodeid=\"30853\">\n<td data-nodeid=\"30854\"><strong data-nodeid=\"31101\">T\u00edch h\u1ee3p v\u1edbi lu\u1ed3ng OpenDocs<\/strong><\/td>\n<td data-nodeid=\"30855\">G\u1eedi m\u1ed9t l\u1ea7n nh\u1ea5p t\u1edbi t\u00e0i li\u1ec7u v\u1edbi theo d\u00f5i phi\u00ean b\u1ea3n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"30856\"\/>\n<h2 data-nodeid=\"30857\">C\u00e1c \u0111\u1ed9ng c\u01a1 \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3: B\u1ea1n c\u00f3 th\u1ec3 x\u00e2y d\u1ef1ng \u0111i\u1ec1u g\u00ec?<\/h2>\n<p data-nodeid=\"30858\">VPasCode h\u1ed7 tr\u1ee3 ba \u0111\u1ed9ng c\u01a1 chuy\u1ec3n \u0111\u1ed5i v\u0103n b\u1ea3n th\u00e0nh s\u01a1 \u0111\u1ed3 m\u00e3 ngu\u1ed3n m\u1edf ch\u00ednh y\u1ebfu:<\/p>\n<h3 data-nodeid=\"30859\">H\u1ed7 tr\u1ee3 Mermaid.js<\/h3>\n<p data-nodeid=\"30860\">Mermaid l\u00fd t\u01b0\u1edfng cho c\u00e1c s\u01a1 \u0111\u1ed3 hi\u1ec7n \u0111\u1ea1i, l\u1ea5y c\u1ea3m h\u1ee9ng t\u1eeb Markdown. VPasCode h\u1ed7 tr\u1ee3:<\/p>\n<ul data-nodeid=\"30861\">\n<li data-nodeid=\"30862\">\n<p data-nodeid=\"30863\">S\u01a1 \u0111\u1ed3 lu\u1ed3ng v\u00e0 s\u01a1 \u0111\u1ed3 t\u01b0 duy<\/p>\n<\/li>\n<li data-nodeid=\"30864\">\n<p data-nodeid=\"30865\">S\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1 v\u00e0 s\u01a1 \u0111\u1ed3 l\u1edbp<\/p>\n<\/li>\n<li data-nodeid=\"30866\">\n<p data-nodeid=\"30867\">S\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 (ERD)<\/p>\n<\/li>\n<li data-nodeid=\"30868\">\n<p data-nodeid=\"30869\">M\u00f4 h\u00ecnh C4<\/p>\n<\/li>\n<li data-nodeid=\"30870\">\n<p data-nodeid=\"30871\">S\u01a1 \u0111\u1ed3 Gantt, d\u00f2ng th\u1eddi gian v\u00e0 b\u1ea3ng Kanban<\/p>\n<\/li>\n<li data-nodeid=\"30872\">\n<p data-nodeid=\"30873\">H\u00e0nh tr\u00ecnh ng\u01b0\u1eddi d\u00f9ng v\u00e0 s\u01a1 \u0111\u1ed3 Git<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"30874\">H\u1ed7 tr\u1ee3 PlantUML<\/h3>\n<p data-nodeid=\"30875\">PlantUML n\u1ed5i b\u1eadt trong vi\u1ec7c t\u1ea1o b\u1ea3n v\u1ebd s\u01a1 \u0111\u1ed3 ph\u1ea7n m\u1ec1m m\u1ea1nh m\u1ebd:<\/p>\n<ul data-nodeid=\"30876\">\n<li data-nodeid=\"30877\">\n<p data-nodeid=\"30878\">S\u01a1 \u0111\u1ed3 l\u1edbp UML, s\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1 v\u00e0 s\u01a1 \u0111\u1ed3 tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng<\/p>\n<\/li>\n<li data-nodeid=\"30879\">\n<p data-nodeid=\"30880\">M\u00f4 h\u00ecnh C4 v\u00e0 ArchiMate<\/p>\n<\/li>\n<li data-nodeid=\"30881\">\n<p data-nodeid=\"30882\">S\u01a1 \u0111\u1ed3 ho\u1ea1t \u0111\u1ed9ng v\u00e0 s\u01a1 \u0111\u1ed3 tr\u1ea1ng th\u00e1i<\/p>\n<\/li>\n<li data-nodeid=\"30883\">\n<p data-nodeid=\"30884\">S\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n v\u00e0 s\u01a1 \u0111\u1ed3 tri\u1ec3n khai<\/p>\n<\/li>\n<li data-nodeid=\"30885\">\n<p data-nodeid=\"30886\">ERD (bao g\u1ed3m k\u00fd hi\u1ec7u Chen)<\/p>\n<\/li>\n<li data-nodeid=\"30887\">\n<p data-nodeid=\"30888\">B\u1ed1 tr\u00ed m\u1ea1ng v\u00e0 s\u01a1 \u0111\u1ed3 ph\u00e2n c\u1ea5p c\u00f4ng vi\u1ec7c (WBS)<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"30889\">H\u1ed7 tr\u1ee3 Graphviz<\/h3>\n<p data-nodeid=\"30890\">Graphviz x\u1eed l\u00fd c\u00e1c c\u1ea5u tr\u00fac m\u1ea1ng ph\u1ee9c t\u1ea1p v\u00e0 c\u00e1c c\u1ea5u tr\u00fac ph\u1ee5 thu\u1ed9c b\u1eb1ng ng\u00f4n ng\u1eef DOT:<\/p>\n<ul data-nodeid=\"30891\">\n<li data-nodeid=\"30892\">\n<p data-nodeid=\"30893\">\u0110\u1ed3 th\u1ecb c\u00f3 h\u01b0\u1edbng v\u00e0 \u0111\u1ed3 th\u1ecb chu\u1ea9n<\/p>\n<\/li>\n<li data-nodeid=\"30894\">\n<p data-nodeid=\"30895\">S\u01a1 \u0111\u1ed3 t\u1ed5 ch\u1ee9c<\/p>\n<\/li>\n<li data-nodeid=\"30896\">\n<p data-nodeid=\"30897\">S\u01a1 \u0111\u1ed3 c\u1ee5m<\/p>\n<\/li>\n<li data-nodeid=\"30898\">\n<p data-nodeid=\"30899\">S\u01a1 \u0111\u1ed3 lu\u1ed3ng d\u1eef li\u1ec7u<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"30900\"\/>\n<h2 data-nodeid=\"30901\">V\u00ed d\u1ee5 th\u1ef1c t\u1ebf: Mermaid \u0111ang ho\u1ea1t \u0111\u1ed9ng<\/h2>\n<p data-nodeid=\"30902\">D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u1ec1 Mermaid ph\u1ea3n \u00e1nh nhu c\u1ea7u t\u00e0i li\u1ec7u h\u00f3a th\u1ef1c t\u1ebf, t\u1ea5t c\u1ea3 \u0111\u1ec1u t\u01b0\u01a1ng th\u00edch v\u1edbi VPasCode.<\/p>\n<h3 data-nodeid=\"30903\">1. S\u01a1 \u0111\u1ed3 lu\u1ed3ng ki\u1ebfn tr\u00fac Microservice<\/h3>\n<p data-nodeid=\"30904\">S\u01a1 \u0111\u1ed3 n\u00e0y cho th\u1ea5y lu\u1ed3ng y\u00eau c\u1ea7u ti\u00eau chu\u1ea9n trong m\u00f4i tr\u01b0\u1eddng \u0111\u00e1m m\u00e2y th\u00f4ng qua API Gateway, m\u1ea1ng d\u1ecbch v\u1ee5 v\u00e0 c\u00e1c l\u1edbp c\u01a1 s\u1edf d\u1eef li\u1ec7u:<\/p>\n<p id=\"RUpeOWw\"><img alt=\"\" class=\"alignnone size-full wp-image-25256\" decoding=\"async\" height=\"777\" loading=\"lazy\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504f91a1320.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504f91a1320.png 830w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504f91a1320-300x281.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504f91a1320-768x719.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504f91a1320-150x140.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504f91a1320-400x374.png 400w\" width=\"830\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#mermaid:eNptUl1rgzAUfR\/sPwT6soFldausLWNQJ2yFditrYQ+hD1FvaqhrRrQtgj9+RpNoVR+uyT3345zcS2N+CSIiUrR1b29Q8b3FDI4p\/gH\/YcV9FoPy7NBw+Jp\/bLfrTY7eSQoXkuH5eqHPuyq9ssnJ3wvyF6ENiDMLIMErFgieqBtakgyEypBfyAQEKeNHtPyuvfNTGmFpdJlGxpcIQeDS9qBrkv1KFerfE7E4nguAiwybUysKjmGvJI+kBEvTUSGpei6+Kyl77n2brsQqxtegYilhTfg6wFCUITXfOqjFVY1ETqwk1fWWNLpu1b4LmKbNNqVO3cNT+1MJND20WwtrdNFQLeiqk4abZV96uDQq58XWRpwfcvTJU0ZZQORO4ealNeTKBjFJEg8o2ivJlMXxbAA2dShYSSr4AWaDke08T\/1WhlpplUGfwKGOyRgTezwJWhmhr8tPqANTE2z7DjyOOrTMGBS3JiTf3SpfxlKvYJnHsa5UK5rtZM+11JQsMxSrMYGC7D85aTiT\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/#mermaid:eNp1U0Fr2zAUvg\/2Hx70soDLmq1mbRmDpoattNvCGtjA5CDbciTqSUVWUgK577BLdxw7bD7sPAaDQX102P\/QP5mcyI5sJzoY8977vvd9T09xwm9DgoSE0eDhA9DnLKGYSf+CFFlIgBQ\/2ATe4+Dx8o6q\/BMDSbi6zyhEFJZfVP6VTcawv\/9i8Wo0Gl4t4CWS+BbN\/dPhefU\/XhOvv+k0mAh0Q+AKixkNcepfqvzbDbymoeDpOmYA5YmowKGknMHlu030dCqJ76n8s1Y4U\/lP+KDFamUq\/x1a4LciwqJRt7xT93\/l2pVVOETzj6Vpu3REECMgeZExq\/KczXQhF\/NG7QXhDU7Moq2ePSSR8avhvyApRzodN415A\/\/R2b8MUpV\/h2hTZpvstV3uBNmOe13LO3GW\/d42\/zuB9Sx624dhlqLcmZXdbnRlqBs2iruJWpPdpqSue3hmt1fMmx5V2DDbXapUzd3sVKVt2udbtFjMC\/2ICOfXC3jDJY1piMq1bq1c8Ue\/tqDIeOPNhAlKUw\/HMDGuY5okJ3u4H7sxdlIp+DU+2Tvou8+OgxbCvCiDiJ9iN3ZrxCHqHx6FLUQUVPRHsYuP6+J+4OInBx1Z9U0YbXaqHL2zGo5jBuHU83HsKVQy22Bv4JiLcup7caxL0GL\/A3j1nWc=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\" data-nodeid=\"30905\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">flowchart TB\r\n    Client[Kh\u00e1ch h\u00e0ng Web\/\u0110i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng] --&gt;|HTTPS| Gateway[API Gateway]\r\n    \r\n    subgraph Services[L\u1edbp Microservice]\r\n        direction LR\r\n        Auth[D\u1ecbch v\u1ee5 X\u00e1c th\u1ef1c]\r\n        Order[D\u1ecbch v\u1ee5 \u0110\u1eb7t h\u00e0ng]\r\n        Payment[D\u1ecbch v\u1ee5 Thanh to\u00e1n]\r\n        Inventory[D\u1ecbch v\u1ee5 Kho h\u00e0ng]\r\n    end\r\n    \r\n    subgraph Data[L\u1edbp D\u1eef li\u1ec7u]\r\n        AuthDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u X\u00e1c th\u1ef1c)]\r\n        OrderDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u \u0110\u1eb7t h\u00e0ng)]\r\n        PaymentDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u Thanh to\u00e1n)]\r\n        InventoryDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u Kho h\u00e0ng)]\r\n    end\r\n    \r\n    Gateway --&gt; Auth\r\n    Gateway --&gt; Order\r\n    Gateway --&gt; Payment\r\n    Gateway --&gt; Inventory\r\n    \r\n    Auth --&gt; AuthDB\r\n    Order --&gt; OrderDB\r\n    Payment --&gt; PaymentDB\r\n    Inventory --&gt; InventoryDB\r\n    \r\n    Order &lt;--&gt; Inventory\r\n    Payment --&gt;|Webhook| Notification[D\u1ecbch v\u1ee5 Th\u00f4ng b\u00e1o]\r\n    \r\n    classDef gateway fill:#e1f5fe,stroke:#01579b\r\n    classDef service fill:#f3e5f5,stroke:#4a148c\r\n    classDef db fill:#e8f5e9,stroke:#1b5e20\r\n    \r\n    class Gateway gateway\r\n    class Auth,Order,Payment,Inventory,Notification service\r\n    class AuthDB,OrderDB,PaymentDB,InventoryDB db\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#mermaid:eNp1U0Fr2zAUvg\/2Hx70soDLmq1mbRmDpoattNvCGtjA5CDbciTqSUVWUgK577BLdxw7bD7sPAaDQX102P\/QP5mcyI5sJzoY8977vvd9T09xwm9DgoSE0eDhA9DnLKGYSf+CFFlIgBQ\/2ATe4+Dx8o6q\/BMDSbi6zyhEFJZfVP6VTcawv\/9i8Wo0Gl4t4CWS+BbN\/dPhefU\/XhOvv+k0mAh0Q+AKixkNcepfqvzbDbymoeDpOmYA5YmowKGknMHlu030dCqJ76n8s1Y4U\/lP+KDFamUq\/x1a4LciwqJRt7xT93\/l2pVVOETzj6Vpu3REECMgeZExq\/KczXQhF\/NG7QXhDU7Moq2ePSSR8avhvyApRzodN415A\/\/R2b8MUpV\/h2hTZpvstV3uBNmOe13LO3GW\/d42\/zuB9Sx624dhlqLcmZXdbnRlqBs2iruJWpPdpqSue3hmt1fMmx5V2DDbXapUzd3sVKVt2udbtFjMC\/2ICOfXC3jDJY1piMq1bq1c8Ue\/tqDIeOPNhAlKUw\/HMDGuY5okJ3u4H7sxdlIp+DU+2Tvou8+OgxbCvCiDiJ9iN3ZrxCHqHx6FLUQUVPRHsYuP6+J+4OInBx1Z9U0YbXaqHL2zGo5jBuHU83HsKVQy22Bv4JiLcup7caxL0GL\/A3j1nWc=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#mermaid:eNptUl1rgzAUfR\/sPwT6soFldausLWNQJ2yFditrYQ+hD1FvaqhrRrQtgj9+RpNoVR+uyT3345zcS2N+CSIiUrR1b29Q8b3FDI4p\/gH\/YcV9FoPy7NBw+Jp\/bLfrTY7eSQoXkuH5eqHPuyq9ssnJ3wvyF6ENiDMLIMErFgieqBtakgyEypBfyAQEKeNHtPyuvfNTGmFpdJlGxpcIQeDS9qBrkv1KFerfE7E4nguAiwybUysKjmGvJI+kBEvTUSGpei6+Kyl77n2brsQqxtegYilhTfg6wFCUITXfOqjFVY1ETqwk1fWWNLpu1b4LmKbNNqVO3cNT+1MJND20WwtrdNFQLeiqk4abZV96uDQq58XWRpwfcvTJU0ZZQORO4ealNeTKBjFJEg8o2ivJlMXxbAA2dShYSSr4AWaDke08T\/1WhlpplUGfwKGOyRgTezwJWhmhr8tPqANTE2z7DjyOOrTMGBS3JiTf3SpfxlKvYJnHsa5UK5rtZM+11JQsMxSrMYGC7D85aTiT\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"30906\"><strong data-nodeid=\"31135\">Tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng<\/strong>: T\u00e0i li\u1ec7u ki\u1ebfn tr\u00fac d\u00e0nh cho th\u00e0nh vi\u00ean m\u1edbi trong nh\u00f3m ho\u1eb7c \u0111\u00e1nh gi\u00e1 thi\u1ebft k\u1ebf h\u1ec7 th\u1ed1ng.<\/p>\n<hr data-nodeid=\"30907\"\/>\n<h3 data-nodeid=\"30908\">2. S\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1 x\u00e1c th\u1ef1c ng\u01b0\u1eddi d\u00f9ng<\/h3>\n<p data-nodeid=\"30909\">S\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1 n\u00e0y ghi l\u1ea1i lu\u1ed3ng \u0111\u0103ng nh\u1eadp v\u1edbi vi\u1ec7c c\u1ea5p token v\u00e0 x\u1eed l\u00fd l\u1ed7i:<\/p>\n<p id=\"NVnyOCR\"><img alt=\"\" class=\"alignnone size-full wp-image-25257\" decoding=\"async\" height=\"842\" loading=\"lazy\" sizes=\"auto, (max-width: 1317px) 100vw, 1317px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fa822bc1.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fa822bc1.png 1317w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fa822bc1-300x192.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fa822bc1-1030x659.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fa822bc1-768x491.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fa822bc1-150x96.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fa822bc1-400x256.png 400w\" width=\"1317\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#mermaid:eNqFkk1PwzAMhu9I\/AdrpyE0dUOcekDaVpAAicG6wdlrTRvRJcVJN41fT9K06z6Q6CFp0sd+X9vV9F2RTCgSmDGuLy\/APpgYxbDUxP5cIhuRiBKlgQdW0pBMAXX3Pi7Lc3JcmdxR9R4Tb0RC51Q0cYzTgggNrlD\/AU0xyclxc0qF9kdP+dWFD+7uWj8h3NudIWFKSRqBhYY+rVEUQYlabxWnVz6wjbDBzmYIr7N4AQGWItiMgkJlQh7qOMai0SSEt4p4B5XzvdpBndwz0WSwzzYnU7H0FFNidaGfo84phRMjTeMLA+9YiBSmnXX\/6UC+Lj+E2A6JQJPWQkkw6otkh9ZMZyRuKNsRNJSepDxq3c1wCLNnuIanjwUsjrPu22UjXM\/DeiC2MmP17fx0vlLITXoqNMGj3PxTz5H47XAES4n2XrH4OTR6Lh3nagvEbH\/VtS0PM+roF2UIWGS5AfUJnu+1XuphgQ1rZ9BrDMv0F1cA7o4=\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/#mermaid:eNqNU02L01AU3Qv+h8OsZpChHXGVxYBtFXGkM2hAt2\/SZ96jyUsmfSnMsszCxaxciQyDliI6gjiiICYLFxn6P94\/8b7EfqSlaKFtknfPueecezPgJylXHu9I5icsvH0L9GGejhJ0\/em1yS8lesUv5VcnMUu09GTMlMbDJFKaqx6C4j1M\/kn56Jn8A\/3NTtYx91MtyvqOyc89gSEB8KIYe9DC5N+8dUSnVda3p2MMTP7OtviKQJr8VfpPhW3mCV7CWyZ\/C0UtLnDzmrAhnvKeHFSQ6rdOtru\/P3PhoCtM9iUmicUPcqelIpKbM7pU1cE2D5kMGiHdaPTp2VW6U5HOOIjOWndwdPjMRYPFsjHcawSRL9WyBltDpZ2WAzdh8Ex+lULVhJEKHqFsWGE6rd05u5uYbGJDHeGYrhR8IVfx28syyUgxQUhfUXxnO8taWKDhbnJMSU5iBJRkVbwkvgzdwZPpdQod9blCLGTxWdk5hBjayXkLUFm9MHC0VkqNrfwJbYjJxtFKu9qY7jabODzAHbhl28fP3UX1fBCEqE\/aQVukpyY\/UxD2+QW5pB3JfivaGsrQ3pGSUUqRSVtWkfJgwDfn068ONsZU032vuYeDCjA3a\/KPpzixukbq\/1w8KsWV79H5bFWPi3Fk27+RC45upDkS6QuN6CVWWbYe2M2CiEz200NtVfoziUWm\/K2\/KajeH1zQtDE=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\" data-nodeid=\"30910\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">sequenceDiagram\r\n    actor Ng\u01b0\u1eddi d\u00f9ng\r\n    participant Frontend l\u00e0 \u1ee8ng d\u1ee5ng Frontend\r\n    participant Auth l\u00e0 D\u1ecbch v\u1ee5 X\u00e1c th\u1ef1c\r\n    participant DB l\u00e0 C\u01a1 s\u1edf d\u1eef li\u1ec7u Ng\u01b0\u1eddi d\u00f9ng\r\n    participant Cache l\u00e0 B\u1ed9 nh\u1edb \u0111\u1ec7m Redis\r\n    \r\n    Ng\u01b0\u1eddi d\u00f9ng-&gt;&gt;Frontend: Nh\u1eadp th\u00f4ng tin \u0111\u0103ng nh\u1eadp (email\/m\u1eadt kh\u1ea9u)\r\n    Frontend-&gt;&gt;Auth: POST \/api\/v1\/login\r\n    \r\n    Auth-&gt;&gt;DB: Tra c\u1ee9u ng\u01b0\u1eddi d\u00f9ng theo email\r\n    DB--&gt;&gt;Auth: Tr\u1ea3 v\u1ec1 b\u1ea3n ghi ng\u01b0\u1eddi d\u00f9ng (m\u1eadt kh\u1ea9u \u0111\u00e3 m\u00e3 h\u00f3a)\r\n    \r\n    alt Th\u00f4ng tin \u0111\u0103ng nh\u1eadp h\u1ee3p l\u1ec7\r\n        Auth-&gt;&gt;Cache: L\u01b0u token phi\u00ean l\u00e0m vi\u1ec7c\r\n        Cache--&gt;&gt;Auth: Phi\u00ean l\u00e0m vi\u1ec7c \u0111\u01b0\u1ee3c t\u1ea1o\r\n        Auth--&gt;&gt;Frontend: 200 OK + Token JWT\r\n        Frontend--&gt;&gt;Ng\u01b0\u1eddi d\u00f9ng: Chuy\u1ec3n h\u01b0\u1edbng \u0111\u1ebfn B\u1ea3ng \u0111i\u1ec1u khi\u1ec3n\r\n    else Th\u00f4ng tin \u0111\u0103ng nh\u1eadp kh\u00f4ng h\u1ee3p l\u1ec7\r\n        Auth--&gt;&gt;Frontend: 401 Kh\u00f4ng \u0111\u01b0\u1ee3c \u1ee7y quy\u1ec1n\r\n        Frontend--&gt;&gt;Ng\u01b0\u1eddi d\u00f9ng: Hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o l\u1ed7i\r\n        Note right of Ng\u01b0\u1eddi d\u00f9ng: \"Email ho\u1eb7c m\u1eadt kh\u1ea9u kh\u00f4ng \u0111\u00fang\"\r\n    end\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#mermaid:eNqNU02L01AU3Qv+h8OsZpChHXGVxYBtFXGkM2hAt2\/SZ96jyUsmfSnMsszCxaxciQyDliI6gjiiICYLFxn6P94\/8b7EfqSlaKFtknfPueecezPgJylXHu9I5icsvH0L9GGejhJ0\/em1yS8lesUv5VcnMUu09GTMlMbDJFKaqx6C4j1M\/kn56Jn8A\/3NTtYx91MtyvqOyc89gSEB8KIYe9DC5N+8dUSnVda3p2MMTP7OtviKQJr8VfpPhW3mCV7CWyZ\/C0UtLnDzmrAhnvKeHFSQ6rdOtru\/P3PhoCtM9iUmicUPcqelIpKbM7pU1cE2D5kMGiHdaPTp2VW6U5HOOIjOWndwdPjMRYPFsjHcawSRL9WyBltDpZ2WAzdh8Ex+lULVhJEKHqFsWGE6rd05u5uYbGJDHeGYrhR8IVfx28syyUgxQUhfUXxnO8taWKDhbnJMSU5iBJRkVbwkvgzdwZPpdQod9blCLGTxWdk5hBjayXkLUFm9MHC0VkqNrfwJbYjJxtFKu9qY7jabODzAHbhl28fP3UX1fBCEqE\/aQVukpyY\/UxD2+QW5pB3JfivaGsrQ3pGSUUqRSVtWkfJgwDfn068ONsZU032vuYeDCjA3a\/KPpzixukbq\/1w8KsWV79H5bFWPi3Fk27+RC45upDkS6QuN6CVWWbYe2M2CiEz200NtVfoziUWm\/K2\/KajeH1zQtDE=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#mermaid:eNqFkk1PwzAMhu9I\/AdrpyE0dUOcekDaVpAAicG6wdlrTRvRJcVJN41fT9K06z6Q6CFp0sd+X9vV9F2RTCgSmDGuLy\/APpgYxbDUxP5cIhuRiBKlgQdW0pBMAXX3Pi7Lc3JcmdxR9R4Tb0RC51Q0cYzTgggNrlD\/AU0xyclxc0qF9kdP+dWFD+7uWj8h3NudIWFKSRqBhYY+rVEUQYlabxWnVz6wjbDBzmYIr7N4AQGWItiMgkJlQh7qOMai0SSEt4p4B5XzvdpBndwz0WSwzzYnU7H0FFNidaGfo84phRMjTeMLA+9YiBSmnXX\/6UC+Lj+E2A6JQJPWQkkw6otkh9ZMZyRuKNsRNJSepDxq3c1wCLNnuIanjwUsjrPu22UjXM\/DeiC2MmP17fx0vlLITXoqNMGj3PxTz5H47XAES4n2XrH4OTR6Lh3nagvEbH\/VtS0PM+roF2UIWGS5AfUJnu+1XuphgQ1rZ9BrDMv0F1cA7o4=\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"30911\"><strong data-nodeid=\"31142\">Tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng<\/strong>: T\u00e0i li\u1ec7u API, ki\u1ec3m tra b\u1ea3o m\u1eadt ho\u1eb7c h\u01b0\u1edbng d\u1eabn kh\u1edfi \u0111\u1ea7u cho k\u1ef9 s\u01b0 backend.<\/p>\n<hr data-nodeid=\"30912\"\/>\n<h3 data-nodeid=\"30913\">3. S\u01a1 \u0111\u1ed3 lu\u1ed3ng pipeline CI\/CD<\/h3>\n<p data-nodeid=\"30914\">V\u00ed d\u1ee5 n\u00e0y m\u00f4 ph\u1ecfng m\u1ed9t pipeline tri\u1ec3n khai v\u1edbi c\u00e1c giai \u0111o\u1ea1n \u0111i\u1ec1u ki\u1ec7n:<\/p>\n<p id=\"NqwZXbv\"><img alt=\"\" class=\"alignnone size-full wp-image-25258\" decoding=\"async\" height=\"346\" loading=\"lazy\" sizes=\"auto, (max-width: 1838px) 100vw, 1838px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc.png 1838w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc-300x56.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc-1030x194.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc-768x145.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc-1536x289.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc-150x28.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a504fc64ebdc-400x75.png 400w\" width=\"1838\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#mermaid:eNptUk1rAjEQvRf6HwJCT1vwA0U8FLZKQbAg2lvwEJOJBmOy5MMi7I\/vbrK7jdvmEDKT92bevIRL\/U3PxDi02T0\/oWpZfzwZUpzRco2XWjmhvPYWrZWDKu+EVocIrNdGKIfrDb2gL7DugF5f39C7F5LhsKPcOMEJdQkpXtTAPSUK74F6I9w9RA0MFIuHvqZVqmkFhdT3K6i0ekzuHTkJdcIxQk6jJhMUlrl3+kocsBLtvKqVW5xMGGaxSdEWFMhbYm2J8qIw+kYk\/iTKE9nFCatNxZYhgLIRuDWaJerq0NOeuw9dP4iQlVot5ZHQC24PkQw3URnyv3m1rYnuB396iNgjl2AcDntlBLke0mpUVlVWwBEViAspFwOY8DFnmXVGX2AxGE1nUzrsg1kD5pxPYNiBYTYdDftgBlTY+hVaChwBOgqdjefj+R9J4Stm4WtlYR4q0tuHqbPW2Oz3LbLOUMpSYvuGWfSj1fYDA84DEA==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/#mermaid:eNp1kzFr20AUx\/dCv8ODQCcFHAebkKGQxkNLM6SJhoLwIJ1OusPnOyGd0hq8lA5d27GUQNxgSgKGFjJZ46X9HvdNejpbqqQmN0no9977\/\/\/vFDHxDhE\/lXBy9vQJmJPlQZz6CYHjV56rVogA0cV1AoyqWw5SF0s03pDlOaFcesdErxczmFBdfJyCTH14Bq+3L6Z4NYbd3efwIqcs9N6q7zMIdfGLxyDVFYVMr695o6PFbME58rn3Jlc3EgIDCZjq9UpuUczDzUNX9chz03I2hwnx6SOyRzhhYnYu\/ZjyuFNQ8lN1R42RPz91cVkKLV0Aj4nhPk2tnblrPMD9F1185fEcznLu4kxmnttCjcU6wcb4iraN7j+b9OQcjpIkFRc+806JuoUwn5kG0o7+AUjd8bjRoGJtgzL+ZWLI3OTD51tzp6kIH3Bm44b3Bl3KxxS5ZUMb+oIaa4KxwEcT76VQVyZKtUBwoYsPkBCbbWA7bsL6hh5eT7nKltnWAjpMe\/wRw6k0sZYJQKAWAhARm+Cpyfn3zbg5CDE\/y0Y4AkQhoowd7uD9qB+FTiZTMcGHO3uD4QD1unC4haMo2se9GsbDwV6vC4cY0YwKXpfgAOO6BA37B\/2D\/yTZH8Wxd9uxRhFtfm3F4VTLcP5t0qm2YLQ2C6uL4NiYam1\/AXsAcIs=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\" data-nodeid=\"30915\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">flowchart LR\r\n    subgraph CI[T\u00edch h\u1ee3p li\u00ean t\u1ee5c]\r\n        Lint[Ch\u1ea1y ki\u1ec3m tra &amp; Ki\u1ec3m th\u1eed] --&gt; Build[X\u00e2y d\u1ef1ng t\u00e0i s\u1ea3n]\r\n        Build --&gt; Scan[Qu\u00e9t b\u1ea3o m\u1eadt]\r\n    end\r\n    \r\n    subgraph CD[Tri\u1ec3n khai li\u00ean t\u1ee5c]\r\n        DeployStaging[Tri\u1ec3n khai l\u00ean m\u00f4i tr\u01b0\u1eddng th\u1eed nghi\u1ec7m] --&gt;|T\u1ef1 \u0111\u1ed9ng| RunTests[Th\u1eed nghi\u1ec7m t\u00edch h\u1ee3p]\r\n        RunTests --&gt;|\u0110\u1ea1t| Approval[Ph\u00ea duy\u1ec7t th\u1ee7 c\u00f4ng]\r\n        Approval --&gt;|Ch\u1ea5p thu\u1eadn| DeployProd[Tri\u1ec3n khai l\u00ean s\u1ea3n xu\u1ea5t]\r\n        RunTests --&gt;|Th\u1ea5t b\u1ea1i| Rollback[Ho\u00e0n t\u00e1c v\u1ec1 phi\u00ean b\u1ea3n tr\u01b0\u1edbc]\r\n    end\r\n    \r\n    Scan --&gt;|\u0110\u1ea1t| DeployStaging\r\n    Scan --&gt;|Th\u1ea5t b\u1ea1i| Alert[Th\u00f4ng b\u00e1o cho \u0111\u1ed9i ng\u0169]\r\n    \r\n    classDef ci fill:#e3f2fd,stroke:#1565c0\r\n    classDef cd fill:#fff3e0,stroke:#e65100\r\n    classDef decision fill:#ffebee,stroke:#c62828\r\n    \r\n    class Lint,Build,Scan ci\r\n    class DeployStaging,RunTests,DeployProd,Rollback cd\r\n    class Approval,Alert decision\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#mermaid:eNp1kzFr20AUx\/dCv8ODQCcFHAebkKGQxkNLM6SJhoLwIJ1OusPnOyGd0hq8lA5d27GUQNxgSgKGFjJZ46X9HvdNejpbqqQmN0no9977\/\/\/vFDHxDhE\/lXBy9vQJmJPlQZz6CYHjV56rVogA0cV1AoyqWw5SF0s03pDlOaFcesdErxczmFBdfJyCTH14Bq+3L6Z4NYbd3efwIqcs9N6q7zMIdfGLxyDVFYVMr695o6PFbME58rn3Jlc3EgIDCZjq9UpuUczDzUNX9chz03I2hwnx6SOyRzhhYnYu\/ZjyuFNQ8lN1R42RPz91cVkKLV0Aj4nhPk2tnblrPMD9F1185fEcznLu4kxmnttCjcU6wcb4iraN7j+b9OQcjpIkFRc+806JuoUwn5kG0o7+AUjd8bjRoGJtgzL+ZWLI3OTD51tzp6kIH3Bm44b3Bl3KxxS5ZUMb+oIaa4KxwEcT76VQVyZKtUBwoYsPkBCbbWA7bsL6hh5eT7nKltnWAjpMe\/wRw6k0sZYJQKAWAhARm+Cpyfn3zbg5CDE\/y0Y4AkQhoowd7uD9qB+FTiZTMcGHO3uD4QD1unC4haMo2se9GsbDwV6vC4cY0YwKXpfgAOO6BA37B\/2D\/yTZH8Wxd9uxRhFtfm3F4VTLcP5t0qm2YLQ2C6uL4NiYam1\/AXsAcIs=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#mermaid:eNptUk1rAjEQvRf6HwJCT1vwA0U8FLZKQbAg2lvwEJOJBmOy5MMi7I\/vbrK7jdvmEDKT92bevIRL\/U3PxDi02T0\/oWpZfzwZUpzRco2XWjmhvPYWrZWDKu+EVocIrNdGKIfrDb2gL7DugF5f39C7F5LhsKPcOMEJdQkpXtTAPSUK74F6I9w9RA0MFIuHvqZVqmkFhdT3K6i0ekzuHTkJdcIxQk6jJhMUlrl3+kocsBLtvKqVW5xMGGaxSdEWFMhbYm2J8qIw+kYk\/iTKE9nFCatNxZYhgLIRuDWaJerq0NOeuw9dP4iQlVot5ZHQC24PkQw3URnyv3m1rYnuB396iNgjl2AcDntlBLke0mpUVlVWwBEViAspFwOY8DFnmXVGX2AxGE1nUzrsg1kD5pxPYNiBYTYdDftgBlTY+hVaChwBOgqdjefj+R9J4Stm4WtlYR4q0tuHqbPW2Oz3LbLOUMpSYvuGWfSj1fYDA84DEA==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"30916\"><strong data-nodeid=\"31149\">Tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng<\/strong>: T\u00e0i li\u1ec7u DevOps, s\u1ed5 tay thao t\u00e1c v\u00e0 h\u01b0\u1edbng d\u1eabn quy tr\u00ecnh ph\u00e1t h\u00e0nh.<\/p>\n<hr data-nodeid=\"30917\"\/>\n<h2 data-nodeid=\"30918\">T\u00edch h\u1ee3p tr\u1ee3 l\u00fd chatbot AI: T\u1eeb l\u1eddi nh\u1eafc \u0111\u1ebfn s\u01a1 \u0111\u1ed3<\/h2>\n<p data-nodeid=\"30919\">M\u1ed9t trong nh\u1eefng t\u00ednh n\u0103ng m\u1ea1nh m\u1ebd nh\u1ea5t c\u1ee7a VPasCode l\u00e0 t\u00edch h\u1ee3p v\u1edbi tr\u1ee3 l\u00fd chatbot AI c\u1ee7a Visual Paradigm. \u0110i\u1ec1u n\u00e0y t\u1ea1o ra quy tr\u00ecnh l\u00e0m vi\u1ec7c hai giai \u0111o\u1ea1n, lo\u1ea1i b\u1ecf v\u1ea5n \u0111\u1ec1 &#8220;trang tr\u1ed1ng&#8221;.<\/p>\n<h3 data-nodeid=\"30920\">Giai \u0111o\u1ea1n 1: S\u00e1ng t\u1ea1o \u00fd t\u01b0\u1edfng v\u1edbi AI<\/h3>\n<p data-nodeid=\"30921\">B\u1ea1n c\u00f3 th\u1ec3 m\u00f4 t\u1ea3 m\u1ed9t h\u1ec7 th\u1ed1ng b\u1eb1ng ng\u00f4n ng\u1eef t\u1ef1 nhi\u00ean, v\u00e0 AI s\u1ebd t\u1ea1o ra c\u1ea5u tr\u00fac s\u01a1 \u0111\u1ed3 ban \u0111\u1ea7u. V\u00ed d\u1ee5:<\/p>\n<blockquote data-nodeid=\"30922\">\n<p data-nodeid=\"30923\"><strong data-nodeid=\"31169\">L\u1eddi nh\u1eafc<\/strong>: \u201cT\u1ea1o s\u01a1 \u0111\u1ed3 tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng cho \u1ee9ng d\u1ee5ng giao \u0111\u1ed3 \u0103n v\u1edbi kh\u00e1ch h\u00e0ng, t\u00e0i x\u1ebf giao h\u00e0ng v\u00e0 ch\u1ee7 nh\u00e0 h\u00e0ng.\u201d<\/p>\n<\/blockquote>\n<p data-nodeid=\"30924\">AI s\u1ebd hi\u1ec3u \u00fd \u0111\u1ecbnh c\u1ee7a b\u1ea1n v\u00e0 t\u1ea1o ra m\u00e3 n\u1ec1n t\u1ea3ng PlantUML ho\u1eb7c Mermaid, \u0111\u1ea7y \u0111\u1ee7 c\u00e1c t\u00e1c nh\u00e2n, tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng v\u00e0 m\u1ed1i quan h\u1ec7.<\/p>\n<h3 data-nodeid=\"30925\">Giai \u0111o\u1ea1n 2: Tinh ch\u1ec9nh trong VPasCode<\/h3>\n<p data-nodeid=\"30926\">\u0110i\u1ec3m then ch\u1ed1t l\u00e0 n\u00fat\u00a0<strong data-nodeid=\"31179\">\u201cM\u1edf trong VPasCode\u201d<\/strong>\u00a0n\u00fat. \u0110i\u1ec1u n\u00e0y xu\u1ea5t logic \u0111\u01b0\u1ee3c t\u1ea1o b\u1edfi AI v\u00e0o tr\u00ecnh ch\u1ec9nh s\u1eeda m\u00e3, n\u01a1i b\u1ea1n c\u00f3 th\u1ec3:<\/p>\n<ul data-nodeid=\"30927\">\n<li data-nodeid=\"30928\">\n<p data-nodeid=\"30929\">\u0110i\u1ec1u ch\u1ec9nh ki\u1ec3u d\u00e1ng (<code data-backticks=\"1\" data-nodeid=\"31181\">skinparam linetype ortho<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"31183\">h\u01b0\u1edbng t\u1eeb tr\u00e1i sang ph\u1ea3i<\/code>)<\/p>\n<\/li>\n<li data-nodeid=\"30930\">\n<p data-nodeid=\"30931\">X\u00e1c \u0111\u1ecbnh th\u1ee7 c\u00f4ng c\u00e1c m\u1ed1i quan h\u1ec7 v\u00e0 c\u00e1c ki\u1ec3u bi\u1ec3u t\u01b0\u1ee3ng<\/p>\n<\/li>\n<li data-nodeid=\"30932\">\n<p data-nodeid=\"30933\">Th\u00eam c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee5 th\u1ec3 m\u00e0 AI c\u00f3 th\u1ec3 \u0111\u00e3 b\u1ecf s\u00f3t<\/p>\n<\/li>\n<li data-nodeid=\"30934\">\n<p data-nodeid=\"30935\">\u00c1p d\u1ee5ng th\u01b0\u01a1ng hi\u1ec7u c\u00f4ng ty v\u00e0 \u0111\u1ecbnh d\u1ea1ng nh\u1ea5t qu\u00e1n<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"30936\">Ph\u01b0\u01a1ng ph\u00e1p lai n\u00e0y gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 m\u00e0 Visual Paradigm g\u1ecdi l\u00e0 \u201cv\u1ea5n \u0111\u1ec1 \u0111o\u1ea1n \u0111\u01b0\u1eddng cu\u1ed1i c\u00f9ng\u201d trong sinh m\u00e3 b\u1eb1ng AI\u2014AI cung c\u1ea5p cho b\u1ea1n b\u1ea3n nh\u00e1p ho\u00e0n th\u00e0nh 90%, v\u00e0 VPasCode gi\u00fap b\u1ea1n ho\u00e0n thi\u1ec7n 10% c\u00f2n l\u1ea1i.<\/p>\n<hr data-nodeid=\"30937\"\/>\n<h2 data-nodeid=\"30938\">S\u1eeda l\u1ed7i b\u1eb1ng AI: Lo\u1ea1i b\u1ecf s\u1ef1 b\u1ef1c b\u1ed9i do l\u1ed7i c\u00fa ph\u00e1p<\/h2>\n<p data-nodeid=\"30939\">M\u1ed9t trong nh\u1eefng r\u00e0o c\u1ea3n ch\u00ednh khi \u00e1p d\u1ee5ng s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 l\u00e0 g\u1ee1 l\u1ed7i c\u00fa ph\u00e1p. M\u1ed9t k\u00fd t\u1ef1 sai v\u1ecb tr\u00ed c\u00f3 th\u1ec3 ng\u0103n s\u01a1 \u0111\u1ed3 \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb. T\u00ednh n\u0103ng c\u1ee7a VPasCode<strong data-nodeid=\"31201\">S\u1eeda l\u1ed7i m\u00e3 b\u1eb1ng AI<\/strong>t\u00ednh n\u0103ng n\u00e0y gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 n\u00e0y b\u1eb1ng quy tr\u00ecnh l\u00e0m vi\u1ec7c li\u1ec1n m\u1ea1ch:<\/p>\n<ol data-nodeid=\"30940\">\n<li data-nodeid=\"30941\">\n<p data-nodeid=\"30942\"><strong data-nodeid=\"31210\">Ph\u00e1t hi\u1ec7n ngay l\u1eadp t\u1ee9c<\/strong>: Khi x\u1ea3y ra l\u1ed7i c\u00fa ph\u00e1p (v\u00ed d\u1ee5: to\u00e1n t\u1eed k\u1ebft n\u1ed1i kh\u00f4ng h\u1ee3p l\u1ec7), VPasCode hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o \u201cKh\u00f4ng th\u1ec3 t\u1ea1o s\u01a1 \u0111\u1ed3\u201d k\u00e8m s\u1ed1 d\u00f2ng c\u1ee5 th\u1ec3.<\/p>\n<\/li>\n<li data-nodeid=\"30943\">\n<p data-nodeid=\"30944\"><strong data-nodeid=\"31221\">S\u1eeda l\u1ed7i ch\u1ec9 b\u1eb1ng m\u1ed9t c\u00fa nh\u1ea5p chu\u1ed9t<\/strong>: M\u1ed9t n\u00fat giao di\u1ec7n \u0111\u01b0\u1ee3c \u0111\u00e1nh nh\u00e3n l\u00e0<strong data-nodeid=\"31222\">\u201cS\u1eeda b\u1eb1ng AI\u201d<\/strong>xu\u1ea5t hi\u1ec7n trong th\u00f4ng b\u00e1o l\u1ed7i.<\/p>\n<\/li>\n<li data-nodeid=\"30945\">\n<p data-nodeid=\"30946\"><strong data-nodeid=\"31227\">X\u1eed l\u00fd b\u1eb1ng AI<\/strong>: M\u1ed9t c\u1eeda s\u1ed5 b\u1eadt l\u00ean x\u00e1c nh\u1eadn AI \u0111ang ph\u00e2n t\u00edch l\u1ed7i, so s\u00e1nh n\u00f3 v\u1edbi c\u00e1c m\u1eabu c\u00fa ph\u00e1p h\u1ee3p l\u1ec7.<\/p>\n<\/li>\n<li data-nodeid=\"30947\">\n<p data-nodeid=\"30948\"><strong data-nodeid=\"31232\">S\u1eeda l\u1ed7i t\u1ef1 \u0111\u1ed9ng<\/strong>: M\u00e3 g\u00e2y v\u1ea5n \u0111\u1ec1 \u0111\u01b0\u1ee3c thay th\u1ebf b\u1eb1ng c\u00fa ph\u00e1p \u0111\u00fang, v\u00e0 s\u01a1 \u0111\u1ed3 \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb ngay l\u1eadp t\u1ee9c.<\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"30949\">\u0110i\u1ec1u n\u00e0y gi\u1ea3m t\u1ea3i nh\u1eadn th\u1ee9c v\u00e0 cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng \u1edf m\u1ecdi tr\u00ecnh \u0111\u1ed9 l\u00e0m vi\u1ec7c v\u1edbi s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 m\u00e0 kh\u00f4ng c\u1ea7n ghi nh\u1edb m\u1ecdi quy t\u1eafc c\u00fa ph\u00e1p.<\/p>\n<h3 data-nodeid=\"30950\">V\u00ed d\u1ee5: Tr\u01b0\u1edbc v\u00e0 sau khi s\u1eeda l\u1ed7i b\u1eb1ng AI<\/h3>\n<p data-nodeid=\"30951\"><strong data-nodeid=\"31239\">C\u00fa ph\u00e1p Mermaid b\u1ecb l\u1ed7i<\/strong> (D\u00f2ng 11):<\/p>\n<pre data-nodeid=\"30952\"><code>flowchart LR\r\n    A[Start] --&gt;|Process| B[Task]\r\n    B ---&gt; C[End]\r\n<\/code><\/pre>\n<p data-nodeid=\"30953\"><em data-nodeid=\"31245\">(To\u00e1n t\u1eed kh\u00f4ng h\u1ee3p l\u1ec7<code data-backticks=\"1\" data-nodeid=\"31242\">---&gt;<\/code>)<\/em><\/p>\n<p data-nodeid=\"30954\"><strong data-nodeid=\"31250\">Sau khi s\u1eeda l\u1ed7i b\u1eb1ng AI<\/strong>:<\/p>\n<pre data-nodeid=\"30955\"><code>bi\u1ec3u \u0111\u1ed3 lu\u1ed3ng LR\r\n    A[B\u1eaft \u0111\u1ea7u] --&gt;|X\u1eed l\u00fd| B[Nhi\u1ec7m v\u1ee5]\r\n    B --&gt; C[K\u1ebft th\u00fac]\r\n<\/code><\/pre>\n<hr data-nodeid=\"30956\"\/>\n<h2 data-nodeid=\"30957\">D\u00f2ng ch\u1ea3y OpenDocs: T\u1eeb m\u00e3 ngu\u1ed3n \u0111\u1ebfn t\u00e0i li\u1ec7u s\u1ed1ng \u0111\u1ed9ng<\/h2>\n<p data-nodeid=\"30958\">S\u1ef1 t\u00edch h\u1ee3p c\u1ee7a VPasCode v\u1edbi OpenDocs t\u1ea1o ra \u0111i\u1ec1u m\u00e0 Visual Paradigm g\u1ecdi l\u00e0<strong data-nodeid=\"31261\">\u201ct\u00e0i li\u1ec7u s\u1ed1ng \u0111\u1ed9ng\u201d<\/strong>\u00a0lu\u1ed3ng c\u00f4ng vi\u1ec7c. Thay v\u00ec xu\u1ea5t h\u00ecnh \u1ea3nh t\u0129nh, c\u00e1c s\u01a1 \u0111\u1ed3 \u0111\u01b0\u1ee3c \u0111\u1ea9y qua m\u1ed9t quy tr\u00ecnh duy tr\u00ec l\u1ecbch s\u1eed phi\u00ean b\u1ea3n v\u00e0 \u0111\u1ed3ng b\u1ed9 hai chi\u1ec1u.<\/p>\n<p id=\"LBRvlXn\"><img alt=\"\" class=\"alignnone size-full wp-image-25262\" decoding=\"async\" height=\"615\" loading=\"lazy\" sizes=\"auto, (max-width: 978px) 100vw, 978px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a505050614f0.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a505050614f0.png 978w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a505050614f0-300x189.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a505050614f0-768x483.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a505050614f0-150x94.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a505050614f0-400x252.png 400w\" width=\"978\"\/><\/p>\n<p>\u00a0<\/p>\n<h3 data-nodeid=\"30959\">Lu\u1ed3ng c\u00f4ng vi\u1ec7c n\u0103m giai \u0111o\u1ea1n<\/h3>\n<ol data-nodeid=\"30960\">\n<li data-nodeid=\"30961\">\n<p data-nodeid=\"30962\"><strong data-nodeid=\"31267\">So\u1ea1n th\u1ea3o trong VPasCode<\/strong>: K\u1ef9 s\u01b0 vi\u1ebft ho\u1eb7c ch\u1ec9nh s\u1eeda c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 trong tr\u00ecnh so\u1ea1n th\u1ea3o d\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t.<\/p>\n<\/li>\n<li data-nodeid=\"30963\">\n<p data-nodeid=\"30964\"><strong data-nodeid=\"31280\">G\u1eedi \u0111\u1ebfn d\u00f2ng ch\u1ea3y<\/strong>: Nh\u1ea5n v\u00e0o \u201cG\u1eedi \u0111\u1ebfn d\u00f2ng ch\u1ea3y OpenDocs\u201d k\u00e8m theo ghi ch\u00fa t\u00f9y ch\u1ecdn (v\u00ed d\u1ee5: \u201cC\u1eadp nh\u1eadt cho tu\u00e2n th\u1ee7 TLS 1.3\u201d) .<\/p>\n<\/li>\n<li data-nodeid=\"30965\">\n<p data-nodeid=\"30966\"><strong data-nodeid=\"31285\">Ch\u00e8n v\u00e0o OpenDocs<\/strong>: Ng\u01b0\u1eddi vi\u1ebft k\u1ef9 thu\u1eadt truy c\u1eadp khung Pipeline v\u00e0 ch\u00e8n s\u01a1 \u0111\u1ed3 v\u00e0o t\u00e0i li\u1ec7u tr\u1ef1c ti\u1ebfp ch\u1ec9 b\u1eb1ng m\u1ed9t c\u00fa nh\u1ea5p chu\u1ed9t .<\/p>\n<\/li>\n<li data-nodeid=\"30967\">\n<p data-nodeid=\"30968\"><strong data-nodeid=\"31290\">Ch\u1ec9nh s\u1eeda ngay t\u1ea1i ch\u1ed7<\/strong>: Nh\u1ea5n v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng b\u00fat ch\u00ec tr\u00ean s\u01a1 \u0111\u1ed3 nh\u00fang s\u1ebd m\u1edf ngu\u1ed3n g\u1ed1c ban \u0111\u1ea7u trong VPasCode \u0111\u1ec3 tinh ch\u1ec9nh .<\/p>\n<\/li>\n<li data-nodeid=\"30969\">\n<p data-nodeid=\"30970\"><strong data-nodeid=\"31295\">C\u1eadp nh\u1eadt \u0111\u1ed3ng b\u1ed9 t\u1ef1 \u0111\u1ed9ng<\/strong>: Nh\u1eefng thay \u0111\u1ed5i \u0111\u01b0\u1ee3c lan truy\u1ec1n ngay l\u1eadp t\u1ee9c m\u00e0 kh\u00f4ng c\u1ea7n t\u1ea3i l\u1ea1i t\u1ec7p, lo\u1ea1i b\u1ecf l\u1ed7i phi\u00ean b\u1ea3n .<\/p>\n<\/li>\n<\/ol>\n<h3 data-nodeid=\"30971\">T\u00e1c \u0111\u1ed9ng c\u00f3 th\u1ec3 \u0111o l\u01b0\u1eddng \u0111\u01b0\u1ee3c<\/h3>\n<p data-nodeid=\"30972\">M\u1ed9t nghi\u00ean c\u1ee9u tr\u01b0\u1eddng h\u1ee3p v\u1ec1 NovaStream, nh\u00e0 cung c\u1ea5p SaaS, cho th\u1ea5y c\u1ea3i thi\u1ec7n \u0111\u00e1ng k\u1ec3 sau khi tri\u1ec3n khai d\u00f2ng ch\u1ea3y n\u00e0y :<\/p>\n<table data-nodeid=\"30974\">\n<thead data-nodeid=\"30975\">\n<tr data-nodeid=\"30976\">\n<th data-nodeid=\"30978\">Ch\u1ec9 s\u1ed1<\/th>\n<th data-nodeid=\"30979\">Tr\u01b0\u1edbc khi c\u00f3 d\u00f2ng ch\u1ea3y<\/th>\n<th data-nodeid=\"30980\">Sau khi c\u00f3 d\u00f2ng ch\u1ea3y<\/th>\n<th data-nodeid=\"30981\">C\u1ea3i thi\u1ec7n<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"30986\">\n<tr data-nodeid=\"30987\">\n<td data-nodeid=\"30988\">Th\u1eddi gian chu k\u1ef3 c\u1eadp nh\u1eadt<\/td>\n<td data-nodeid=\"30989\">55 ph\u00fat<\/td>\n<td data-nodeid=\"30990\">8 ph\u00fat<\/td>\n<td data-nodeid=\"30991\"><strong data-nodeid=\"31308\">C\u1ea3i thi\u1ec7n 85%<\/strong><\/td>\n<\/tr>\n<tr data-nodeid=\"30992\">\n<td data-nodeid=\"30993\">L\u1ed7i phi\u00ean b\u1ea3n<\/td>\n<td data-nodeid=\"30994\">Th\u01b0\u1eddng xuy\u00ean<\/td>\n<td data-nodeid=\"30995\">Kh\u00f4ng<\/td>\n<td data-nodeid=\"30996\"><strong data-nodeid=\"31315\">Lo\u1ea1i b\u1ecf ho\u00e0n to\u00e0n 100%<\/strong><\/td>\n<\/tr>\n<tr data-nodeid=\"30997\">\n<td data-nodeid=\"30998\">Chuy\u1ec3n giao gi\u1eefa c\u00e1c \u0111\u1ed9i nh\u00f3m<\/td>\n<td data-nodeid=\"30999\">3<\/td>\n<td data-nodeid=\"31000\">0<\/td>\n<td data-nodeid=\"31001\"><strong data-nodeid=\"31322\">Gi\u1ea3m 100%<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"31002\"\/>\n<h2 data-nodeid=\"31003\">V\u00ed d\u1ee5 Graphviz: T\u00e0i li\u1ec7u c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng<\/h2>\n<p data-nodeid=\"31004\">\u0110\u1ed1i v\u1edbi c\u00e1c \u0111\u1ed9i nh\u00f3m c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng, t\u00ednh n\u0103ng Graphviz c\u1ee7a VPasCode cho ph\u00e9p bi\u1ec3u di\u1ec5n ki\u1ebfn tr\u00fac \u0111\u00e1m m\u00e2y m\u1ed9t c\u00e1ch ch\u01b0\u01a1ng tr\u00ecnh h\u00f3a. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t v\u00ed d\u1ee5 th\u1ef1c t\u1ebf:<\/p>\n<p id=\"GAmbmpD\"><img alt=\"\" class=\"alignnone size-full wp-image-25259\" decoding=\"async\" height=\"869\" loading=\"lazy\" sizes=\"auto, (max-width: 1916px) 100vw, 1916px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png 1916w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7-300x136.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7-1030x467.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7-768x348.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7-1536x697.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7-150x68.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7-400x181.png 400w\" width=\"1916\"\/><\/p>\n<pre class=\"lang-dot\" data-nodeid=\"31005\"><code data-language=\"dot\">digraph EnterpriseCloud {\r\n  compound=true;\r\n  node [fontname=\"Helvetica,Arial,sans-serif\" fontsize=11 shape=box style=\"filled,rounded\" fillcolor=\"#E3F2FD\" fontcolor=\"#1565C0\"];\r\n\r\n  subgraph cluster_vpc_prod {\r\n    label=\"VPC S\u1ea3n xu\u1ea5t\"; style=\"dashed\"; fillcolor=\"#FFF3E0\";\r\n\r\n    subgraph cluster_k8s {\r\n      label=\"C\u1ee5m Kubernetes\"; style=\"rounded\"; fillcolor=\"#E8F5E9\";\r\n      pod1 [label=\"D\u1ecbch v\u1ee5 APIn(Pod 1)\"];\r\n      pod2 [label=\"D\u1ecbch v\u1ee5 APIn(Pod 2)\"];\r\n      db_master [label=\"PostgreSQLnCh\u1ee7\"];\r\n      db_replica [label=\"PostgreSQLnPh\u1ee5c v\u1ee5\"];\r\n    }\r\n\r\n    lb [label=\"C\u00e2n b\u1eb1ng t\u1ea3i \u1ee9ng d\u1ee5ng\" fillcolor=\"#FFF9C4\"];\r\n  }\r\n\r\n  vpn [label=\"C\u1ed5ng VPN IPSec\" shape=\"l\u1ee5c gi\u00e1c\" fillcolor=\"#FFCCBC\"];\r\n\r\n  vpn -&gt; lb [label=\"Giao th\u00f4ng \u0111\u01b0\u1ee3c m\u00e3 h\u00f3a\"];\r\n  lb -&gt; pod1 [label=\"Giao th\u00f4ng proxy\" lhead=cluster_k8s];\r\n  lb -&gt; pod2 [label=\"Giao th\u00f4ng proxy\" lhead=cluster_k8s];\r\n  pod1 -&gt; db_master [label=\"Ghi\"];\r\n  pod2 -&gt; db_replica [label=\"\u0110\u1ecdc\"];\r\n  db_master -&gt; db_replica [label=\"Sao ch\u00e9p b\u1ea5t \u0111\u1ed3ng b\u1ed9\" style=\"dashed\"];\r\n}\r\n<\/code><\/pre>\n<p data-nodeid=\"31006\"><strong data-nodeid=\"31333\">T\u00ednh n\u0103ng ch\u00ednh<\/strong>:<\/p>\n<ul data-nodeid=\"31007\">\n<li data-nodeid=\"31008\">\n<p data-nodeid=\"31009\"><strong data-nodeid=\"31338\">C\u00e1c nh\u00f3m con<\/strong>: M\u00f4 h\u00ecnh c\u00e1c ranh gi\u1edbi \u0111\u00e1m m\u00e2y theo c\u1ea5p b\u1eadc (VPC, kh\u00f4ng gian t\u00ean Kubernetes)<\/p>\n<\/li>\n<li data-nodeid=\"31010\">\n<p data-nodeid=\"31011\"><strong data-nodeid=\"31343\">Phong c\u00e1ch to\u00e0n c\u1ee5c<\/strong>: M\u00e0u s\u1eafc v\u00e0 h\u00ecnh d\u1ea1ng nh\u1ea5t qu\u00e1n \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a \u1edf c\u1ea5p \u0111\u1ed3 th\u1ecb<\/p>\n<\/li>\n<li data-nodeid=\"31012\">\n<p data-nodeid=\"31013\"><strong data-nodeid=\"31348\">Compound=true<\/strong>: H\u01b0\u1edbng c\u00e1c c\u1ea1nh \u0111\u1ebfn bi\u00ean gi\u1edbi c\u1ee5m thay v\u00ec c\u00e1c n\u00fat ri\u00eang l\u1ebb<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"31014\"\/>\n<h2 data-nodeid=\"31015\">B\u1eaft \u0111\u1ea7u v\u1edbi VPasCode<\/h2>\n<p data-nodeid=\"31016\">VPasCode c\u00f3 s\u1eb5n d\u01b0\u1edbi d\u1ea1ng\u00a0<strong data-nodeid=\"31355\">b\u1ea3n mi\u1ec5n ph\u00ed<\/strong>\u00a0v\u1edbi xem tr\u01b0\u1edbc th\u1eddi gian th\u1ef1c, chia s\u1ebb URL v\u00e0 xu\u1ea5t ra SVG\/PNG. C\u00e1c b\u1ea3n cao c\u1ea5p m\u1edf kh\u00f3a c\u00e1c kh\u1ea3 n\u0103ng AI bao g\u1ed3m s\u1eeda l\u1ed7i m\u00e3 v\u00e0 d\u1ecbch ng\u00f4n ng\u1eef.<\/p>\n<h3 data-nodeid=\"31017\">C\u00e1c b\u01b0\u1edbc nhanh \u0111\u1ec3 b\u1eaft \u0111\u1ea7u<\/h3>\n<ol data-nodeid=\"31018\">\n<li data-nodeid=\"31019\">\n<p data-nodeid=\"31020\"><strong data-nodeid=\"31361\">Truy c\u1eadp VPasCode<\/strong>\u00a0(d\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t, kh\u00f4ng c\u1ea7n c\u00e0i \u0111\u1eb7t)<\/p>\n<\/li>\n<li data-nodeid=\"31021\">\n<p data-nodeid=\"31022\"><strong data-nodeid=\"31366\">Ch\u1ecdn c\u00fa ph\u00e1p c\u1ee7a b\u1ea1n<\/strong>: Mermaid, PlantUML ho\u1eb7c Graphviz<\/p>\n<\/li>\n<li data-nodeid=\"31023\">\n<p data-nodeid=\"31024\"><strong data-nodeid=\"31371\">Vi\u1ebft m\u00e3<\/strong>\u00a0trong b\u1ea3ng b\u00ean tr\u00e1i, theo d\u00f5i ph\u1ea7n xem tr\u01b0\u1edbc \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb theo th\u1eddi gian th\u1ef1c<\/p>\n<\/li>\n<li data-nodeid=\"31025\">\n<p data-nodeid=\"31026\"><strong data-nodeid=\"31376\">G\u1eedi \u0111\u1ebfn lu\u1ed3ng OpenDocs<\/strong>\u00a0\u0111\u1ec3 nh\u00fang v\u00e0o t\u00e0i li\u1ec7u<\/p>\n<\/li>\n<li data-nodeid=\"31027\">\n<p data-nodeid=\"31028\"><strong data-nodeid=\"31381\">G\u1eedi v\u00e0o Git<\/strong>\u00a0c\u00f9ng v\u1edbi m\u00e3 \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"31029\"\/>\n<h2 data-nodeid=\"31030\">T\u00f3m t\u1eaft<\/h2>\n<p data-nodeid=\"31031\">VPasCode \u0111\u1ea1i di\u1ec7n cho m\u1ed9t b\u01b0\u1edbc ti\u1ebfn \u0111\u00e1ng k\u1ec3 trong c\u00f4ng c\u1ee5 v\u1ebd s\u01a1 \u0111\u1ed3 b\u1eb1ng m\u00e3 b\u1eb1ng c\u00e1ch:<\/p>\n<ul data-nodeid=\"31032\">\n<li data-nodeid=\"31033\">\n<p data-nodeid=\"31034\"><strong data-nodeid=\"31388\">Thu th\u1eadp<\/strong>ba c\u00fa ph\u00e1p ch\u00ednh trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t<\/p>\n<\/li>\n<li data-nodeid=\"31035\">\n<p data-nodeid=\"31036\"><strong data-nodeid=\"31393\">T\u0103ng t\u1ed1c<\/strong>vi\u1ec7c t\u1ea1o d\u1ef1ng v\u1edbi kh\u1ea3 n\u0103ng sinh t\u1ef1 \u0111\u1ed9ng v\u00e0 s\u1eeda l\u1ed7i \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 b\u1edfi tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o<\/p>\n<\/li>\n<li data-nodeid=\"31037\">\n<p data-nodeid=\"31038\"><strong data-nodeid=\"31398\">Lo\u1ea1i b\u1ecf<\/strong>s\u1ef1 l\u1ec7ch l\u1ea1c t\u00e0i li\u1ec7u th\u00f4ng qua lu\u1ed3ng c\u00f4ng vi\u1ec7c OpenDocs<\/p>\n<\/li>\n<li data-nodeid=\"31039\">\n<p data-nodeid=\"31040\"><strong data-nodeid=\"31403\">Cho ph\u00e9p<\/strong>ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n v\u00e0 quy tr\u00ecnh l\u00e0m vi\u1ec7c t\u00edch h\u1ee3p Git<\/p>\n<\/li>\n<\/ul>\n<p class=\"\" data-nodeid=\"31041\">D\u00f9 b\u1ea1n \u0111ang t\u00e0i li\u1ec7u h\u00f3a c\u00e1c d\u1ecbch v\u1ee5 vi m\u00f4 b\u1eb1ng Mermaid, m\u00f4 h\u00ecnh h\u00f3a ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng b\u1eb1ng PlantUML, hay l\u1eadp b\u1ea3n \u0111\u1ed3 h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y b\u1eb1ng Graphviz, VPasCode cung c\u1ea5p m\u1ed9t giao di\u1ec7n duy nh\u1ea5t gi\u00fap n\u1ed1i li\u1ec1n kho\u1ea3ng c\u00e1ch gi\u1eefa m\u00e3 ngu\u1ed3n v\u00e0 s\u1ef1 r\u00f5 r\u00e0ng.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Trong th\u1ebf gi\u1edbi t\u00e0i li\u1ec7u k\u1ef9 thu\u1eadt, &#8216;S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3&#8217; \u0111\u00e3 chuy\u1ec3n t\u1eeb m\u1ed9t th\u1ef1c h\u00e0nh chuy\u00ean bi\u1ec7t c\u1ee7a nh\u00e0 ph\u00e1t tri\u1ec3n th\u00e0nh ph\u01b0\u01a1ng ph\u00e1p chu\u1ea9n ng\u00e0nh. Nh\u01b0ng \u0111\u1ed1i v\u1edbi c\u00e1c \u0111\u1ed9i ng\u0169 ph\u1ea3i x\u1eed l\u00fd nhi\u1ec1u lo\u1ea1i s\u01a1 \u0111\u1ed3 kh\u00e1c nhau\u2014s\u01a1 \u0111\u1ed3 lu\u1ed3ng, s\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1, m\u00f4 h\u00ecnh C4 v\u00e0 b\u1ea3n [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11716,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[65,71,70],"tags":[],"class_list":["post-11715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-opendocs","category-vpascode","loop-entry","clr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t - Visual Paradigm Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t - Visual Paradigm Blog\" \/>\n<meta property=\"og:description\" content=\"Trong th\u1ebf gi\u1edbi t\u00e0i li\u1ec7u k\u1ef9 thu\u1eadt, &#8216;S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3&#8217; \u0111\u00e3 chuy\u1ec3n t\u1eeb m\u1ed9t th\u1ef1c h\u00e0nh chuy\u00ean bi\u1ec7t c\u1ee7a nh\u00e0 ph\u00e1t tri\u1ec3n th\u00e0nh ph\u01b0\u01a1ng ph\u00e1p chu\u1ea9n ng\u00e0nh. Nh\u01b0ng \u0111\u1ed1i v\u1edbi c\u00e1c \u0111\u1ed9i ng\u0169 ph\u1ea3i x\u1eed l\u00fd nhi\u1ec1u lo\u1ea1i s\u01a1 \u0111\u1ed3 kh\u00e1c nhau\u2014s\u01a1 \u0111\u1ed3 lu\u1ed3ng, s\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1, m\u00f4 h\u00ecnh C4 v\u00e0 b\u1ea3n [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"Visual Paradigm Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-10T01:51:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-26T11:02:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png\" \/><meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1916\" \/>\n\t<meta property=\"og:image:height\" content=\"869\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/\",\"name\":\"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t - Visual Paradigm Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a50501379de7.png\",\"datePublished\":\"2026-07-10T01:51:36+00:00\",\"dateModified\":\"2026-07-26T11:02:25+00:00\",\"author\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#primaryimage\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a50501379de7.png\",\"contentUrl\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a50501379de7.png\",\"width\":1916,\"height\":869},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.visual-paradigm.com\/vn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#website\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/\",\"name\":\"Visual Paradigm Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.visual-paradigm.com\/vn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\",\"name\":\"Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g\",\"caption\":\"Admin\"},\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/author\/vpadminuser\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t - Visual Paradigm Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/","og_locale":"vi_VN","og_type":"article","og_title":"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t - Visual Paradigm Blog","og_description":"Trong th\u1ebf gi\u1edbi t\u00e0i li\u1ec7u k\u1ef9 thu\u1eadt, &#8216;S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3&#8217; \u0111\u00e3 chuy\u1ec3n t\u1eeb m\u1ed9t th\u1ef1c h\u00e0nh chuy\u00ean bi\u1ec7t c\u1ee7a nh\u00e0 ph\u00e1t tri\u1ec3n th\u00e0nh ph\u01b0\u01a1ng ph\u00e1p chu\u1ea9n ng\u00e0nh. Nh\u01b0ng \u0111\u1ed1i v\u1edbi c\u00e1c \u0111\u1ed9i ng\u0169 ph\u1ea3i x\u1eed l\u00fd nhi\u1ec1u lo\u1ea1i s\u01a1 \u0111\u1ed3 kh\u00e1c nhau\u2014s\u01a1 \u0111\u1ed3 lu\u1ed3ng, s\u01a1 \u0111\u1ed3 tu\u1ea7n t\u1ef1, m\u00f4 h\u00ecnh C4 v\u00e0 b\u1ea3n [&hellip;]","og_url":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/","og_site_name":"Visual Paradigm Blog","article_published_time":"2026-07-10T01:51:36+00:00","article_modified_time":"2026-07-26T11:02:25+00:00","og_image":[{"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png","type":"","width":"","height":""},{"width":1916,"height":869,"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png","type":"image\/png"}],"author":"Admin","twitter_card":"summary_large_image","twitter_image":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a50501379de7.png","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Admin","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"6 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/","url":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/","name":"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t - Visual Paradigm Blog","isPartOf":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#primaryimage"},"image":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a50501379de7.png","datePublished":"2026-07-10T01:51:36+00:00","dateModified":"2026-07-26T11:02:25+00:00","author":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6"},"breadcrumb":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#primaryimage","url":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a50501379de7.png","contentUrl":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a50501379de7.png","width":1916,"height":869},{"@type":"BreadcrumbList","@id":"https:\/\/blog.visual-paradigm.com\/vn\/vpascode-deep-dive-unifying-mermaid-plantuml-and-ai-in-one-platform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.visual-paradigm.com\/vn\/"},{"@type":"ListItem","position":2,"name":"Kh\u00e1m ph\u00e1 s\u00e2u VPasCode: Th\u1ed1ng nh\u1ea5t Mermaid, PlantUML v\u00e0 AI trong m\u1ed9t n\u1ec1n t\u1ea3ng duy nh\u1ea5t"}]},{"@type":"WebSite","@id":"https:\/\/blog.visual-paradigm.com\/vn\/#website","url":"https:\/\/blog.visual-paradigm.com\/vn\/","name":"Visual Paradigm Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.visual-paradigm.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Person","@id":"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6","name":"Admin","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g","caption":"Admin"},"url":"https:\/\/blog.visual-paradigm.com\/vn\/author\/vpadminuser\/"}]}},"modified_by":"Admin","_links":{"self":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/posts\/11715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/comments?post=11715"}],"version-history":[{"count":0,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/posts\/11715\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/media\/11716"}],"wp:attachment":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/media?parent=11715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/categories?post=11715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/tags?post=11715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}