{"id":11749,"date":"2026-07-09T16:42:16","date_gmt":"2026-07-09T08:42:16","guid":{"rendered":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/"},"modified":"2026-07-09T18:04:06","modified_gmt":"2026-07-09T10:04:06","slug":"beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling","status":"publish","type":"post","link":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/","title":{"rendered":"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI"},"content":{"rendered":"<h2 data-nodeid=\"28691\">Kh\u1ee7ng ho\u1ea3ng v\u1ec1 t\u00e0i li\u1ec7u<\/h2>\n<p data-nodeid=\"28692\">M\u1ecdi \u0111\u1ed9i k\u1ef9 thu\u1eadt \u0111\u1ec1u bi\u1ebft n\u1ed7i \u0111au n\u00e0y. B\u1ea1n d\u00e0nh h\u00e0ng tu\u1ea7n \u0111\u1ec3 thi\u1ebft k\u1ebf m\u1ed9t ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 tuy\u1ec7t \u0111\u1eb9p, t\u1ec9 m\u1ec9 t\u1ea1o ra c\u00e1c s\u01a1 \u0111\u1ed3 Visio g\u00e2y \u1ea5n t\u01b0\u1ee3ng v\u1edbi c\u00e1c b\u00ean li\u00ean quan. S\u00e1u th\u00e1ng sau, h\u1ec7 th\u1ed1ng \u0111\u00e3 thay \u0111\u1ed5i\u2014c\u00e1c d\u1ecbch v\u1ee5 m\u1edbi \u0111\u01b0\u1ee3c th\u00eam v\u00e0o, c\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c di chuy\u1ec3n, c\u00e1c \u0111i\u1ec3m cu\u1ed1i API b\u1ecb lo\u1ea1i b\u1ecf\u2014nh\u01b0ng s\u01a1 \u0111\u1ed3 v\u1eabn \u0111\u00f3ng b\u0103ng trong th\u1eddi gian. \u0110\u00f3 l\u00e0 m\u1ed9t di t\u00edch. Th\u1eadm ch\u00ed l\u00e0 m\u1ed9t l\u1eddi n\u00f3i d\u1ed1i.<\/p>\n<p data-nodeid=\"28693\">\u0110\u00e2y l\u00e0 &#8220;s\u1ef1 m\u1ee5c n\u00e1t c\u1ee7a t\u00e0i li\u1ec7u&#8221; (doc-rot), v\u00e0 \u0111\u00f3 l\u00e0 k\u1ebb gi\u1ebft ng\u01b0\u1eddi th\u1ea7m l\u1eb7ng \u0111\u1ed1i v\u1edbi n\u0103ng su\u1ea5t k\u1ef9 thu\u1eadt. Khi s\u01a1 \u0111\u1ed3 n\u00f3i d\u1ed1i, c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n s\u1ebd b\u1ecf qua ch\u00fang. Khi c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n b\u1ecf qua t\u00e0i li\u1ec7u, ki\u1ebfn th\u1ee9c b\u1ed9 t\u1ed9c s\u1ebd th\u1ed1ng tr\u1ecb. Khi ng\u01b0\u1eddi duy nh\u1ea5t hi\u1ec3u h\u1ec7 th\u1ed1ng r\u1eddi \u0111i, b\u1ea1n s\u1ebd c\u00f2n l\u1ea1i m\u1ed9t c\u01a1 s\u1edf m\u00e3 ph\u1ee9c t\u1ea1p v\u00e0 kh\u00f4ng c\u00f3 b\u1ea3n \u0111\u1ed3.<\/p>\n<p data-nodeid=\"28694\"><strong data-nodeid=\"28864\">S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 (DaC)<\/strong> l\u00e0 gi\u1ea3i ph\u00e1p. V\u00e0 c\u1ed1t l\u00f5i c\u1ee7a n\u00f3 l\u00e0 <strong data-nodeid=\"28865\">Mermaid<\/strong>, c\u00f4ng c\u1ee5 t\u1ea1o s\u01a1 \u0111\u1ed3 d\u1ef1a tr\u00ean JavaScript bi\u1ebfn v\u0103n b\u1ea3n thu\u1ea7n t\u00fay th\u00e0nh h\u00ecnh \u1ea3nh \u0111\u1eb9p m\u1eaft.<\/p>\n<p id=\"TeQLNvu\"><img alt=\"S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng M\u00e3 (DaC): Gi\u1ea3i quy\u1ebft Kh\u1ee7ng ho\u1ea3ng T\u00e0i li\u1ec7u\" class=\"alignnone wp-image-25239 size-full\" decoding=\"async\" height=\"572\" loading=\"lazy\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810.png 1024w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810-300x168.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810-768x429.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810-150x84.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810-400x223.png 400w\" width=\"1024\"\/><\/p>\n<hr data-nodeid=\"28695\"\/>\n<h2 data-nodeid=\"28696\">Tri\u1ebft l\u00fd c\u1ed1t l\u00f5i: \u0110\u1ed1i x\u1eed v\u1edbi s\u01a1 \u0111\u1ed3 nh\u01b0 ph\u1ea7n m\u1ec1m<\/h2>\n<p data-nodeid=\"28697\">S\u1ef1 thay \u0111\u1ed5i c\u01a1 b\u1ea3n c\u1ee7a S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 l\u00e0 \u0111\u1ed1i x\u1eed v\u1edbi s\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n v\u1edbi c\u00f9ng s\u1ef1 nghi\u00eam ng\u1eb7t nh\u01b0 m\u00e3 \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0:<\/p>\n<h3 data-nodeid=\"28698\">1. Ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n l\u00e0 ti\u00eau chu\u1ea9n<\/h3>\n<p data-nodeid=\"28699\">Khi s\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n l\u00e0 m\u1ed9t <code data-backticks=\"1\" data-nodeid=\"28870\">.mermaid<\/code> file, n\u00f3 t\u1ed3n t\u1ea1i trong kho l\u01b0u tr\u1eef Git c\u1ee7a b\u1ea1n b\u00ean c\u1ea1nh m\u00e3 ngu\u1ed3n. M\u1ecdi thay \u0111\u1ed5i \u0111\u1ec1u \u0111\u01b0\u1ee3c theo d\u00f5i. B\u1ea1n c\u00f3 th\u1ec3 <code data-backticks=\"1\" data-nodeid=\"28872\">git blame<\/code> \u0111\u1ec3 xem ai \u0111\u00e3 th\u00eam d\u1ecbch v\u1ee5 m\u1edbi \u0111\u00f3, <code data-backticks=\"1\" data-nodeid=\"28874\">git diff<\/code> \u0111\u1ec3 xem x\u00e9t c\u00e1c thay \u0111\u1ed5i tr\u01b0\u1edbc khi h\u1ee3p nh\u1ea5t, v\u00e0 quay l\u1ea1i b\u1ea5t k\u1ef3 tr\u1ea1ng th\u00e1i n\u00e0o tr\u01b0\u1edbc \u0111\u00f3.<\/p>\n<p id=\"RGdXOPO\"><img alt=\"\" class=\"alignnone size-full wp-image-25226\" decoding=\"async\" height=\"868\" loading=\"lazy\" sizes=\"auto, (max-width: 1915px) 100vw, 1915px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f.png 1915w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f-300x136.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f-1030x467.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f-768x348.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f-1536x696.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f-150x68.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5a9ac2d5f-400x181.png 400w\" width=\"1915\"\/><\/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\/editor\/#mermaid:eNqNjbsOwjAMRXck\/sHqjhArWyfUCRY+wCQmsSAPGaeof08qCEuFhCUvvsfnOtaDYPbrFdQxKQRWYLuHboisjHdAMZ6VjBahbon11kJ5kEDdkU1DLoLReLgSzn\/bJJZk80GWkuMcNwOMux89GadAUcGh0hOnRnkyt1QUAnJ8nwKJo3\/Lz9lWH\/Sn4St+AfvmWDg=\" 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\/editor\/#mermaid:eNqNjr0KwjAUhXef4tJdxNVNFERcHHyBNI1JkNyUmPYlnDo4CnYQQRBcTQeHlL5H3sTiDwgieJcL537nnMulnRiSig60Q7VS0oJMBhDNZHA3BGu8oxAThLoI7phFX+BC+JOCJFQbKiAP1QGQN5dQ7SQk\/or86YgNwfa+ZMRmhvW0SZjprpnJJWVfkeOPsLpoSgTh98gh7\/+qp6HatoAVBAVY7Ut8kYLRlc4sKCLxoShmOPvzj1Fw5xRQtMu+K4bzaXQHWp12Rw==\" \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=\"28700\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">gitGraph\n    commit id: \"Ki\u1ebfn tr\u00fac ban \u0111\u1ea7u\"\n    commit id: \"Th\u00eam d\u1ecbch v\u1ee5 ng\u01b0\u1eddi d\u00f9ng\"\n    branch feature\/order-service\n    commit id: \"D\u1ecbch v\u1ee5 \u0111\u01a1n h\u00e0ng v1\"\n    commit id: \"Th\u00eam c\u1ed5ng thanh to\u00e1n\"\n    checkout main\n    merge feature\/order-service\n    commit id: \"C\u1eadp nh\u1eadt c\u1ed5ng API\"\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNjr0KwjAUhXef4tJdxNVNFERcHHyBNI1JkNyUmPYlnDo4CnYQQRBcTQeHlL5H3sTiDwgieJcL537nnMulnRiSig60Q7VS0oJMBhDNZHA3BGu8oxAThLoI7phFX+BC+JOCJFQbKiAP1QGQN5dQ7SQk\/or86YgNwfa+ZMRmhvW0SZjprpnJJWVfkeOPsLpoSgTh98gh7\/+qp6HatoAVBAVY7Ut8kYLRlc4sKCLxoShmOPvzj1Fw5xRQtMu+K4bzaXQHWp12Rw==\" \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\/editor\/#mermaid:eNqNjbsOwjAMRXck\/sHqjhArWyfUCRY+wCQmsSAPGaeof08qCEuFhCUvvsfnOtaDYPbrFdQxKQRWYLuHboisjHdAMZ6VjBahbon11kJ5kEDdkU1DLoLReLgSzn\/bJJZk80GWkuMcNwOMux89GadAUcGh0hOnRnkyt1QUAnJ8nwKJo3\/Lz9lWH\/Sn4St+AfvmWDg=\" 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=\"28701\"><em data-nodeid=\"28883\">V\u00ed d\u1ee5: Tr\u1ef1c quan h\u00f3a l\u1ecbch s\u1eed Git c\u1ee7a ch\u00ednh s\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n b\u1eb1ng c\u00fa ph\u00e1p Git Graph c\u1ee7a Mermaid<\/em><\/p>\n<h3 data-nodeid=\"28702\">2. \u0110\u00e1nh gi\u00e1 m\u00e3 cho s\u01a1 \u0111\u1ed3<\/h3>\n<p data-nodeid=\"28703\">Y\u00eau c\u1ea7u k\u00e9o (pull requests) kh\u00f4ng c\u00f2n ch\u1ec9 d\u00e0nh cho m\u00e3 n\u1eefa. Khi m\u1ed9t nh\u00e0 ph\u00e1t tri\u1ec3n \u0111\u1ec1 xu\u1ea5t m\u1ed9t d\u1ecbch v\u1ee5 m\u1edbi ho\u1eb7c thay \u0111\u1ed5i lu\u1ed3ng d\u1eef li\u1ec7u, thay \u0111\u1ed5i \u0111\u00f3 s\u1ebd xu\u1ea5t hi\u1ec7n d\u01b0\u1edbi d\u1ea1ng diff d\u1ec5 \u0111\u1ecdc trong PR. Ng\u01b0\u1eddi xem x\u00e9t c\u00f3 th\u1ec3 b\u00ecnh lu\u1eadn tr\u1ef1c ti\u1ebfp v\u00e0o s\u01a1 \u0111\u1ed3, \u0111\u1ea3m b\u1ea3o c\u00e1c quy\u1ebft \u0111\u1ecbnh ki\u1ebfn tr\u00fac \u0111\u01b0\u1ee3c th\u1ea3o lu\u1eadn v\u00e0 ph\u00ea duy\u1ec7t tr\u01b0\u1edbc khi \u0111\u01b0\u1ee3c h\u1ee3p nh\u1ea5t.<\/p>\n<h3 data-nodeid=\"28704\">3. T\u00edch h\u1ee3p v\u00e0o quy tr\u00ecnh CI\/CD<\/h3>\n<p data-nodeid=\"28705\">S\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng t\u1ea1o v\u00e0 x\u00e1c th\u1ef1c trong quy tr\u00ecnh c\u1ee7a b\u1ea1n. H\u00e3y t\u01b0\u1edfng t\u01b0\u1ee3ng m\u1ed9t h\u00e0nh \u0111\u1ed9ng GitHub th\u1ef1c hi\u1ec7n:<\/p>\n<ul data-nodeid=\"28706\">\n<li data-nodeid=\"28707\">\n<p data-nodeid=\"28708\">Bi\u1ebfn \u0111\u1ed5i t\u1ea5t c\u1ea3 c\u00e1c s\u01a1 \u0111\u1ed3 Mermaid th\u00e0nh PNG\/SVG<\/p>\n<\/li>\n<li data-nodeid=\"28709\">\n<p data-nodeid=\"28710\">T\u1ea3i ch\u00fang l\u00ean trang t\u00e0i li\u1ec7u c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<li data-nodeid=\"28711\">\n<p data-nodeid=\"28712\">B\u00e1o l\u1ed7i x\u00e2y d\u1ef1ng n\u1ebfu ph\u00e1t hi\u1ec7n c\u00fa ph\u00e1p Mermaid kh\u00f4ng h\u1ee3p l\u1ec7<\/p>\n<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p id=\"XNMrwui\"><img alt=\"\" class=\"alignnone size-full wp-image-25227\" decoding=\"async\" height=\"284\" loading=\"lazy\" sizes=\"auto, (max-width: 1549px) 100vw, 1549px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d.png 1549w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d-300x55.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d-1030x189.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d-768x141.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d-1536x282.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d-150x28.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ab77f24d-400x73.png 400w\" width=\"1549\"\/><\/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\/editor\/#mermaid:eNpVkMFqwzAMhu+DvoNOvfUVNpK46QLdKGk7GCYHE6utwLFN7Gwty959mtNBpqP+T7\/062TcZ3tRfYRtvXgArkwK\/EDjPPawG8IFAxROYwOr1SPksqhgRx4NWYR6sKGZpvIkF5JbcMAQ\/\/eFrNFqNnzBvlOkQZA696r7o0Si1l9vyrC4v9mork\/fk7b+1cZ3DCOU8uiNUxqiA+HaoUMGIznbzNFXN8JGlooM5AMZDUvIDHLCA6ruTpZp4TNHZcMbZN4baudWmwRUs1+UdOVXTLfdoSpB2Q8FEV8E\" 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\/editor\/#mermaid:eNptkL9OwzAYxHee4ia2vgKoTf8KkCrUzcqQpiG2mjhRmgIRYWLowAJiYCVUDEViQGWKR\/dF\/CbYTpE64M3+fne++66i5ManXpbj\/PII+rTJmMoqR54xJR44rpn85Ng9q3pTIJZrF63WCTrEGWHM0iBiPIBPVV0VrtV37Nwhjn3D3LjEyKkSX4dAlwwbfzN5xNRcluYb8YKLIIs9NmvwrsV7d46skepkKbRgnSJSYnV6b5GeQUpHbkv0ye7JJo1M6ly+MUTaerV0D8gzKn94WGKwr7pgnBq\/V4Zb+V5gpsQ3D3GMiQUxlVWiOybgVG7jxqlvYw3JZL+mOfUYlNhoXMs\/eNhgA4uN\/t3pQq\/Eg\/\/XqxGMrKD9C713oTQ=\" \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=\"28713\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">flowchart LR\n    A[Ph\u00e1t tri\u1ec3n vi\u00ean \u0111\u1ea9y m\u00e3] --&gt; B[CI Pipeline ch\u1ea1y]\n    B --&gt; C[Ch\u1ea1y ki\u1ec3m th\u1eed]\n    B --&gt; D[Hi\u1ec3n th\u1ecb bi\u1ec3u \u0111\u1ed3 Mermaid]\n    D --&gt; E{C\u00fa ph\u00e1p h\u1ee3p l\u1ec7?}\n    E --&gt;|C\u00f3| F[\u0110\u1ea9y l\u00ean t\u00e0i li\u1ec7u]\n    E --&gt;|Kh\u00f4ng| G[Ph\u00e1t sinh l\u1ed7i x\u00e2y d\u1ef1ng &amp; Th\u00f4ng b\u00e1o cho nh\u00f3m]\n    F --&gt; H[Tri\u1ec3n khai \u1ee9ng d\u1ee5ng]\n    G --&gt; I[Ph\u00e1t tri\u1ec3n vi\u00ean s\u1eeda c\u00fa ph\u00e1p]\n    I --&gt; A\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNptkL9OwzAYxHee4ia2vgKoTf8KkCrUzcqQpiG2mjhRmgIRYWLowAJiYCVUDEViQGWKR\/dF\/CbYTpE64M3+fne++66i5ManXpbj\/PII+rTJmMoqR54xJR44rpn85Ng9q3pTIJZrF63WCTrEGWHM0iBiPIBPVV0VrtV37Nwhjn3D3LjEyKkSX4dAlwwbfzN5xNRcluYb8YKLIIs9NmvwrsV7d46skepkKbRgnSJSYnV6b5GeQUpHbkv0ye7JJo1M6ly+MUTaerV0D8gzKn94WGKwr7pgnBq\/V4Zb+V5gpsQ3D3GMiQUxlVWiOybgVG7jxqlvYw3JZL+mOfUYlNhoXMs\/eNhgA4uN\/t3pQq\/Eg\/\/XqxGMrKD9C713oTQ=\" \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\/editor\/#mermaid:eNpVkMFqwzAMhu+DvoNOvfUVNpK46QLdKGk7GCYHE6utwLFN7Gwty959mtNBpqP+T7\/062TcZ3tRfYRtvXgArkwK\/EDjPPawG8IFAxROYwOr1SPksqhgRx4NWYR6sKGZpvIkF5JbcMAQ\/\/eFrNFqNnzBvlOkQZA696r7o0Si1l9vyrC4v9mork\/fk7b+1cZ3DCOU8uiNUxqiA+HaoUMGIznbzNFXN8JGlooM5AMZDUvIDHLCA6ruTpZp4TNHZcMbZN4baudWmwRUs1+UdOVXTLfdoSpB2Q8FEV8E\" 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=\"28714\"><em data-nodeid=\"28898\">V\u00ed d\u1ee5: Quy tr\u00ecnh CI\/CD \u0111\u1ec3 x\u00e1c th\u1ef1c v\u00e0 tri\u1ec3n khai bi\u1ec3u \u0111\u1ed3<\/em><\/p>\n<hr data-nodeid=\"28715\"\/>\n<h2 data-nodeid=\"28716\">Mermaid trong th\u1ef1c t\u1ebf: C\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf<\/h2>\n<p data-nodeid=\"28717\">H\u00e3y c\u00f9ng kh\u00e1m ph\u00e1 c\u00e1c lo\u1ea1i bi\u1ec3u \u0111\u1ed3 m\u00e0 Mermaid h\u1ed7 tr\u1ee3 th\u00f4ng qua c\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u00e0 thi\u1ebft th\u1ef1c.<\/p>\n<h3 data-nodeid=\"28718\">V\u00ed d\u1ee5 1: Ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 (S\u01a1 \u0111\u1ed3 lu\u1ed3ng)<\/h3>\n<p data-nodeid=\"28719\">\u0110\u00e2y l\u00e0 tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng ph\u1ed5 bi\u1ebfn nh\u1ea5t\u2014tr\u1ef1c quan h\u00f3a c\u00e1ch c\u00e1c d\u1ecbch v\u1ee5 c\u1ee7a b\u1ea1n giao ti\u1ebfp v\u1edbi nhau.<\/p>\n<p id=\"tgTdNNL\"><img alt=\"\" class=\"alignnone size-full wp-image-25228\" decoding=\"async\" height=\"606\" loading=\"lazy\" sizes=\"auto, (max-width: 1240px) 100vw, 1240px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5acd8a67d.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5acd8a67d.png 1240w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5acd8a67d-300x147.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5acd8a67d-1030x503.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5acd8a67d-768x375.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5acd8a67d-150x73.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5acd8a67d-400x195.png 400w\" width=\"1240\"\/><\/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\/editor\/#mermaid:eNp9ks9ugzAMxu+V+g5RT92hrzCplGqatGrV2LRDtIMJ7ohEAYW0Xd9++QsZicYlxr\/P8YfNqelurAYhyXu2XBD1DJfyW0Bfk9Wu4dhK8gJ3FCsL9XPoSt7gtu+pjYgKvyb8iaVm6tCg4Qwk71onwLZaLuZ9tsdn8gQSb3AP2rgMDeh\/lxw4E92A4soZDsE1HypXXBnVJyksD9y+ispyEyQER9FVFya1xIUpEdzPalRGZMOZKGk5BwnRdLXPPKNr41crShjwYe5YK6zjlMQZ1SLvOSV7w4oPdG0OsgNWjzRpd\/8jUbTQ+E8Lp1xIwXuk9vDjCFrtz8AbtUlqAqKiuNP4X5HN5tGv3CL7T8V592KAW3QM\/IpjMu02wcaVen+uwdgsz+K8maVN+7aTB1\/whwQVk53Qna+aUVfn2GjWMLuGRDO\/hmSVh79WnyhS\" 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\/editor\/#mermaid:eNp1UrtOwzAU3fMVVqd26C8gNS1CSCAqWmCIGPIwcUTiREnaql\/QgakDA0KIRggJWGClHlP1P\/wnOE+7MfGS5N5zfO65OXeuvzCRHsZgqiqAnWhm2KEeINA5o+Q5APcoTUwEULrBdidHZOfcNxwXDoJAo+QD28Ci5D17OGC3puQJ27c19AYaEm4BjQIAsaU0ZAfjU3Cix3ChL7leWdCGlDwyPsO08q+dTOWBzTxnYvyKqwiGk7mpjXgTYHv\/Q8kLY6S\/4swXoSWDd+t9gotFcOQ49K2ZGTexEd2+YRAguv30BLC+9CCWwDHSMQKxnya41VXxM5ixb+A6lKxmh8ZGqtYd7hOmS15FVMNhr2GxlSZ47UlmW1mia4F2CS0n0roqCwbAiBnJQ7Lyikav1bO4IyP9wsyMn24c7nwSh04AtSnfX1ni2see7rgsLloWq\/yjIVcnGfT7R1XOFB5cqVy+5\/UyU1K9yo\/U4HGRW3U4isHKu2udkSqV8\/0pYmC5egk\/aHA8n0Mcq+Q0mgVLOQxw3imWLetUS\/+PU\/X+AGZdjf0=\" \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=\"28720\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">flowchart TB\n    subgraph \"L\u1edbp kh\u00e1ch h\u00e0ng\"\n        MobileApp[\u1ee8ng d\u1ee5ng di \u0111\u1ed9ng]\n        WebApp[\u1ee8ng d\u1ee5ng web]\n    end\n\n    subgraph \"API Gateway\"\n        Gateway[C\u1ed5ng API]\n    end\n\n    subgraph \"Vi d\u1ecbch v\u1ee5\"\n        UserSvc[D\u1ecbch v\u1ee5 ng\u01b0\u1eddi d\u00f9ng]\n        OrderSvc[D\u1ecbch v\u1ee5 \u0111\u01a1n h\u00e0ng]\n        ProductSvc[D\u1ecbch v\u1ee5 s\u1ea3n ph\u1ea9m]\n        PaymentSvc[D\u1ecbch v\u1ee5 thanh to\u00e1n]\n    end\n\n    subgraph \"L\u1edbp d\u1eef li\u1ec7u\"\n        UserDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng)]\n        OrderDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01a1n h\u00e0ng)]\n        ProductDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u s\u1ea3n ph\u1ea9m)]\n        Redis[(B\u1ed9 nh\u1edb \u0111\u1ec7m Redis)]\n    end\n\n    subgraph \"D\u1ecbch v\u1ee5 b\u00ean ngo\u00e0i\"\n        Stripe[Thanh to\u00e1n Stripe]\n        EmailAPI[API Email]\n    end\n\n    MobileApp --&gt; Gateway\n    WebApp --&gt; Gateway\n    Gateway --&gt; UserSvc\n    Gateway --&gt; OrderSvc\n    Gateway --&gt; ProductSvc\n    Gateway --&gt; PaymentSvc\n\n    UserSvc --&gt; UserDB\n    UserSvc --&gt; Redis\n    OrderSvc --&gt; OrderDB\n    OrderSvc --&gt; Redis\n    ProductSvc --&gt; ProductDB\n    ProductSvc --&gt; Redis\n\n    PaymentSvc --&gt; Stripe\n    OrderSvc --&gt; EmailAPI\n    PaymentSvc --&gt; EmailAPI\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNp1UrtOwzAU3fMVVqd26C8gNS1CSCAqWmCIGPIwcUTiREnaql\/QgakDA0KIRggJWGClHlP1P\/wnOE+7MfGS5N5zfO65OXeuvzCRHsZgqiqAnWhm2KEeINA5o+Q5APcoTUwEULrBdidHZOfcNxwXDoJAo+QD28Ci5D17OGC3puQJ27c19AYaEm4BjQIAsaU0ZAfjU3Cix3ChL7leWdCGlDwyPsO08q+dTOWBzTxnYvyKqwiGk7mpjXgTYHv\/Q8kLY6S\/4swXoSWDd+t9gotFcOQ49K2ZGTexEd2+YRAguv30BLC+9CCWwDHSMQKxnya41VXxM5ixb+A6lKxmh8ZGqtYd7hOmS15FVMNhr2GxlSZ47UlmW1mia4F2CS0n0roqCwbAiBnJQ7Lyikav1bO4IyP9wsyMn24c7nwSh04AtSnfX1ni2see7rgsLloWq\/yjIVcnGfT7R1XOFB5cqVy+5\/UyU1K9yo\/U4HGRW3U4isHKu2udkSqV8\/0pYmC5egk\/aHA8n0Mcq+Q0mgVLOQxw3imWLetUS\/+PU\/X+AGZdjf0=\" \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\/editor\/#mermaid:eNp9ks9ugzAMxu+V+g5RT92hrzCplGqatGrV2LRDtIMJ7ohEAYW0Xd9++QsZicYlxr\/P8YfNqelurAYhyXu2XBD1DJfyW0Bfk9Wu4dhK8gJ3FCsL9XPoSt7gtu+pjYgKvyb8iaVm6tCg4Qwk71onwLZaLuZ9tsdn8gQSb3AP2rgMDeh\/lxw4E92A4soZDsE1HypXXBnVJyksD9y+ispyEyQER9FVFya1xIUpEdzPalRGZMOZKGk5BwnRdLXPPKNr41crShjwYe5YK6zjlMQZ1SLvOSV7w4oPdG0OsgNWjzRpd\/8jUbTQ+E8Lp1xIwXuk9vDjCFrtz8AbtUlqAqKiuNP4X5HN5tGv3CL7T8V592KAW3QM\/IpjMu02wcaVen+uwdgsz+K8maVN+7aTB1\/whwQVk53Qna+aUVfn2GjWMLuGRDO\/hmSVh79WnyhS\" 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=\"28721\"><em data-nodeid=\"28908\">V\u00ed d\u1ee5: Ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 ho\u00e0n ch\u1ec9nh v\u1edbi b\u1ed9 nh\u1edb \u0111\u1ec7m, c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 c\u00e1c ph\u1ee5 thu\u1ed9c b\u00ean ngo\u00e0i<\/em><\/p>\n<h3 data-nodeid=\"28722\">V\u00ed d\u1ee5 2: Lu\u1ed3ng x\u00e1c th\u1ef1c ng\u01b0\u1eddi d\u00f9ng (Bi\u1ec3u \u0111\u1ed3 tr\u00ecnh t\u1ef1)<\/h3>\n<p data-nodeid=\"28723\">Bi\u1ec3u \u0111\u1ed3 tr\u00ecnh t\u1ef1 r\u1ea5t ho\u00e0n h\u1ea3o \u0111\u1ec3 t\u00e0i li\u1ec7u h\u00f3a c\u00e1c t\u01b0\u01a1ng t\u00e1c ph\u1ee9c t\u1ea1p gi\u1eefa c\u00e1c d\u1ecbch v\u1ee5.<\/p>\n<p id=\"MosCkLQ\"><img alt=\"\" class=\"alignnone size-full wp-image-25229\" decoding=\"async\" height=\"1006\" loading=\"lazy\" sizes=\"auto, (max-width: 1513px) 100vw, 1513px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ae0ac741.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ae0ac741.png 1513w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ae0ac741-300x199.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ae0ac741-1030x685.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ae0ac741-768x511.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ae0ac741-150x100.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ae0ac741-400x266.png 400w\" width=\"1513\"\/><\/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\/editor\/#mermaid:eNqNU8Fu00AQvSPxD3OqqEhFgujFh0ptUxAgUajTckTj9cRexd4Ns+NE5usZe52ENgbqg727fjPvzZvZQD8bcobmFgvG+uUL0Acb8a6pM+K4XyOLNXaNTuA+jJ2+Z++EXH7857KRMt0YwNAvISXeWEPjiedXHa5bwRwFMwwjwGs0JXW4O8ptiNtj1E2NthqI+\/WBOYI7lrOLi53yBG70y2CYcnJisQoRtwModqglga+36QLeVL6wDl5Rl32i5CFsPeenMWzAalQsLIFvDXELTVdc1kIfdVAyvzr7k+COpGEHJYaS8n1qOInhuXrzlGUf+kBsl+0hZmvV9cxwu5YYM\/S4EnjAyuZw\/bTivyT+QI4YheDT9wWIX5Ebg\/ftSCAVzwSBQrBePVpRm\/Taf9h8AiJVArOST48TPOrI2+kUbj\/D6zHGfVsGh5N+HJiMKFIdCmXmkYeBpCoQfHSb59S7G5wEFmyLQu1e6oF2IbYbK2L5j+530xncO71FpWf7i\/J\/qU5LvwVi9gy1uoXFMMv7yxTfX7wa7zeqZmCcHHReLrvBPd\/pRBGq1xImqtisAI3xjV6IpTLMzqG27jd9uT2k\" 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\/editor\/#mermaid:eNqVU8Fu00AQvfcr5oSoSEWC6MWHSjRBRQS1iBjBDTn2yruKvTb2bkWOVQ8ceuqpQlUFURShIkW0ggv2gYOj\/Mf+CbPrlNQ4LRAp0to77817b8YpeSsJd0mHOX7ihGuAP0eKiMuwTxLzGDuJYC6LHS5g159fqPyMgVf84H7teoc5EXhM5e85iESXnrq1okdS0N6+C04KHZUfuRT2VT6Bd8XIBUFVflmHvExJ0tnWiPZ8BKnKP4Kn8q8Q6FYS+O2q2o5LiQZvq\/wDcGxxCrNjRIbwgngsrQEehw4LVkg079dMeTWIja2tVdYt2KUqm8Zoq\/jOfRCMY+PZIR65uTBUq5BIuIjJgud7PRvuB5GP6LtES2hAiGgBAyQ5l+uGZVGOwDIsC+xEDlF3NuF\/BIRySASGyUBLwMb1nnaisrE2fVBpheqLMYT4p8U3B+78bQpLUb+ZXy\/HXKXuq+wStfXdZBgLgy6XMRBgL+ND4DiGABua2xua2CobRUbn01f2ikKzERY8m19IiCkrvmCyA23JAolhvGFew2hEMyhuxC1ogY8uz9ZrZDeO\/kGzCXtduFeTsXLeSFNdKQvaVA5VfoieTQ0GgEub\/eQ6qbF5Qo4DifkxXWb4SZCS63ENyuOtqV1tuwXdYoqrTiO0LMDVXSj0C0yysrQ6mWwitIwR+\/c8HjZb0C3lzI71y7GL2Rfn8X8H88T4NQM6uvq0jEw0eFIqItxbrtAOZeDSIkNSPemF0sbSd8+RsIno7HPJOq1YbIBZDRDFJ4bHSOeCVBF2bW1qC5n4Bay1LBo=\" \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=\"28724\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">sequenceDiagram\n    autonumber\n    participant Ng\u01b0\u1eddi d\u00f9ng\n    participant Giao di\u1ec7n tr\u01b0\u1edbc\n    participant AuthSvc as D\u1ecbch v\u1ee5 x\u00e1c th\u1ef1c\n    participant UserDB as C\u01a1 s\u1edf d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng\n    participant Cache as B\u1ed9 nh\u1edb \u0111\u1ec7m Redis\n    participant EmailSvc as D\u1ecbch v\u1ee5 Email\n\n    Ng\u01b0\u1eddi d\u00f9ng-&gt;&gt;Giao di\u1ec7n tr\u01b0\u1edbc: Nh\u1eadp th\u00f4ng tin \u0111\u0103ng nh\u1eadp\n    Giao di\u1ec7n tr\u01b0\u1edbc-&gt;&gt;AuthSvc: POST \/login (email, m\u1eadt kh\u1ea9u)\n    AuthSvc-&gt;&gt;UserDB: Truy v\u1ea5n ng\u01b0\u1eddi d\u00f9ng theo email\n    UserDB--&gt;&gt;AuthSvc: Tr\u1ea3 v\u1ec1 m\u1eadt kh\u1ea9u \u0111\u00e3 m\u00e3 h\u00f3a &amp; d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng\n    AuthSvc-&gt;&gt;AuthSvc: X\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u b\u1eb1ng bcrypt\n    \n    alt Th\u00f4ng tin h\u1ee3p l\u1ec7\n        AuthSvc-&gt;&gt;AuthSvc: T\u1ea1o m\u00e3 JWT\n        AuthSvc-&gt;&gt;Cache: L\u01b0u phi\u00ean (kh\u00f3a: user_id, th\u1eddi h\u1ea1n: 1 gi\u1edd)\n        AuthSvc--&gt;&gt;Giao di\u1ec7n tr\u01b0\u1edbc: 200 OK + m\u00e3 JWT\n        Giao di\u1ec7n tr\u01b0\u1edbc--&gt;&gt;Ng\u01b0\u1eddi d\u00f9ng: Chuy\u1ec3n h\u01b0\u1edbng \u0111\u1ebfn b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n\n    else Th\u00f4ng tin kh\u00f4ng h\u1ee3p l\u1ec7\n        AuthSvc-&gt;&gt;EmailSvc: K\u00edch ho\u1ea1t c\u1ea3nh b\u00e1o \u0111\u0103ng nh\u1eadp th\u1ea5t b\u1ea1i\n        AuthSvc--&gt;&gt;Giao di\u1ec7n tr\u01b0\u1edbc: 401 Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p\n        Giao di\u1ec7n tr\u01b0\u1edbc--&gt;&gt;Ng\u01b0\u1eddi d\u00f9ng: Hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o l\u1ed7i\n    end\n    \n    Ghi ch\u00fa tr\u00ean AuthSvc,EmailSvc: Sau 5 l\u1ea7n th\u1eed th\u1ea5t b\u1ea1i, kh\u00f3a t\u00e0i kho\u1ea3n trong 15 ph\u00fat\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqVU8Fu00AQvfcr5oSoSEWC6MWHSjRBRQS1iBjBDTn2yruKvTb2bkWOVQ8ceuqpQlUFURShIkW0ggv2gYOj\/Mf+CbPrlNQ4LRAp0to77817b8YpeSsJd0mHOX7ihGuAP0eKiMuwTxLzGDuJYC6LHS5g159fqPyMgVf84H7teoc5EXhM5e85iESXnrq1okdS0N6+C04KHZUfuRT2VT6Bd8XIBUFVflmHvExJ0tnWiPZ8BKnKP4Kn8q8Q6FYS+O2q2o5LiQZvq\/wDcGxxCrNjRIbwgngsrQEehw4LVkg079dMeTWIja2tVdYt2KUqm8Zoq\/jOfRCMY+PZIR65uTBUq5BIuIjJgud7PRvuB5GP6LtES2hAiGgBAyQ5l+uGZVGOwDIsC+xEDlF3NuF\/BIRySASGyUBLwMb1nnaisrE2fVBpheqLMYT4p8U3B+78bQpLUb+ZXy\/HXKXuq+wStfXdZBgLgy6XMRBgL+ND4DiGABua2xua2CobRUbn01f2ikKzERY8m19IiCkrvmCyA23JAolhvGFew2hEMyhuxC1ogY8uz9ZrZDeO\/kGzCXtduFeTsXLeSFNdKQvaVA5VfoieTQ0GgEub\/eQ6qbF5Qo4DifkxXWb4SZCS63ENyuOtqV1tuwXdYoqrTiO0LMDVXSj0C0yysrQ6mWwitIwR+\/c8HjZb0C3lzI71y7GL2Rfn8X8H88T4NQM6uvq0jEw0eFIqItxbrtAOZeDSIkNSPemF0sbSd8+RsIno7HPJOq1YbIBZDRDFJ4bHSOeCVBF2bW1qC5n4Bay1LBo=\" \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\/editor\/#mermaid:eNqNU8Fu00AQvSPxD3OqqEhFgujFh0ptUxAgUajTckTj9cRexd4Ns+NE5usZe52ENgbqg727fjPvzZvZQD8bcobmFgvG+uUL0Acb8a6pM+K4XyOLNXaNTuA+jJ2+Z++EXH7857KRMt0YwNAvISXeWEPjiedXHa5bwRwFMwwjwGs0JXW4O8ptiNtj1E2NthqI+\/WBOYI7lrOLi53yBG70y2CYcnJisQoRtwModqglga+36QLeVL6wDl5Rl32i5CFsPeenMWzAalQsLIFvDXELTVdc1kIfdVAyvzr7k+COpGEHJYaS8n1qOInhuXrzlGUf+kBsl+0hZmvV9cxwu5YYM\/S4EnjAyuZw\/bTivyT+QI4YheDT9wWIX5Ebg\/ftSCAVzwSBQrBePVpRm\/Taf9h8AiJVArOST48TPOrI2+kUbj\/D6zHGfVsGh5N+HJiMKFIdCmXmkYeBpCoQfHSb59S7G5wEFmyLQu1e6oF2IbYbK2L5j+530xncO71FpWf7i\/J\/qU5LvwVi9gy1uoXFMMv7yxTfX7wa7zeqZmCcHHReLrvBPd\/pRBGq1xImqtisAI3xjV6IpTLMzqG27jd9uT2k\" 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=\"28725\"><em data-nodeid=\"28914\">V\u00ed d\u1ee5: Lu\u1ed3ng x\u00e1c th\u1ef1c chi ti\u1ebft hi\u1ec3n th\u1ecb c\u00e1c \u0111\u01b0\u1eddng d\u1eabn th\u00e0nh c\u00f4ng v\u00e0 th\u1ea5t b\u1ea1i, bao g\u1ed3m c\u00e1c t\u00e1c d\u1ee5ng ph\u1ee5 nh\u01b0 b\u1ed9 nh\u1edb \u0111\u1ec7m v\u00e0 c\u1ea3nh b\u00e1o<\/em><\/p>\n<h3 data-nodeid=\"28726\">V\u00ed d\u1ee5 3: C\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y tr\u00ean AWS (Bi\u1ec3u \u0111\u1ed3 l\u1edbp)<\/h3>\n<p data-nodeid=\"28727\">Bi\u1ec3u \u0111\u1ed3 l\u1edbp kh\u00f4ng ch\u1ec9 d\u00e0nh cho m\u00e3\u2014ch\u00fang c\u00f3 th\u1ec3 m\u00f4 h\u00ecnh h\u00f3a c\u00e1c t\u00e0i nguy\u00ean \u0111\u00e1m m\u00e2y v\u00e0 m\u1ed1i quan h\u1ec7 gi\u1eefa ch\u00fang.<\/p>\n<p id=\"xdKtVYE\"><img alt=\"\" class=\"alignnone size-full wp-image-25230\" decoding=\"async\" height=\"1005\" loading=\"lazy\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5af55bb75.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5af55bb75.png 698w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5af55bb75-208x300.png 208w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5af55bb75-104x150.png 104w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5af55bb75-400x576.png 400w\" width=\"698\"\/><\/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\/editor\/#mermaid:eNqNk01rwzAMhu+D\/oeQ0z5o2cd9sLUr9DAo7djVyI5ITR072EpHO\/bf5zTp5qQO1CejR4le65WEAudmEnILxegq8UfUkeRzOU2+m0B97hxZqfNEyMwyrozYnjOLuTQ6iAuLQLiuuEa6vglAhgr74Gd0FdZvYEwC7EAq4FJJ2rOD0XihSm6MQtCJdKysuJIiYEAEYrMyFeEHcIUDot6mjwvtCLTAmDLZMkb7MqIKCslkFsSlpsSRsZAjy3nnA7Ddjvm0shOw6N8z1LzVbD0DAg4uqhN1LmNt26F1XQcHFZ6aWVSKJINDgAi2uNZQuo2hnuT6Vzi3pujzvvlPr5XYxu3nR8I0FHjBCJ50tk\/zOQx17XDoQ1UqA9lc\/vveTKn50n3QE7p4eV\/5AjGd1scHVJbGT9+eZUZUBWo6m8Plkfc25hz8aal3NX1Ik\/H4OUlv03Z3GtbuUYiDKY7n3E8m\/hoMUaSMz6krtUY1CeF61EltdxoYzmQAfwGDlzGH\" 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\/editor\/#mermaid:eNqNU8tqwzAQvPcrjE99kNDHvdAmDeRQCEnpVazkxVkiS0aSU5LSf6\/sOLVsq7Q62TOLdjQ7KyRYOyfIDRQXiT+iBpL31Sz5bP7rc2OdIZUngjLDuNRiN6IM5qRVBwuD4HBTcYXu8qrDM5Q4wL8ugsYnJtIb9kASOElyB3bUCv+ljmstEVRClpUVlyQ6CpwDsV3ryuEbcIkxNS+z+6WyDpTAiCRqKeYO5VgOFMQo62BSLrFOG8iR5TwsB9OzyBeV4b9B\/4qoWev5Zg4OONiYPFQ5RWzao7G9Uf0m7OxdUUlHDI4d42CHGwWl3WrXV1rfgwujiwHdn\/HDcyV20SnzhmAKCvwzYmd97YN8CUNVTzIwvSqlhmxBP+M9hVB\/qAHeE7h8el37uyP6jIfj6krt03VgmRZVgcoNc7Zq6P4mjPBWRL186V2aTCaPSXqdtjvRUO16hGyQ0WjJ7XTqP4OojHv4krpNO5aGD5Nf17SWNFwYu4D7BsRALtY=\" \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=\"28728\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">classDiagram\n    class VPC {\n        +string cidr_block\n        +string region\n        +createSubnet()\n        +deleteSubnet()\n    }\n\n    class Subnet {\n        +string availability_zone\n        +string cidr_block\n        +boolean is_public\n        +attachRouteTable()\n    }\n\n    class EC2Instance {\n        +string instance_type\n        +string ami_id\n        +int storage_gb\n        +start()\n        +stop()\n        +reboot()\n    }\n\n    class RDSDatabase {\n        +string engine\n        +string version\n        +int storage_gb\n        +boolean multi_az\n        +takeSnapshot()\n        +restoreFromSnapshot()\n    }\n\n    class S3Bucket {\n        +string bucket_name\n        +string region\n        +boolean versioning_enabled\n        +uploadFile()\n        +downloadFile()\n    }\n\n    class IAMRole {\n        +string role_name\n        +string policy_document\n        +attachPolicy()\n        +detachPolicy()\n    }\n\n    VPC \"1\" --&gt; \"*\" Subnet\n    Subnet \"1\" --&gt; \"*\" EC2Instance\n    Subnet \"1\" --&gt; \"0..1\" RDSDatabase\n    VPC \"1\" --&gt; \"0..*\" S3Bucket\n    EC2Instance --&gt; IAMRole\n    RDSDatabase --&gt; IAMRole\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNU8tqwzAQvPcrjE99kNDHvdAmDeRQCEnpVazkxVkiS0aSU5LSf6\/sOLVsq7Q62TOLdjQ7KyRYOyfIDRQXiT+iBpL31Sz5bP7rc2OdIZUngjLDuNRiN6IM5qRVBwuD4HBTcYXu8qrDM5Q4wL8ugsYnJtIb9kASOElyB3bUCv+ljmstEVRClpUVlyQ6CpwDsV3ryuEbcIkxNS+z+6WyDpTAiCRqKeYO5VgOFMQo62BSLrFOG8iR5TwsB9OzyBeV4b9B\/4qoWev5Zg4OONiYPFQ5RWzao7G9Uf0m7OxdUUlHDI4d42CHGwWl3WrXV1rfgwujiwHdn\/HDcyV20SnzhmAKCvwzYmd97YN8CUNVTzIwvSqlhmxBP+M9hVB\/qAHeE7h8el37uyP6jIfj6krt03VgmRZVgcoNc7Zq6P4mjPBWRL186V2aTCaPSXqdtjvRUO16hGyQ0WjJ7XTqP4OojHv4krpNO5aGD5Nf17SWNFwYu4D7BsRALtY=\" \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\/editor\/#mermaid:eNqNk01rwzAMhu+D\/oeQ0z5o2cd9sLUr9DAo7djVyI5ITR072EpHO\/bf5zTp5qQO1CejR4le65WEAudmEnILxegq8UfUkeRzOU2+m0B97hxZqfNEyMwyrozYnjOLuTQ6iAuLQLiuuEa6vglAhgr74Gd0FdZvYEwC7EAq4FJJ2rOD0XihSm6MQtCJdKysuJIiYEAEYrMyFeEHcIUDot6mjwvtCLTAmDLZMkb7MqIKCslkFsSlpsSRsZAjy3nnA7Ddjvm0shOw6N8z1LzVbD0DAg4uqhN1LmNt26F1XQcHFZ6aWVSKJINDgAi2uNZQuo2hnuT6Vzi3pujzvvlPr5XYxu3nR8I0FHjBCJ50tk\/zOQx17XDoQ1UqA9lc\/vveTKn50n3QE7p4eV\/5AjGd1scHVJbGT9+eZUZUBWo6m8Plkfc25hz8aal3NX1Ik\/H4OUlv03Z3GtbuUYiDKY7n3E8m\/hoMUaSMz6krtUY1CeF61EltdxoYzmQAfwGDlzGH\" 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=\"28729\"><em data-nodeid=\"28922\">V\u00ed d\u1ee5: M\u00f4 h\u00ecnh h\u00f3a c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng AWS d\u01b0\u1edbi d\u1ea1ng c\u00e1c l\u1edbp v\u1edbi thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c, h\u1eefu \u00edch cho vi\u1ec7c t\u00e0i li\u1ec7u h\u00f3a v\u00e0 l\u1eadp k\u1ebf ho\u1ea1ch C\u01a1 s\u1edf h\u1ea1 t\u1ea7ng d\u01b0\u1edbi d\u1ea1ng M\u00e3<\/em><\/p>\n<h3 data-nodeid=\"28730\">V\u00ed d\u1ee5 4: X\u1eed l\u00fd \u0111\u01a1n h\u00e0ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed (Bi\u1ec3u \u0111\u1ed3 tr\u1ea1ng th\u00e1i)<\/h3>\n<p data-nodeid=\"28731\">Bi\u1ec3u \u0111\u1ed3 tr\u1ea1ng th\u00e1i xu\u1ea5t s\u1eafc trong vi\u1ec7c hi\u1ec3n th\u1ecb c\u00e1ch c\u00e1c th\u1ef1c th\u1ec3 chuy\u1ec3n \u0111\u1ed5i qua c\u00e1c tr\u1ea1ng th\u00e1i kh\u00e1c nhau.<\/p>\n<p id=\"XBAUpbM\"><img alt=\"\" class=\"alignnone size-full wp-image-25231\" decoding=\"async\" height=\"1649\" loading=\"lazy\" sizes=\"auto, (max-width: 978px) 100vw, 978px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700.png 978w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700-178x300.png 178w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700-611x1030.png 611w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700-768x1295.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700-911x1536.png 911w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700-89x150.png 89w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b0ab5700-400x674.png 400w\" width=\"978\"\/><\/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\/editor\/#mermaid:eNp9lEtrGzEQx++Ffochx4KhFHoxbSA4mAQaGuz2VHpQtOO16l1J1cPGlH73avTwSq4dnyzN\/6d57ljHHN4L1hs2zvYf3r6B8Pvx7ifMZrewYMbN4btFA6zrLAiHo00SMiXNFvlO+aLTRnHEoHUKeDYlInP5LrLP7DiidM8oOyH7\/IL1L6NwFpTp0CSo1TUoubM20o9SOBGyAZ1s0IfDgR1r9\/9h+THRzYstBMDJuPHD60y8XTIxYAV3yAchsbvgNEkvFc2gMwJtCfwaFdpSuvHCZKekBR7a0LoSSfuVqrdQciPMSPGtQ+2ApzNzQknAMbycqFac0jOomYl1vQtJ95IaemAGt8pbbFwWZeTWW6E1OXygCPchVhoEZkJ+uZlZEdWP8pth0opQiEXSgBZ8Z8Hr2sVJFqF7HER4mJzkv8eSWan7SRKBFe4FHkL\/Ru2IWuFvj9aBT7UnY+2tlZ9VvkxnjZ1723jZZR\/kLnIiDyeRZG8dNkT1yp0O39M+9s9rrcInx9KNrcmiqsA8rEQ+KYlHGjFvTnN5JppyjJMAfFC2HWFLawJuHkS\/na2E3cHSMN+lOb4BZtM5HuFPQppFQoY1VwYn23QXJV\/UgR4OmcarT\/Dx\/VUthVGLbz836mKO2icmPRtST+ewHFgPGxWmEtk4EbWojabU9hXt2SZY4S\/krhB\/L22fao9NdQskxcxCQ6yNuyQshb6nuUp0VeIrGzBH\/Q8\/JtE7\" 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\/editor\/#mermaid:eNqNVcGKE0EQvQv+Q7FHISCCl6B7UCHCwrLIHhTxMJmE6WF3ZpakE3YRD7IHDx40BxEPotkgYSNBYb04g3josP\/Rf2J1dyZTne5JzCGEdL1Xr6pedfd5wLuP4iDqBUljeOfmDcDP81svoNHYhVYsi3fAxNc0asJ+dP1TFp9j6IjfaQSciVkCfZlPUjhhMr9MDJZgNMchC1IGPBPj1OEI2eBMFucpLEYy\/5sC7wWaeYUwlOabEGnihwyZaLBDH8liHiP3NSK0IEPkADXd4r3KfYoQOBZ\/bN49RHyJgct8nEEoiw\/1KutpllnExOamZXGlkkEofpVat9DZYJl\/49BGkbFN25bFWxRffMeGy2IU13WVMmydHQYrUTrW6cVGVnSXw9ZWpokq69gttXu2bORqqnAqxiGkmGaOMlt66N0kiI\/pQUnlRREDoCXRy6ZnTThg4iI188CTDI5Y5g6bQqohR3GQlavTUr8V3nhxqAKHOnG5AaTSCkhk2dHNZSEeorIiTxddHlvtUqdJ7bNiKU6h9jHNjxALwoEw\/FuMm\/BMzAa4Hvl0AKk9XhJGNbkktQYpd3mNxxZFBLAM9QNHR712vXtE9\/nMD6I6a3h1zsf0D5wv5pmEeCOKGXRUl9\/wJjyQxSd9SarByOIjXnQYZQWZRNvJqpGtLgW71MM1sDnVe0pa5gVXzad7gj2\/sq3UV28G7Owh6DxRl7aagM6B9WFl0xh66Pcg24GgD\/6wl4aKvjYkcDHSv6sY90xDnpTJ9CVzooSbw3tw9\/b\/o0Nl\/hK6e9\/C0iCNetpN8O645PoGnJoNUWjtzA7KGOhVT5m4IgX4UP4SDhxXbMRveALWb\/xXyyHWP4LeWeH7J+YhQ6sgL7e2tRy2IfZPetvjutaAf8JnmF8=\" \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=\"28732\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">stateDiagram-v2\r\n    [*] --&gt; Gi\u1ecf h\u00e0ng: Ng\u01b0\u1eddi d\u00f9ng th\u00eam s\u1ea3n ph\u1ea9m\r\n    Gi\u1ecf h\u00e0ng --&gt; Thanh to\u00e1n: Ng\u01b0\u1eddi d\u00f9ng chuy\u1ec3n \u0111\u1ebfn trang thanh to\u00e1n\r\n    \r\n    Thanh to\u00e1n --&gt; Ch\u1edd thanh to\u00e1n: Ng\u01b0\u1eddi d\u00f9ng g\u1eedi \u0111\u01a1n h\u00e0ng\r\n    Ch\u1edd thanh to\u00e1n --&gt; \u0110ang x\u1eed l\u00fd thanh to\u00e1n: Kh\u1edfi t\u1ea1o c\u1ed5ng thanh to\u00e1n\r\n    \r\n    \u0110ang x\u1eed l\u00fd thanh to\u00e1n --&gt; \u0110\u00e3 thanh to\u00e1n: Thanh to\u00e1n th\u00e0nh c\u00f4ng\r\n    \u0110ang x\u1eed l\u00fd thanh to\u00e1n --&gt; Thanh to\u00e1n th\u1ea5t b\u1ea1i: Thanh to\u00e1n b\u1ecb t\u1eeb ch\u1ed1i\r\n    \r\n    Thanh to\u00e1n th\u1ea5t b\u1ea1i --&gt; Thanh to\u00e1n: Ng\u01b0\u1eddi d\u00f9ng th\u1eed l\u1ea1i thanh to\u00e1n\r\n    Thanh to\u00e1n th\u1ea5t b\u1ea1i --&gt; [*]: Ng\u01b0\u1eddi d\u00f9ng b\u1ecf gi\u1ecf h\u00e0ng\r\n    \r\n    \u0110\u00e3 thanh to\u00e1n --&gt; \u0110\u01a1n h\u00e0ng x\u00e1c nh\u1eadn: G\u1eedi email x\u00e1c nh\u1eadn\r\n    \u0110\u01a1n h\u00e0ng x\u00e1c nh\u1eadn --&gt; \u0110ang chu\u1ea9n b\u1ecb: Ph\u00e2n c\u00f4ng cho kho\r\n    \r\n    \u0110ang chu\u1ea9n b\u1ecb --&gt; \u0110\u00e3 giao h\u00e0ng: Giao cho \u0111\u01a1n v\u1ecb v\u1eadn chuy\u1ec3n\r\n    \u0110\u00e3 giao h\u00e0ng --&gt; \u0110ang v\u1eadn chuy\u1ec3n: \u0110\u01a1n v\u1ecb v\u1eadn chuy\u1ec3n nh\u1eadn h\u00e0ng\r\n    \r\n    \u0110ang v\u1eadn chuy\u1ec3n --&gt; \u0110\u00e3 giao: Giao h\u00e0ng th\u00e0nh c\u00f4ng\r\n    \u0110\u00e3 giao --&gt; Nh\u1eafc \u0111\u00e1nh gi\u00e1: Y\u00eau c\u1ea7u ng\u01b0\u1eddi d\u00f9ng \u0111\u00e1nh gi\u00e1\r\n    \r\n    Nh\u1eafc \u0111\u00e1nh gi\u00e1 --&gt; [*]: Ng\u01b0\u1eddi d\u00f9ng g\u1eedi \u0111\u00e1nh gi\u00e1\r\n    \u0110\u00e3 giao --&gt; Y\u00eau c\u1ea7u ho\u00e0n ti\u1ec1n: Ng\u01b0\u1eddi d\u00f9ng kh\u1edfi t\u1ea1o y\u00eau c\u1ea7u ho\u00e0n ti\u1ec1n\r\n    \r\n    Y\u00eau c\u1ea7u ho\u00e0n ti\u1ec1n --&gt; Ho\u00e0n ti\u1ec1n \u0111\u01b0\u1ee3c ph\u00ea duy\u1ec7t: B\u1ed9 ph\u1eadn h\u1ed7 tr\u1ee3 ph\u00ea duy\u1ec7t\r\n    Ho\u00e0n ti\u1ec1n \u0111\u01b0\u1ee3c ph\u00ea duy\u1ec7t --&gt; \u0110\u00e3 x\u1eed l\u00fd ho\u00e0n ti\u1ec1n: Ti\u1ec1n \u0111\u01b0\u1ee3c ho\u00e0n l\u1ea1i\r\n    \u0110\u00e3 x\u1eed l\u00fd ho\u00e0n ti\u1ec1n --&gt; [*]: \u0110\u01a1n h\u00e0ng \u0111\u00f3ng\r\n    \r\n    state \"Ki\u1ec3m tra gian l\u1eadn r\u1ee7i ro cao\" as Ki\u1ec3m tra gian l\u1eadn {\r\n        [*] --&gt; Ki\u1ec3m tra \u0111i\u1ec3m\r\n        Ki\u1ec3m tra \u0111i\u1ec3m --&gt; R\u1ee7i ro th\u1ea5p: \u0110i\u1ec3m &lt; 50\r\n        Ki\u1ec3m tra \u0111i\u1ec3m --&gt; R\u1ee7i ro cao: \u0110i\u1ec3m &gt;= 50\r\n        R\u1ee7i ro cao --&gt; Xem x\u00e9t th\u1ee7 c\u00f4ng: \u0110\u00e1nh d\u1ea5u cho nh\u00f3m\r\n        Xem x\u00e9t th\u1ee7 c\u00f4ng --&gt; R\u1ee7i ro th\u1ea5p: Ph\u00ea duy\u1ec7t\r\n        Xem x\u00e9t th\u1ee7 c\u00f4ng --&gt; Thanh to\u00e1n th\u1ea5t b\u1ea1i: T\u1eeb ch\u1ed1i\r\n    }\r\n    \r    Ch\u1edd thanh to\u00e1n --&gt; Ki\u1ec3m tra gian l\u1eadn: K\u00edch ho\u1ea1t \u0111\u00e1nh gi\u00e1 r\u1ee7i ro\r\n    Ki\u1ec3m tra gian l\u1eadn --&gt; \u0110ang x\u1eed l\u00fd thanh to\u00e1n: R\u1ee7i ro th\u1ea5p\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNVcGKE0EQvQv+Q7FHISCCl6B7UCHCwrLIHhTxMJmE6WF3ZpakE3YRD7IHDx40BxEPotkgYSNBYb04g3josP\/Rf2J1dyZTne5JzCGEdL1Xr6pedfd5wLuP4iDqBUljeOfmDcDP81svoNHYhVYsi3fAxNc0asJ+dP1TFp9j6IjfaQSciVkCfZlPUjhhMr9MDJZgNMchC1IGPBPj1OEI2eBMFucpLEYy\/5sC7wWaeYUwlOabEGnihwyZaLBDH8liHiP3NSK0IEPkADXd4r3KfYoQOBZ\/bN49RHyJgct8nEEoiw\/1KutpllnExOamZXGlkkEofpVat9DZYJl\/49BGkbFN25bFWxRffMeGy2IU13WVMmydHQYrUTrW6cVGVnSXw9ZWpokq69gttXu2bORqqnAqxiGkmGaOMlt66N0kiI\/pQUnlRREDoCXRy6ZnTThg4iI188CTDI5Y5g6bQqohR3GQlavTUr8V3nhxqAKHOnG5AaTSCkhk2dHNZSEeorIiTxddHlvtUqdJ7bNiKU6h9jHNjxALwoEw\/FuMm\/BMzAa4Hvl0AKk9XhJGNbkktQYpd3mNxxZFBLAM9QNHR712vXtE9\/nMD6I6a3h1zsf0D5wv5pmEeCOKGXRUl9\/wJjyQxSd9SarByOIjXnQYZQWZRNvJqpGtLgW71MM1sDnVe0pa5gVXzad7gj2\/sq3UV28G7Owh6DxRl7aagM6B9WFl0xh66Pcg24GgD\/6wl4aKvjYkcDHSv6sY90xDnpTJ9CVzooSbw3tw9\/b\/o0Nl\/hK6e9\/C0iCNetpN8O645PoGnJoNUWjtzA7KGOhVT5m4IgX4UP4SDhxXbMRveALWb\/xXyyHWP4LeWeH7J+YhQ6sgL7e2tRy2IfZPetvjutaAf8JnmF8=\" \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\/editor\/#mermaid:eNp9lEtrGzEQx++Ffochx4KhFHoxbSA4mAQaGuz2VHpQtOO16l1J1cPGlH73avTwSq4dnyzN\/6d57ljHHN4L1hs2zvYf3r6B8Pvx7ifMZrewYMbN4btFA6zrLAiHo00SMiXNFvlO+aLTRnHEoHUKeDYlInP5LrLP7DiidM8oOyH7\/IL1L6NwFpTp0CSo1TUoubM20o9SOBGyAZ1s0IfDgR1r9\/9h+THRzYstBMDJuPHD60y8XTIxYAV3yAchsbvgNEkvFc2gMwJtCfwaFdpSuvHCZKekBR7a0LoSSfuVqrdQciPMSPGtQ+2ApzNzQknAMbycqFac0jOomYl1vQtJ95IaemAGt8pbbFwWZeTWW6E1OXygCPchVhoEZkJ+uZlZEdWP8pth0opQiEXSgBZ8Z8Hr2sVJFqF7HER4mJzkv8eSWan7SRKBFe4FHkL\/Ru2IWuFvj9aBT7UnY+2tlZ9VvkxnjZ1723jZZR\/kLnIiDyeRZG8dNkT1yp0O39M+9s9rrcInx9KNrcmiqsA8rEQ+KYlHGjFvTnN5JppyjJMAfFC2HWFLawJuHkS\/na2E3cHSMN+lOb4BZtM5HuFPQppFQoY1VwYn23QXJV\/UgR4OmcarT\/Dx\/VUthVGLbz836mKO2icmPRtST+ewHFgPGxWmEtk4EbWojabU9hXt2SZY4S\/krhB\/L22fao9NdQskxcxCQ6yNuyQshb6nuUp0VeIrGzBH\/Q8\/JtE7\" 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=\"28733\"><em data-nodeid=\"28928\">V\u00ed d\u1ee5: M\u00e1y tr\u1ea1ng th\u00e1i \u0111\u01a1n h\u00e0ng th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed ho\u00e0n ch\u1ec9nh v\u1edbi tr\u1ea1ng th\u00e1i l\u1ed3ng nhau ph\u00e1t hi\u1ec7n gian l\u1eadn<\/em><\/p>\n<h3 data-nodeid=\"28734\">V\u00ed d\u1ee5 5: L\u1eadp k\u1ebf ho\u1ea1ch Sprint v\u1edbi GitHub Issues (Bi\u1ec3u \u0111\u1ed3 Git)<\/h3>\n<p data-nodeid=\"28735\">Bi\u1ec3u \u0111\u1ed3 Git c\u00f3 th\u1ec3 bi\u1ec3u di\u1ec5n c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c v\u01b0\u1ee3t ra ngo\u00e0i ch\u00ednh Git.<\/p>\n<p id=\"dtaJlXg\"><img alt=\"\" class=\"alignnone size-full wp-image-25232\" decoding=\"async\" height=\"531\" loading=\"lazy\" sizes=\"auto, (max-width: 956px) 100vw, 956px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b2658679.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b2658679.png 956w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b2658679-300x167.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b2658679-768x427.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b2658679-150x83.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b2658679-400x222.png 400w\" width=\"956\"\/><\/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\/editor\/#mermaid:eNqNk99qwjAUxu8He4dDhN35p91d7kZRO3BT1D1AtGdpsE1Ccjr17RcrFbd200JbCCff953fSaSiqRM2f3yA8GxNWSoClXFgK+uUJlgUQmulJQM6WuSQvk7TWXjX5x3n78YJvc3B11v6UVvsw6ODFRl3hF40ijjMjFQaFkIiu1Udc6gXliiVJydIGc063DeV\/FSHYW4o\/Nqiab3O4aWiHNZmhxrGB6vcsQmQ43ZnKvrVRYlOYpf2rdjPPLTn\/d64LET3SD8yX9xKofS1U+MOJGTQ\/IoGo8GI\/Q07bueYoKDKIfTiE+lVbqwNA4REOGL\/VgfSSZNrUph9ly0eLDpVoqahUH2HJynUWT0V31ZfzBMOb7NA4LoQxjqMH7uJ3NVYoDt3WeCdhjNhLkO8D27cwI1bcK\/tllig8AjvhtAHkOcLEcETxJCY0hZIyL4B+\/jyVA==\" 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\/editor\/#mermaid:eNqVkzFLw0AUx3fB7\/CI4KY2cevq0AoVFfMF0vTMHTGXEF8kHcXBwUEdHQQjOAgWdBITxOFKv8d9E19SW6qpYgO5I5fL\/\/9\/v3vxBLZiJ+LLS0CXGwaBQBC9JhgdnQ8i8HX+ATzUeeZyOIhiIdEA7EesCe3tVrtDtz3+djx2Y0fSzuNq55pZl91S9wm4POnr4lyC9EbPurgV0FNv0oMVs2E2wSYND4bXwzOaJC9zGIsLWU0YXlUSvnr\/8d6YE7mbeIci3eAh0lS3a1frVDUBQaBQmQQ79JmEVGUuINfFizuJyZnrhwn+wBCw2GPzfBYvbrMsTuevCEeUREBAkBB8ivWYfCtuGiVwhJyNMYkG6HhkeGKuN9Ybxu9HadVD2mogOciK8YpVnlxL6OISuLqbIv5jPx3QftIHjNUTLSN3yjFUmZyXgqURi0XAJG44Yi1mpS6TPQdFKI\/rVnu7WxWh4oa83FFG3aSLU0gTnT8g7HTmM\/p3qYS\/o4uLko4uBiQ+om6YLft\/8K0JfKsGf9a8xQVJqRwirjKsfDg1YkgzYSufvv5MMGEVLOMTb15Vxg==\" \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=\"28736\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">gitGraph\r\n    commit id: \"L\u1eadp k\u1ebf ho\u1ea1ch Sprint\" type: HIGHLIGHT\r\n    \r\n    branch sprint-1\r\n    commit id: \"C\u00e2u chuy\u1ec7n ng\u01b0\u1eddi d\u00f9ng #101: Trang \u0111\u0103ng nh\u1eadp\"\r\n    commit id: \"C\u00e2u chuy\u1ec7n ng\u01b0\u1eddi d\u00f9ng #102: \u0110\u0103ng k\u00fd ng\u01b0\u1eddi d\u00f9ng\"\r\n    \r\n    branch bugfix\/hotfix\r\n    commit id: \"Hotfix: H\u1ebft h\u1ea1n Token x\u00e1c th\u1ef1c\"\r\n    checkout sprint-1\r\n    merge bugfix\/hotfix\r\n    \r\n    commit id: \"C\u00e2u chuy\u1ec7n ng\u01b0\u1eddi d\u00f9ng #103: \u0110\u1eb7t l\u1ea1i m\u1eadt kh\u1ea9u\"\r\n    \r\n    checkout main\r\n    merge sprint-1 tag: \"v1.0.0\"\r\n    \r\n    branch sprint-2\r\n    commit id: \"T\u00ednh n\u0103ng #201: Gi\u1ecf h\u00e0ng\"\r\n    commit id: \"T\u00ednh n\u0103ng #202: Quy tr\u00ecnh thanh to\u00e1n\"\r\n    \r\n    branch experiment\/ai-recommendations\r\n    commit id: \"POC: \u0110\u1ed9ng c\u01a1 \u0111\u1ec1 xu\u1ea5t ML\"\r\n    \r\n    checkout sprint-2\r\n    commit id: \"T\u00ednh n\u0103ng #203: L\u1ecbch s\u1eed \u0111\u01a1n h\u00e0ng\"\r\n    \r\n    checkout main\r\n    merge sprint-2 tag: \"v2.0.0\"\r\n    \r\n    commit id: \"Ghi ch\u00fa ph\u00e1t h\u00e0nh: Ho\u00e0n th\u00e0nh Sprint 1 &amp; 2\"\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqVkzFLw0AUx3fB7\/CI4KY2cevq0AoVFfMF0vTMHTGXEF8kHcXBwUEdHQQjOAgWdBITxOFKv8d9E19SW6qpYgO5I5fL\/\/9\/v3vxBLZiJ+LLS0CXGwaBQBC9JhgdnQ8i8HX+ATzUeeZyOIhiIdEA7EesCe3tVrtDtz3+djx2Y0fSzuNq55pZl91S9wm4POnr4lyC9EbPurgV0FNv0oMVs2E2wSYND4bXwzOaJC9zGIsLWU0YXlUSvnr\/8d6YE7mbeIci3eAh0lS3a1frVDUBQaBQmQQ79JmEVGUuINfFizuJyZnrhwn+wBCw2GPzfBYvbrMsTuevCEeUREBAkBB8ivWYfCtuGiVwhJyNMYkG6HhkeGKuN9Ybxu9HadVD2mogOciK8YpVnlxL6OISuLqbIv5jPx3QftIHjNUTLSN3yjFUmZyXgqURi0XAJG44Yi1mpS6TPQdFKI\/rVnu7WxWh4oa83FFG3aSLU0gTnT8g7HTmM\/p3qYS\/o4uLko4uBiQ+om6YLft\/8K0JfKsGf9a8xQVJqRwirjKsfDg1YkgzYSufvv5MMGEVLOMTb15Vxg==\" \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\/editor\/#mermaid:eNqNk99qwjAUxu8He4dDhN35p91d7kZRO3BT1D1AtGdpsE1Ccjr17RcrFbd200JbCCff953fSaSiqRM2f3yA8GxNWSoClXFgK+uUJlgUQmulJQM6WuSQvk7TWXjX5x3n78YJvc3B11v6UVvsw6ODFRl3hF40ijjMjFQaFkIiu1Udc6gXliiVJydIGc063DeV\/FSHYW4o\/Nqiab3O4aWiHNZmhxrGB6vcsQmQ43ZnKvrVRYlOYpf2rdjPPLTn\/d64LET3SD8yX9xKofS1U+MOJGTQ\/IoGo8GI\/Q07bueYoKDKIfTiE+lVbqwNA4REOGL\/VgfSSZNrUph9ly0eLDpVoqahUH2HJynUWT0V31ZfzBMOb7NA4LoQxjqMH7uJ3NVYoDt3WeCdhjNhLkO8D27cwI1bcK\/tllig8AjvhtAHkOcLEcETxJCY0hZIyL4B+\/jyVA==\" 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=\"28737\"><em data-nodeid=\"28934\">V\u00ed d\u1ee5: Tr\u1ef1c quan h\u00f3a qu\u1ea3n l\u00fd d\u1ef1 \u00e1n, c\u00e1c Sprint v\u00e0 c\u00e1c nh\u00e1nh t\u00ednh n\u0103ng d\u01b0\u1edbi d\u1ea1ng bi\u1ec3u \u0111\u1ed3 Git<\/em><\/p>\n<hr data-nodeid=\"28738\"\/>\n<h2 data-nodeid=\"28739\">Cu\u1ed9c c\u00e1ch m\u1ea1ng AI trong v\u1ebd bi\u1ec3u \u0111\u1ed3<\/h2>\n<p data-nodeid=\"28740\">B\u1ea5t ch\u1ea5p s\u1ef1 tinh t\u1ebf c\u1ee7a Mermaid, c\u00fa ph\u00e1p c\u00f3 th\u1ec3 l\u00e0 m\u1ed9t r\u00e0o c\u1ea3n. Ai mu\u1ed1n g\u1ee1 l\u1ed7i m\u1ed9t m\u0169i t\u00ean b\u1ecb l\u1ec7ch ho\u1eb7c m\u1ed9t d\u1ea5u ngo\u1eb7c b\u1ecb thi\u1ebfu khi b\u1ea1n \u0111ang c\u1ed1 g\u1eafng t\u00e0i li\u1ec7u h\u00f3a m\u1ed9t h\u1ec7 th\u1ed1ng?<\/p>\n<p data-nodeid=\"28741\">\u0110\u00e2y ch\u00ednh l\u00e0 n\u01a1i c\u00e1c c\u00f4ng c\u1ee5 \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 b\u1edfi AI thay \u0111\u1ed5i m\u1ecdi th\u1ee9.<\/p>\n<h3 data-nodeid=\"28742\">T\u1ef1 \u0111\u1ed9ng s\u1eeda l\u1ed7i b\u1eb1ng AI<\/h3>\n<p data-nodeid=\"28743\">C\u00e1c c\u00f4ng c\u1ee5 nh\u01b0 <strong data-nodeid=\"28954\">VPasCode<\/strong> (n\u1ec1n t\u1ea3ng V\u1ebd bi\u1ec3u \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 c\u1ee7a Visual Paradigm) v\u00e0 <strong data-nodeid=\"28955\">Mermaid Chart<\/strong> \u0111\u00e3 t\u00edch h\u1ee3p c\u00e1c m\u00f4 h\u00ecnh AI (nh\u01b0 Google Gemini v\u00e0 OpenAI) c\u00f3 th\u1ec3:<\/p>\n<ul data-nodeid=\"28744\">\n<li data-nodeid=\"28745\">\n<p data-nodeid=\"28746\"><strong data-nodeid=\"28960\">T\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n<\/strong> l\u1ed7i c\u00fa ph\u00e1p<\/p>\n<\/li>\n<li data-nodeid=\"28747\">\n<p data-nodeid=\"28748\"><strong data-nodeid=\"28965\">S\u1eeda<\/strong> c\u00e1c bi\u1ec3u \u0111\u1ed3 b\u1ecb l\u1ed7i ch\u1ec9 v\u1edbi m\u1ed9t c\u00fa nh\u1ea5p chu\u1ed9t<\/p>\n<\/li>\n<li data-nodeid=\"28749\">\n<p data-nodeid=\"28750\"><strong data-nodeid=\"28970\">\u0110\u1ec1 xu\u1ea5t<\/strong> c\u00e1c c\u1ea3i ti\u1ebfn cho c\u1ea5u tr\u00fac bi\u1ec3u \u0111\u1ed3<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"28751\">H\u00e3y c\u00f9ng xem \u0111i\u1ec1u n\u00e0y ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o:<\/p>\n<p data-nodeid=\"28752\"><strong data-nodeid=\"28977\">M\u00e3 Mermaid b\u1ecb l\u1ed7i:<\/strong><\/p>\n<p>\u00a0<\/p>\n<p id=\"BhGdFVf\"><img alt=\"\" class=\"alignnone size-full wp-image-25233\" decoding=\"async\" height=\"613\" loading=\"lazy\" sizes=\"auto, (max-width: 1546px) 100vw, 1546px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab.png 1546w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab-300x119.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab-1030x408.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab-768x305.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab-1536x609.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab-150x59.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5b504c2ab-400x159.png 400w\" width=\"1546\"\/><\/p>\n<p data-nodeid=\"28752\"><strong data-nodeid=\"28977\">\u00a0<\/strong><\/p>\n<pre data-nodeid=\"28753\"><code>flowchart LR\r\n    A[Frontend] --&gt; B(API Gateway\r\n    B --&gt; C[User Service]\r\n    C --&gt; D[(Database\r\n    D --&gt; E[Cache]\r\n<\/code><\/pre>\n<p data-nodeid=\"28754\"><strong data-nodeid=\"28981\">M\u00e3 \u0111\u00e3 \u0111\u01b0\u1ee3c AI s\u1eeda:<\/strong><\/p>\n<p>\u00a0<\/p>\n<p id=\"IfVwudL\"><img alt=\"\" class=\"alignnone size-full wp-image-25234\" decoding=\"async\" height=\"1337\" loading=\"lazy\" sizes=\"auto, (max-width: 2281px) 100vw, 2281px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47.png 2281w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47-300x176.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47-1030x604.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47-768x450.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47-1536x900.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47-2048x1200.png 2048w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47-150x88.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5d5383d47-400x234.png 400w\" width=\"2281\"\/><\/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\/editor\/#mermaid:eNpLy8kvT85ILCpR8Ani5VIAAsdot6L8vJLUvJRYBV1dOwUnDccATwX3xJLU8sRKTYgaJ7CMc3RocWqRQnBqUVlmcmosRMoZLOUSreGSWJKYlFicqgmVcAFLuEY7JyZnpMYCAPA\/IGQ=\" 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\/editor\/#mermaid:eNpLy8kvT85ILCpR8AniUgACx2i3ovy8ktS8lFgFXV07BScNxwBPBffEktTyxEpNsBInsIRzdGhxapFCcGpRWWZyaixYxhks4xKt4ZJYkpiUWJyqCRF3AYu7RjsnJmekxgIAn1cgMA==\" \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=\"28755\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">flowchart LR\n    A[Frontend] --&gt; B(API Gateway)\n    B --&gt; C[User Service]\n    C --&gt; D[(Database)]\n    D --&gt; E[Cache]\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLy8kvT85ILCpR8AniUgACx2i3ovy8ktS8lFgFXV07BScNxwBPBffEktTyxEpNsBInsIRzdGhxapFCcGpRWWZyaixYxhks4xKt4ZJYkpiUWJyqCRF3AYu7RjsnJmekxgIAn1cgMA==\" \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\/editor\/#mermaid:eNpLy8kvT85ILCpR8Ani5VIAAsdot6L8vJLUvJRYBV1dOwUnDccATwX3xJLU8sRKTYgaJ7CMc3RocWqRQnBqUVlmcmosRMoZLOUSreGSWJKYlFicqgmVcAFLuEY7JyZnpMYCAPA\/IGQ=\" 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=\"28756\">AI nh\u1eadn di\u1ec7n d\u1ea5u ngo\u1eb7c \u0111\u01a1n v\u00e0 d\u1ea5u ngo\u1eb7c vu\u00f4ng b\u1ecb thi\u1ebfu, sau \u0111\u00f3 s\u1eeda ch\u00fang ngay l\u1eadp t\u1ee9c.<\/p>\n<h3 data-nodeid=\"28757\">T\u1eeb ng\u00f4n ng\u1eef t\u1ef1 nhi\u00ean sang s\u01a1 \u0111\u1ed3<\/h3>\n<p data-nodeid=\"28758\">C\u00f3 l\u1ebd t\u00ednh n\u0103ng m\u1ea1nh m\u1ebd nh\u1ea5t l\u00e0 t\u1ea1o s\u01a1 \u0111\u1ed3 t\u1eeb c\u00e1c m\u00f4 t\u1ea3 b\u1eb1ng ng\u00f4n ng\u1eef t\u1ef1 nhi\u00ean. V\u1edbi c\u00e1c c\u00f4ng c\u1ee5 nh\u01b0 <strong data-nodeid=\"28991\">OpenDocs<\/strong> (n\u1ec1n t\u1ea3ng t\u00e0i li\u1ec7u c\u1ee7a VP), b\u1ea1n ch\u1ec9 c\u1ea7n m\u00f4 t\u1ea3 nh\u1eefng g\u00ec m\u00ecnh mu\u1ed1n:<\/p>\n<blockquote data-nodeid=\"28759\">\n<p data-nodeid=\"28760\">\u201cT\u1ea1o m\u1ed9t s\u01a1 \u0111\u1ed3 lu\u1ed3ng th\u1ec3 hi\u1ec7n ng\u01b0\u1eddi d\u00f9ng \u0111\u0103ng nh\u1eadp. N\u1ebfu th\u00f4ng tin x\u00e1c th\u1ef1c h\u1ee3p l\u1ec7, chuy\u1ec3n h\u01b0\u1edbng \u0111\u1ebfn b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n. N\u1ebfu kh\u00f4ng h\u1ee3p l\u1ec7, hi\u1ec3n th\u1ecb l\u1ed7i v\u00e0 cho ph\u00e9p 3 l\u1ea7n th\u1eed. Sau 3 l\u1ea7n th\u1ea5t b\u1ea1i, kh\u00f3a t\u00e0i kho\u1ea3n.\u201d<\/p>\n<\/blockquote>\n<p data-nodeid=\"28761\"><strong data-nodeid=\"28998\">Mermaid do AI t\u1ea1o ra:<\/strong><\/p>\n<p>\u00a0<\/p>\n<p id=\"gyFaFpN\"><img alt=\"\" class=\"alignnone size-full wp-image-25235\" decoding=\"async\" height=\"948\" loading=\"lazy\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5dbd78391.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5dbd78391.png 883w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5dbd78391-279x300.png 279w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5dbd78391-768x825.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5dbd78391-140x150.png 140w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5dbd78391-400x429.png 400w\" width=\"883\"\/><\/p>\n<p data-nodeid=\"28761\"><strong data-nodeid=\"28998\">\u00a0<\/strong><\/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\/editor\/#mermaid:eNp1UU1LAzEQvQv+hzlJe+hBxJsIZbuHgkqxKkjYQ0ym3eBuIpPURbr+d\/Ox2VXRnN7MvDfzZrJrTCdqTg4eVqcn4N\/W+WjGHi0SLJ3D9s1ZuDF7pas5LBbXUGqHVBBKyyKEsuWqgTPYcGs7Q7JKjSZelD3xRknu8JgBhBpqp3hjP5NkLHlBH4MeVtzWL4aTZPcoFaFw4MyUrf5QrvV70hY1ite8xHHc5gouhoE\/CFH7jLaHtRaErffGRpRvAYU5hMWGuVM97LitTVcSGWIBQYRwi9byPQ6CkfLrlv\/5uTO9v75PChEGs4BhCGDn25xfQuv\/Jum\/MZMh1HLZIDkWkA\/FgZT7gJhLH5d9ZebgS87Yhozw3kNgq3mijXfPtC8e9r3b\" 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\/editor\/#mermaid:eNp1kr9KA0EQxnufYirRIoWInQgSg4p\/QCIiHCkud2t2yd1u2OwhIbGQFBZWqUREMKQQQUGJjXeFxQXfY9\/E2d0kxojXHLP3fTO\/\/ebOInEeUF8qON5aAHzKCosl77D29aqzewZh\/sFroKjOXmDUG3Wx4FSnL43KMhQKG1DiisiiJGHTO7TnUIp9FsEiHGCloI6HT0nF9v7RWuuJH7HQV6R9mvcDO+LNvPJ3M5DxC+uZiIyjs6OzQQMinV11YMtv0qrwZegVadLSWZcDNcx36B71dPrJoarTga2Yzi4TRGFGVvnbd88NpTPti5QE9U2lSNxQzXZZZz38kD7ycRTrsOr4fulss2I+7MAuDySJCVfesc2sqrNbhxVDc66ZA5o6bDZlKs5LUgrp7Vhoq7yepFPN+8Jw3jDnnarnVvIPobtuB\/YFfggCkSAmng19UPkDw5yECQ6UFDhrZQ0aNE+VmzRjcZyEh5sRkcrbxpswIHb5gfFTh2mWICA2P8MYdmIZw4ZL3lHSwmn5M3rqGJEy90yDyrLVTxc90X8D0Z0asw==\" \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=\"28762\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">flowchart TD\n    Start([Ng\u01b0\u1eddi d\u00f9ng th\u1eed \u0111\u0103ng nh\u1eadp]) --&gt; EnterCreds[Nh\u1eadp Email &amp; M\u1eadt kh\u1ea9u]\n    EnterCreds --&gt; Validate{X\u00e1c th\u1ef1c th\u00f4ng tin}\n    Validate --&gt;|H\u1ee3p l\u1ec7| Dashboard[Chuy\u1ec3n h\u01b0\u1edbng \u0111\u1ebfn b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n]\n    Validate --&gt;|Kh\u00f4ng h\u1ee3p l\u1ec7| CheckAttempts{S\u1ed1 l\u1ea7n th\u1eed &lt; 3}\n    CheckAttempts --&gt;|C\u00f3| Increment[T\u0103ng b\u1ed9 \u0111\u1ebfm s\u1ed1 l\u1ea7n th\u1eed]\n    Increment --&gt; ShowError[Hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o l\u1ed7i]\n    ShowError --&gt; EnterCreds\n    CheckAttempts --&gt;|Kh\u00f4ng| LockAccount[Kh\u00f3a t\u00e0i kho\u1ea3n trong 15 ph\u00fat]\n    LockAccount --&gt; SendAlert[G\u1eedi email c\u1ea3nh b\u00e1o b\u1ea3o m\u1eadt]\n    SendAlert --&gt; End([Quy tr\u00ecnh k\u1ebft th\u00fac])\n    Dashboard --&gt; End\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNp1kr9KA0EQxnufYirRIoWInQgSg4p\/QCIiHCkud2t2yd1u2OwhIbGQFBZWqUREMKQQQUGJjXeFxQXfY9\/E2d0kxojXHLP3fTO\/\/ebOInEeUF8qON5aAHzKCosl77D29aqzewZh\/sFroKjOXmDUG3Wx4FSnL43KMhQKG1DiisiiJGHTO7TnUIp9FsEiHGCloI6HT0nF9v7RWuuJH7HQV6R9mvcDO+LNvPJ3M5DxC+uZiIyjs6OzQQMinV11YMtv0qrwZegVadLSWZcDNcx36B71dPrJoarTga2Yzi4TRGFGVvnbd88NpTPti5QE9U2lSNxQzXZZZz38kD7ycRTrsOr4fulss2I+7MAuDySJCVfesc2sqrNbhxVDc66ZA5o6bDZlKs5LUgrp7Vhoq7yepFPN+8Jw3jDnnarnVvIPobtuB\/YFfggCkSAmng19UPkDw5yECQ6UFDhrZQ0aNE+VmzRjcZyEh5sRkcrbxpswIHb5gfFTh2mWICA2P8MYdmIZw4ZL3lHSwmn5M3rqGJEy90yDyrLVTxc90X8D0Z0asw==\" \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\/editor\/#mermaid:eNp1UU1LAzEQvQv+hzlJe+hBxJsIZbuHgkqxKkjYQ0ym3eBuIpPURbr+d\/Ox2VXRnN7MvDfzZrJrTCdqTg4eVqcn4N\/W+WjGHi0SLJ3D9s1ZuDF7pas5LBbXUGqHVBBKyyKEsuWqgTPYcGs7Q7JKjSZelD3xRknu8JgBhBpqp3hjP5NkLHlBH4MeVtzWL4aTZPcoFaFw4MyUrf5QrvV70hY1ite8xHHc5gouhoE\/CFH7jLaHtRaErffGRpRvAYU5hMWGuVM97LitTVcSGWIBQYRwi9byPQ6CkfLrlv\/5uTO9v75PChEGs4BhCGDn25xfQuv\/Jum\/MZMh1HLZIDkWkA\/FgZT7gJhLH5d9ZebgS87Yhozw3kNgq3mijXfPtC8e9r3b\" 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<h3 data-nodeid=\"28763\">Chuy\u1ec3n \u0111\u1ed5i gi\u1eefa c\u00e1c lo\u1ea1i s\u01a1 \u0111\u1ed3<\/h3>\n<p data-nodeid=\"28764\">AI c\u0169ng c\u00f3 th\u1ec3 chuy\u1ec3n \u0111\u1ed5i gi\u1eefa c\u00e1c \u0111\u1ecbnh d\u1ea1ng s\u01a1 \u0111\u1ed3 kh\u00e1c nhau. C\u1ea7n chuy\u1ec3n \u0111\u1ed5i s\u01a1 \u0111\u1ed3 PlantUML sang Mermaid? C\u00e1c c\u00f4ng c\u1ee5 AI c\u00f3 th\u1ec3 x\u1eed l\u00fd vi\u1ec7c \u0111\u00f3:<\/p>\n<p data-nodeid=\"28765\"><strong data-nodeid=\"29004\">\u0110\u1ea7u v\u00e0o PlantUML:<\/strong><\/p>\n<p>\u00a0<\/p>\n<p id=\"GzAyyzr\"><img alt=\"\" class=\"alignnone size-full wp-image-25236\" decoding=\"async\" height=\"358\" loading=\"lazy\" sizes=\"auto, (max-width: 390px) 100vw, 390px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ddd0aafe.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ddd0aafe.png 390w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ddd0aafe-300x275.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ddd0aafe-150x138.png 150w\" width=\"390\"\/><\/p>\n<p data-nodeid=\"28765\"><strong data-nodeid=\"29004\">\u00a0<\/strong><\/p>\n<pre data-nodeid=\"28766\"><code>@startuml\nactor User\nparticipant \"Frontend\" as FE\nparticipant \"Backend\" as BE\ndatabase \"DB\" as DB\n\nUser -&gt; FE: Click Login\nFE -&gt; BE: POST \/login\nBE -&gt; DB: SELECT user\nDB --&gt; BE: user data\nBE --&gt; FE: JWT token\nFE --&gt; User: Show Dashboard\n@enduml\n<\/code><\/pre>\n<p data-nodeid=\"28767\"><strong data-nodeid=\"29008\">Mermaid \u0111\u00e3 \u0111\u01b0\u1ee3c AI chuy\u1ec3n \u0111\u1ed5i:<\/strong><\/p>\n<p>\u00a0<\/p>\n<p id=\"BSjicDY\"><img alt=\"\" class=\"alignnone size-full wp-image-25237\" decoding=\"async\" height=\"483\" loading=\"lazy\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5df81122e.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5df81122e.png 850w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5df81122e-300x170.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5df81122e-768x436.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5df81122e-150x85.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5df81122e-400x227.png 400w\" width=\"850\"\/><\/p>\n<p data-nodeid=\"28767\"><strong data-nodeid=\"29008\">\u00a0<\/strong><\/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\/editor\/#mermaid:eNptjkEOgjAQRfcm3mEuQNyzYCHgwpBoQo3roTTQgC22JV7faUpV1Fk0mb6fN9+K+ywUF4XEzuBtuwEa5E4buFhhwj6hcZLLCZWDg9HKCdX+kj3y4S8o0GGDVgQSXi9PsizaUshHyQeodCdVSEREqcWcwvlUM9iN79BCKBOPpFCXVZkzmF\/1I0o+VR5DS2QtWnU6Xhk4Tf9fjSjk+9OpXj9Ib\/tGo2mfzR1mgw==\" 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\/editor\/#mermaid:eNptjkEOgjAQRfeeYi5A3HfBQsCFIdGEGtdD20ADttCWeH2HhhqJdjFJ5\/28+V7NizJClRo7h88D0EMRrIO7Vy5+J3RBCz2hCXB21gRl5A84oRj+7UsM2KJXEcSxerM8TyYGxajFALXttImBRCi0WRncrg2H4\/jJbIAi6QCDpqqrgsOSeieSfYtWCpLITrPrc3lwCJb2+zaUWavTnd6+SO771qKTb4W3ZfQ=\" \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=\"28768\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">sequenceDiagram\n    actor User\n    participant Frontend\n    participant Backend\n    participant Database\n    \n    User-&gt;&gt;Frontend: Click Login\n    Frontend-&gt;&gt;Backend: POST \/login\n    Backend-&gt;&gt;Database: SELECT user\n    Database--&gt;&gt;Backend: user data\n    Backend--&gt;&gt;Frontend: JWT token\n    Frontend--&gt;&gt;User: Show Dashboard\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNptjkEOgjAQRfeeYi5A3HfBQsCFIdGEGtdD20ADttCWeH2HhhqJdjFJ5\/28+V7NizJClRo7h88D0EMRrIO7Vy5+J3RBCz2hCXB21gRl5A84oRj+7UsM2KJXEcSxerM8TyYGxajFALXttImBRCi0WRncrg2H4\/jJbIAi6QCDpqqrgsOSeieSfYtWCpLITrPrc3lwCJb2+zaUWavTnd6+SO771qKTb4W3ZfQ=\" \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\/editor\/#mermaid:eNptjkEOgjAQRfcm3mEuQNyzYCHgwpBoQo3roTTQgC22JV7faUpV1Fk0mb6fN9+K+ywUF4XEzuBtuwEa5E4buFhhwj6hcZLLCZWDg9HKCdX+kj3y4S8o0GGDVgQSXi9PsizaUshHyQeodCdVSEREqcWcwvlUM9iN79BCKBOPpFCXVZkzmF\/1I0o+VR5DS2QtWnU6Xhk4Tf9fjSjk+9OpXj9Ib\/tGo2mfzR1mgw==\" 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<h3 data-nodeid=\"28769\">T\u00edch h\u1ee3p tr\u1ee3 l\u00fd \u1ea3o t\u01b0\u01a1ng t\u00e1c<\/h3>\n<p data-nodeid=\"28770\">M\u1ed9t s\u1ed1 n\u1ec1n t\u1ea3ng hi\u1ec7n nay cung c\u1ea5p giao di\u1ec7n tr\u1ee3 l\u00fd \u1ea3o \u0111\u1ec3 t\u1ea1o s\u01a1 \u0111\u1ed3. B\u1ea1n c\u00f3 th\u1ec3 tr\u00f2 chuy\u1ec7n:<\/p>\n<blockquote data-nodeid=\"28771\">\n<p data-nodeid=\"28772\"><strong data-nodeid=\"29022\">Ng\u01b0\u1eddi d\u00f9ng:<\/strong> \u201cTh\u00eam m\u1ed9t d\u1ecbch v\u1ee5 m\u1edbi t\u00ean l\u00e0 \u2018D\u1ecbch v\u1ee5 Kho\u2019 v\u00e0o s\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac c\u1ee7a t\u00f4i.\u201d<\/p>\n<p data-nodeid=\"28773\"><strong data-nodeid=\"29032\">AI:<\/strong> \u201cT\u00f4i s\u1ebd th\u00eam m\u1ed9t D\u1ecbch v\u1ee5 Kho \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i v\u1edbi c\u00e1c D\u1ecbch v\u1ee5 S\u1ea3n ph\u1ea9m v\u00e0 \u0110\u01a1n h\u00e0ng hi\u1ec7n c\u00f3 c\u1ee7a b\u1ea1n.\u201d<\/p>\n<p data-nodeid=\"28774\"><em data-nodeid=\"29036\">S\u01a1 \u0111\u1ed3 \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt t\u1ef1 \u0111\u1ed9ng<\/em><\/p>\n<p data-nodeid=\"28775\"><strong data-nodeid=\"29048\">Ng\u01b0\u1eddi d\u00f9ng:<\/strong> \u201cTh\u1ef1c ra, h\u00e3y l\u00e0m cho n\u00f3 c\u0169ng k\u1ebft n\u1ed1i v\u1edbi m\u1ed9t c\u01a1 s\u1edf d\u1eef li\u1ec7u m\u1edbi t\u00ean l\u00e0 \u2018InventoryDB\u2019.\u201d<\/p>\n<p data-nodeid=\"28776\"><strong data-nodeid=\"29056\">AI:<\/strong> \u201cXong. D\u1ecbch v\u1ee5 Kho gi\u1edd \u0111\u00e3 k\u1ebft n\u1ed1i v\u1edbi D\u1ecbch v\u1ee5 S\u1ea3n ph\u1ea9m, D\u1ecbch v\u1ee5 \u0110\u01a1n h\u00e0ng v\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u InventoryDB m\u1edbi.\u201d<\/p>\n<\/blockquote>\n<hr data-nodeid=\"28777\"\/>\n<h2 data-nodeid=\"28778\">T\u00edch h\u1ee3p S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng M\u00e3 v\u00e0o Quy tr\u00ecnh L\u00e0m vi\u1ec7c c\u1ee7a B\u1ea1n<\/h2>\n<h3 data-nodeid=\"28779\">B\u01b0\u1edbc 1: B\u1eaft \u0111\u1ea7u t\u1eeb nh\u1eefng \u0111i\u1ec1u nh\u1ecf b\u00e9<\/h3>\n<p data-nodeid=\"28780\">\u0110\u1eebng c\u1ed1 g\u1eafng v\u1ebd s\u01a1 \u0111\u1ed3 to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n c\u00f9ng m\u1ed9t l\u00fac. H\u00e3y b\u1eaft \u0111\u1ea7u v\u1edbi m\u1ed9t th\u00e0nh ph\u1ea7n \u0111\u01a1n l\u1ebb\u2014c\u00f3 th\u1ec3 l\u00e0 lu\u1ed3ng x\u00e1c th\u1ef1c c\u1ee7a b\u1ea1n ho\u1eb7c m\u1ed9t t\u00ednh n\u0103ng m\u1edbi m\u00e0 b\u1ea1n \u0111ang x\u00e2y d\u1ef1ng.<\/p>\n<h3 data-nodeid=\"28781\">B\u01b0\u1edbc 2: Nh\u00fang v\u00e0o T\u00e0i li\u1ec7u<\/h3>\n<p data-nodeid=\"28782\">Gi\u1eef c\u00e1c t\u1ec7p <code data-backticks=\"1\" data-nodeid=\"29066\">.mermaid<\/code> b\u00ean c\u1ea1nh t\u00e0i li\u1ec7u c\u1ee7a b\u1ea1n (v\u00ed d\u1ee5: trong th\u01b0 m\u1ee5c <code data-backticks=\"1\" data-nodeid=\"29068\">\/docs<\/code>). S\u1eed d\u1ee5ng c\u00e1c c\u00f4ng c\u1ee5 nh\u01b0 <code data-backticks=\"1\" data-nodeid=\"29070\">mermaid-cli<\/code> \u0111\u1ec3 hi\u1ec3n th\u1ecb ch\u00fang trong qu\u00e1 tr\u00ecnh x\u00e2y d\u1ef1ng.<\/p>\n<h3 data-nodeid=\"28783\">B\u01b0\u1edbc 3: T\u1eadn d\u1ee5ng \u0110\u1ed9ng c\u01a1 Th\u1ed1ng nh\u1ea5t c\u1ee7a VPasCode<\/h3>\n<p data-nodeid=\"28784\">N\u1ebfu b\u1ea1n l\u00e0m vi\u1ec7c trong m\u1ed9t nh\u00f3m v\u1edbi s\u1edf th\u00edch \u0111a d\u1ea1ng, <strong data-nodeid=\"29082\">VPasCode<\/strong> l\u00e0 v\u00f4 gi\u00e1. N\u00f3 h\u1ed7 tr\u1ee3 nhi\u1ec1u ng\u00f4n ng\u1eef s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 trong m\u1ed9t n\u01a1i:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">YAML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#yaml:eNpdjD0KwkAUBvtA7vBBWo2Q0lYbQSGN9s\/dZ7K4P2GzS0znIbb0dDmJQUSIw5TDFDhYXGrqd07yCqOLEGRh1ANkJQwF0W7zTCpqPJl+k2fAlF5Tes6CvGhVYBGi59KwN6TkspDcaTcatqHsotH4UKDWZMP5dPyLKdCVel6zl8td+haD8\/ebdkMpK\/wosK8wD5tIDb8B1GZNAA==\" 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 YAML 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\">YAML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#yaml:eNpdzDsKwkAYBOA+4B0G0moES1stVVKo\/W92zQb3ETYrYid4hZQ24gEstDKFRU6ynsQgIsRhiik+JsTcGp1iGVMxMox3sfKPs0ZS3+CEr47Y+MfToZmXHDLTAsI0wg07AcsotaSKficAXuXpVR6agmwiMscTt7U8UtwqylhbMJ5Ls1dcuyjfKolPQsSStFtMJ3+YHK2o4D1uWfuu\/IqdsZu1NLuIDfBLiFla3zV06qsrxoM3L1ldbg==\" \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 YAML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-yaml\" data-nodeid=\"28785\"><code class=\"language-yaml\" data-language=\"yaml\" class=\"language-yaml\"># Trong VPasCode, b\u1ea1n c\u00f3 th\u1ec3 k\u1ebft h\u1ee3p linh ho\u1ea1t:\r\ndiagrams\/\r\n  \u251c\u2500\u2500 architecture.mermaid\r\n  \u251c\u2500\u2500 deployment.puml      # PlantUML\r\n  \u251c\u2500\u2500 database-erd.mermaid\r\n  \u2514\u2500\u2500 workflow.d2          # Ng\u00f4n ng\u1eef D2\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#yaml:eNpdzDsKwkAYBOA+4B0G0moES1stVVKo\/W92zQb3ETYrYid4hZQ24gEstDKFRU6ynsQgIsRhiik+JsTcGp1iGVMxMox3sfKPs0ZS3+CEr47Y+MfToZmXHDLTAsI0wg07AcsotaSKficAXuXpVR6agmwiMscTt7U8UtwqylhbMJ5Ls1dcuyjfKolPQsSStFtMJ3+YHK2o4D1uWfuu\/IqdsZu1NLuIDfBLiFla3zV06qsrxoM3L1ldbg==\" \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 YAML 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\/editor\/#yaml:eNpdjD0KwkAUBvtA7vBBWo2Q0lYbQSGN9s\/dZ7K4P2GzS0znIbb0dDmJQUSIw5TDFDhYXGrqd07yCqOLEGRh1ANkJQwF0W7zTCpqPJl+k2fAlF5Tes6CvGhVYBGi59KwN6TkspDcaTcatqHsotH4UKDWZMP5dPyLKdCVel6zl8td+haD8\/ebdkMpK\/wosK8wD5tIDb8B1GZNAA==\" 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 YAML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"28786\">B\u01b0\u1edbc 4: T\u1ef1 \u0111\u1ed9ng h\u00f3a v\u1edbi CI\/CD<\/h3>\n<p data-nodeid=\"28787\">Th\u00eam m\u1ed9t b\u01b0\u1edbc v\u00e0o GitHub Actions ho\u1eb7c GitLab CI c\u1ee7a b\u1ea1n:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">YAML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#yaml:eNpdjrFuwkAQRHtL\/ocRcqSAdFyRzmkoaGlA+YDjbo028e1ad2cRlOTfgzE0dG80mqcxEBepxZ4kUMKOUnQcsGV3Si7mugLSKC1+JwI6Tei4J7Cgee1YAoL6DDNZsFit4yxYLN+vxbwBZPjG5t6Yz2wf6HuGYTQ3o1E0PxO9PCR\/60FOsyOoUF3Vlbnf\/Rh6dQFFsVU\/RpLiCqvgwIWeP7tzRn5Dvoi\/nbXX1Fp70TGZKZvj6L+o2H\/Lq1KD\" 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 YAML 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\">YAML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#yaml:eNpdjztuwkAYhHtLvsPIMhJEWragMw0lDVV8AWOvYcH+F+3aSlBClSIFFeICIDqOgEsQ9\/BN8AMauhmN5tMMAwWp8DCWZfFHyOZlscXn\/Yjbriz2mAidBjKyLUDn5OG3VkCsNGKZCEiC240lRYhUaMBqGJyPftr2nN6wCtoOQKtvjJ4JWxj+kmEiwSTchsgU3J9adV6QTX9Fs5YRKRK2ZVvsudovLyeJ5Hom+DqgGfzrofLVl\/\/8fXPwZWAGMGsKm7G8ch7na5VrVns2zcOlyPgD315bbg==\" \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 YAML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-yaml\" data-nodeid=\"28788\"><code class=\"language-yaml\" data-language=\"yaml\" class=\"language-yaml\">- name: Hi\u1ec3n th\u1ecb S\u01a1 \u0111\u1ed3 Mermaid\r\n  run: |\r\n    for file in $(find docs -name \"*.mermaid\"); do\r\n      npx @mermaid-js\/mermaid-cli -i $file -o ${file%.mermaid}.png\r\n    done\r\n\r\n- name: T\u1ea3i l\u00ean Trang T\u00e0i li\u1ec7u\r\n  run: |\r\n    aws s3 sync docs\/ s3:\/\/your-docs-bucket\/\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#yaml:eNpdjztuwkAYhHtLvsPIMhJEWragMw0lDVV8AWOvYcH+F+3aSlBClSIFFeICIDqOgEsQ9\/BN8AMauhmN5tMMAwWp8DCWZfFHyOZlscXn\/Yjbriz2mAidBjKyLUDn5OG3VkCsNGKZCEiC240lRYhUaMBqGJyPftr2nN6wCtoOQKtvjJ4JWxj+kmEiwSTchsgU3J9adV6QTX9Fs5YRKRK2ZVvsudovLyeJ5Hom+DqgGfzrofLVl\/\/8fXPwZWAGMGsKm7G8ch7na5VrVns2zcOlyPgD315bbg==\" \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 YAML 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\/editor\/#yaml:eNpdjrFuwkAQRHtL\/ocRcqSAdFyRzmkoaGlA+YDjbo028e1ad2cRlOTfgzE0dG80mqcxEBepxZ4kUMKOUnQcsGV3Si7mugLSKC1+JwI6Tei4J7Cgee1YAoL6DDNZsFit4yxYLN+vxbwBZPjG5t6Yz2wf6HuGYTQ3o1E0PxO9PCR\/60FOsyOoUF3Vlbnf\/Rh6dQFFsVU\/RpLiCqvgwIWeP7tzRn5Dvoi\/nbXX1Fp70TGZKZvj6L+o2H\/Lq1KD\" 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 YAML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"28789\">B\u01b0\u1edbc 5: Xem x\u00e9t trong c\u00e1c Y\u00eau c\u1ea7u K\u00e9o (Pull Requests)<\/h3>\n<p data-nodeid=\"28790\">Quy \u0111\u1ecbnh ch\u00ednh s\u00e1ch r\u1eb1ng m\u1ecdi thay \u0111\u1ed5i ki\u1ebfn tr\u00fac \u0111\u1ec1u y\u00eau c\u1ea7u c\u1eadp nh\u1eadt s\u01a1 \u0111\u1ed3. S\u1eed d\u1ee5ng b\u00ecnh lu\u1eadn trong PR \u0111\u1ec3 th\u1ea3o lu\u1eadn c\u00e1c thay \u0111\u1ed5i tr\u1ef1c quan:<\/p>\n<blockquote data-nodeid=\"28791\">\n<p data-nodeid=\"28792\"><strong data-nodeid=\"29098\">Ng\u01b0\u1eddi xem x\u00e9t:<\/strong>  &#8220;Cache kh\u00f4ng l\u1ebd kh\u00f4ng n\u00ean n\u1eb1m gi\u1eefa D\u1ecbch v\u1ee5 \u0110\u01a1n h\u00e0ng v\u00e0 C\u01a1 s\u1edf d\u1eef li\u1ec7u? Hi\u1ec7n t\u1ea1i n\u00f3 ch\u1ec9 \u0111\u01b0\u1ee3c g\u1eafn v\u1edbi D\u1ecbch v\u1ee5 Ng\u01b0\u1eddi d\u00f9ng.&#8221;<\/p>\n<p data-nodeid=\"28793\"><strong data-nodeid=\"29108\">T\u00e1c gi\u1ea3:<\/strong>  &#8220;Ph\u00e1t hi\u1ec7n t\u1ed1t. T\u00f4i s\u1ebd c\u1eadp nh\u1eadt s\u01a1 \u0111\u1ed3.&#8221;<\/p>\n<\/blockquote>\n<hr data-nodeid=\"28794\"\/>\n<h2 data-nodeid=\"28795\">T\u00e1c \u0111\u1ed9ng th\u1ef1c t\u1ebf: M\u1ed9t nghi\u00ean c\u1ee9u \u0111i\u1ec3n h\u00ecnh<\/h2>\n<p data-nodeid=\"28796\">H\u00e3y xem x\u00e9t m\u1ed9t c\u00f4ng ty kh\u1edfi nghi\u1ec7p fintech \u0111\u00e3 \u00e1p d\u1ee5ng S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng M\u00e3 v\u1edbi Mermaid v\u00e0 VPasCode:<\/p>\n<ul data-nodeid=\"28797\">\n<li data-nodeid=\"28798\">\n<p data-nodeid=\"28799\"><strong data-nodeid=\"29115\">Tr\u01b0\u1edbc \u0111\u00e2y:<\/strong> 47 t\u1ec7p Visio t\u0129nh, ph\u1ea7n l\u1edbn \u0111\u00e3 c\u0169 h\u01a1n 6 th\u00e1ng. Nh\u00e2n vi\u00ean m\u1edbi m\u1ea5t 3 tu\u1ea7n \u0111\u1ec3 hi\u1ec3u ki\u1ebfn tr\u00fac.<\/p>\n<\/li>\n<li data-nodeid=\"28800\">\n<p data-nodeid=\"28801\"><strong data-nodeid=\"29120\">Sau khi \u00e1p d\u1ee5ng:<\/strong> 12 s\u01a1 \u0111\u1ed3 Mermaid, t\u1ea5t c\u1ea3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong Git, \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt c\u00f9ng m\u1ed7i t\u00ednh n\u0103ng. Nh\u00e2n vi\u00ean m\u1edbi \u0111\u00e3 l\u00e0m vi\u1ec7c hi\u1ec7u qu\u1ea3 ngay trong tu\u1ea7n \u0111\u1ea7u ti\u00ean.<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"28802\">CTO c\u1ee7a \u0111\u1ed9i nh\u1eadn x\u00e9t: &#8220;Ch\u00fang t\u00f4i \u0111\u00e3 chuy\u1ec3n t\u1eeb vi\u1ec7c s\u01a1 \u0111\u1ed3 ch\u1ec9 l\u00e0 m\u1ed9t \u00f4 ki\u1ec3m tra tu\u00e2n th\u1ee7 sang tr\u1edf th\u00e0nh m\u1ed9t ph\u1ea7n s\u1ed1ng \u0111\u1ed9ng trong quy tr\u00ecnh ph\u00e1t tri\u1ec3n c\u1ee7a ch\u00fang t\u00f4i. Khi tranh lu\u1eadn v\u1ec1 m\u1ed9t ki\u1ebfn tr\u00fac m\u1edbi, ch\u00fang t\u00f4i m\u1edf tr\u00ecnh so\u1ea1n th\u1ea3o Mermaid v\u00e0 ph\u00e1c th\u1ea3o n\u00f3 tr\u1ef1c ti\u1ebfp b\u1eb1ng m\u00e3. \u0110\u00e2y l\u00e0 m\u1ed9t b\u01b0\u1edbc ngo\u1eb7t.&#8221;<\/p>\n<hr data-nodeid=\"28803\"\/>\n<h2 data-nodeid=\"28804\">T\u01b0\u01a1ng lai: T\u00e0i li\u1ec7u li\u00ean t\u1ee5c<\/h2>\n<p data-nodeid=\"28805\">M\u1ee5c ti\u00eau t\u1ed1i th\u01b0\u1ee3ng l\u00e0 &#8220;t\u00e0i li\u1ec7u li\u00ean t\u1ee5c&#8221;, n\u01a1i c\u00e1c s\u01a1 \u0111\u1ed3 \u0111\u01b0\u1ee3c t\u1ea1o t\u1ef1 \u0111\u1ed9ng t\u1eeb c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng ho\u1eb7c m\u00e3 c\u1ee7a b\u1ea1n. C\u00e1c c\u00f4ng c\u1ee5 \u0111\u00e3 b\u1eaft \u0111\u1ea7u xu\u1ea5t hi\u1ec7n c\u00f3 th\u1ec3:<\/p>\n<ul data-nodeid=\"28806\">\n<li data-nodeid=\"28807\">\n<p data-nodeid=\"28808\">Qu\u00e9t c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh Kubernetes v\u00e0 t\u1ea1o s\u01a1 \u0111\u1ed3 c\u1ea5u tr\u00fac d\u1ecbch v\u1ee5<\/p>\n<\/li>\n<li data-nodeid=\"28809\">\n<p data-nodeid=\"28810\">Ph\u00e2n t\u00edch c\u00e1c t\u1ec7p OpenAPI\/Swagger v\u00e0 t\u1ea1o s\u01a1 \u0111\u1ed3 lu\u1ed3ng API<\/p>\n<\/li>\n<li data-nodeid=\"28811\">\n<p data-nodeid=\"28812\">Gi\u00e1m s\u00e1t t\u00e0i nguy\u00ean \u0111\u00e1m m\u00e2y c\u1ee7a b\u1ea1n v\u00e0 t\u1ef1 \u0111\u1ed9ng c\u1eadp nh\u1eadt c\u00e1c s\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"28813\">Mermaid n\u1eb1m \u1edf trung t\u00e2m c\u1ee7a phong tr\u00e0o n\u00e0y, cung c\u1ea5p m\u1ed9t \u0111\u1ecbnh d\u1ea1ng \u0111\u01a1n gi\u1ea3n d\u1ef1a tr\u00ean v\u0103n b\u1ea3n m\u00e0 m\u00e1y m\u00f3c c\u00f3 th\u1ec3 t\u1ea1o ra v\u00e0 con ng\u01b0\u1eddi c\u00f3 th\u1ec3 hi\u1ec3u \u0111\u01b0\u1ee3c.<\/p>\n<hr data-nodeid=\"28814\"\/>\n<h2 data-nodeid=\"28815\">B\u1eaft \u0111\u1ea7u ngay h\u00f4m nay<\/h2>\n<p data-nodeid=\"28816\">S\u1eb5n s\u00e0ng v\u01b0\u1ee3t ra ngo\u00e0i c\u00e1c h\u00ecnh \u1ea3nh t\u0129nh? \u0110\u00e2y l\u00e0 k\u1ebf ho\u1ea1ch h\u00e0nh \u0111\u1ed9ng c\u1ee7a b\u1ea1n:<\/p>\n<ol data-nodeid=\"28817\">\n<li data-nodeid=\"28818\">\n<p data-nodeid=\"28819\"><strong data-nodeid=\"29147\">C\u00e0i \u0111\u1eb7t ti\u1ec7n \u00edch m\u1edf r\u1ed9ng Mermaid<\/strong> trong tr\u00ecnh ph\u00e1t tri\u1ec3n t\u00edch h\u1ee3p (IDE) y\u00eau th\u00edch c\u1ee7a b\u1ea1n (VS Code, IntelliJ)<\/p>\n<\/li>\n<li data-nodeid=\"28820\">\n<p data-nodeid=\"28821\"><strong data-nodeid=\"29156\">T\u1ea1o s\u01a1 \u0111\u1ed3 \u0111\u1ea7u ti\u00ean c\u1ee7a b\u1ea1n<\/strong> trong m\u1ed9t<code data-backticks=\"1\" data-nodeid=\"29152\">.md<\/code> t\u1ec7p b\u1eb1ng c\u00fa ph\u00e1p c\u1ee7a Mermaid<\/p>\n<\/li>\n<li data-nodeid=\"28822\">\n<p data-nodeid=\"28823\"><strong data-nodeid=\"29163\">Kh\u00e1m ph\u00e1 g\u00f3i mi\u1ec5n ph\u00ed c\u1ee7a VPasCode<\/strong> \u0111\u1ec3 tr\u1ea3i nghi\u1ec7m v\u1ebd s\u01a1 \u0111\u1ed3 v\u1edbi s\u1ee9c m\u1ea1nh c\u1ee7a AI<\/p>\n<\/li>\n<li data-nodeid=\"28824\">\n<p data-nodeid=\"28825\"><strong data-nodeid=\"29168\">Kh\u1edfi t\u1ea1o kho l\u01b0u tr\u1eef t\u00e0i li\u1ec7u s\u1ed1ng \u0111\u1ed9ng<\/strong>c\u00f9ng v\u1edbi c\u01a1 s\u1edf m\u00e3 c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<li data-nodeid=\"28826\">\n<p data-nodeid=\"28827\"><strong data-nodeid=\"29173\">Chia s\u1ebb b\u00e0i vi\u1ebft n\u00e0y v\u1edbi \u0111\u1ed9i nh\u00f3m c\u1ee7a b\u1ea1n<\/strong>v\u00e0 b\u1eaft \u0111\u1ea7u cu\u1ed9c tr\u00f2 chuy\u1ec7n<\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"28828\">Ki\u1ebfn tr\u00fac c\u1ee7a b\u1ea1n x\u1ee9ng \u0111\u00e1ng h\u01a1n m\u1ed9t s\u01a1 \u0111\u1ed3 b\u1ee5i b\u1eb7m trong m\u1ed9t th\u01b0 m\u1ee5c b\u1ecb l\u00e3ng qu\u00ean. \u0110\u00e3 \u0111\u1ebfn l\u00fac coi c\u00e1c s\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n nh\u01b0 nh\u1eefng t\u00e0i s\u1ea3n quan tr\u1ecdng m\u00e0 ch\u00fang th\u1ef1c s\u1ef1 l\u00e0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kh\u1ee7ng ho\u1ea3ng v\u1ec1 t\u00e0i li\u1ec7u M\u1ecdi \u0111\u1ed9i k\u1ef9 thu\u1eadt \u0111\u1ec1u bi\u1ebft n\u1ed7i \u0111au n\u00e0y. B\u1ea1n d\u00e0nh h\u00e0ng tu\u1ea7n \u0111\u1ec3 thi\u1ebft k\u1ebf m\u1ed9t ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 tuy\u1ec7t \u0111\u1eb9p, t\u1ec9 m\u1ec9 t\u1ea1o ra c\u00e1c s\u01a1 \u0111\u1ed3 Visio g\u00e2y \u1ea5n t\u01b0\u1ee3ng v\u1edbi c\u00e1c b\u00ean li\u00ean quan. S\u00e1u th\u00e1ng sau, h\u1ec7 th\u1ed1ng \u0111\u00e3 thay \u0111\u1ed5i\u2014c\u00e1c d\u1ecbch v\u1ee5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11750,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-11749","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","loop-entry","clr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI - 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\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI - Visual Paradigm Blog\" \/>\n<meta property=\"og:description\" content=\"Kh\u1ee7ng ho\u1ea3ng v\u1ec1 t\u00e0i li\u1ec7u M\u1ecdi \u0111\u1ed9i k\u1ef9 thu\u1eadt \u0111\u1ec1u bi\u1ebft n\u1ed7i \u0111au n\u00e0y. B\u1ea1n d\u00e0nh h\u00e0ng tu\u1ea7n \u0111\u1ec3 thi\u1ebft k\u1ebf m\u1ed9t ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 tuy\u1ec7t \u0111\u1eb9p, t\u1ec9 m\u1ec9 t\u1ea1o ra c\u00e1c s\u01a1 \u0111\u1ed3 Visio g\u00e2y \u1ea5n t\u01b0\u1ee3ng v\u1edbi c\u00e1c b\u00ean li\u00ean quan. S\u00e1u th\u00e1ng sau, h\u1ec7 th\u1ed1ng \u0111\u00e3 thay \u0111\u1ed5i\u2014c\u00e1c d\u1ecbch v\u1ee5 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/\" \/>\n<meta property=\"og:site_name\" content=\"Visual Paradigm Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-09T08:42:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-09T10:04:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810.png\" \/><meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"572\" \/>\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_6a4f5ec3ed810.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=\"8 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\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/\",\"name\":\"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI - Visual Paradigm Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a4f5ec3ed810.png\",\"datePublished\":\"2026-07-09T08:42:16+00:00\",\"dateModified\":\"2026-07-09T10:04:06+00:00\",\"author\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#primaryimage\",\"url\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a4f5ec3ed810.png\",\"contentUrl\":\"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a4f5ec3ed810.png\",\"width\":1024,\"height\":572},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.visual-paradigm.com\/vn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI\"}]},{\"@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":"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI - 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\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/","og_locale":"vi_VN","og_type":"article","og_title":"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI - Visual Paradigm Blog","og_description":"Kh\u1ee7ng ho\u1ea3ng v\u1ec1 t\u00e0i li\u1ec7u M\u1ecdi \u0111\u1ed9i k\u1ef9 thu\u1eadt \u0111\u1ec1u bi\u1ebft n\u1ed7i \u0111au n\u00e0y. B\u1ea1n d\u00e0nh h\u00e0ng tu\u1ea7n \u0111\u1ec3 thi\u1ebft k\u1ebf m\u1ed9t ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 tuy\u1ec7t \u0111\u1eb9p, t\u1ec9 m\u1ec9 t\u1ea1o ra c\u00e1c s\u01a1 \u0111\u1ed3 Visio g\u00e2y \u1ea5n t\u01b0\u1ee3ng v\u1edbi c\u00e1c b\u00ean li\u00ean quan. S\u00e1u th\u00e1ng sau, h\u1ec7 th\u1ed1ng \u0111\u00e3 thay \u0111\u1ed5i\u2014c\u00e1c d\u1ecbch v\u1ee5 [&hellip;]","og_url":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/","og_site_name":"Visual Paradigm Blog","article_published_time":"2026-07-09T08:42:16+00:00","article_modified_time":"2026-07-09T10:04:06+00:00","og_image":[{"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810.png","type":"","width":"","height":""},{"width":1024,"height":572,"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810.png","type":"image\/png"}],"author":"Admin","twitter_card":"summary_large_image","twitter_image":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a4f5ec3ed810.png","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Admin","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"8 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/","url":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/","name":"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI - Visual Paradigm Blog","isPartOf":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#primaryimage"},"image":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a4f5ec3ed810.png","datePublished":"2026-07-09T08:42:16+00:00","dateModified":"2026-07-09T10:04:06+00:00","author":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/#\/schema\/person\/a649c442f11a53040710ddec750926c6"},"breadcrumb":{"@id":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#primaryimage","url":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a4f5ec3ed810.png","contentUrl":"https:\/\/blog.visual-paradigm.com\/vn\/wp-content\/uploads\/sites\/13\/2026\/07\/img_6a4f5ec3ed810.png","width":1024,"height":572},{"@type":"BreadcrumbList","@id":"https:\/\/blog.visual-paradigm.com\/vn\/beyond-static-images-unlocking-the-power-of-diagram-as-code-with-mermaid-and-ai-tooling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.visual-paradigm.com\/vn\/"},{"@type":"ListItem","position":2,"name":"V\u01b0\u1ee3t qua h\u00ecnh \u1ea3nh t\u0129nh: Gi\u1ea3i ph\u00f3ng s\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 v\u1edbi Mermaid v\u00e0 c\u00f4ng c\u1ee5 AI"}]},{"@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\/11749","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=11749"}],"version-history":[{"count":0,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/posts\/11749\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/media\/11750"}],"wp:attachment":[{"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/media?parent=11749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/categories?post=11749"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/vn\/wp-json\/wp\/v2\/tags?post=11749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}