{"id":4255,"date":"2026-06-02T16:13:49","date_gmt":"2026-06-02T08:13:49","guid":{"rendered":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/"},"modified":"2026-09-09T20:59:33","modified_gmt":"2026-09-09T12:59:33","slug":"mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams","status":"publish","type":"post","link":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/","title":{"rendered":"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i"},"content":{"rendered":"<h2>Gi\u1edbi thi\u1ec7u: Cu\u1ed9c c\u00e1ch m\u1ea1ng v\u1ec1 t\u00e0i li\u1ec7u b\u1eaft \u0111\u1ea7u t\u1eeb \u0111\u00e2y<\/h2>\n<p>Trong th\u1ebf gi\u1edbi ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m \u0111\u1ea7y t\u1ed1c \u0111\u1ed9, c\u00f3 m\u1ed9t s\u1ef1 th\u1eadt kh\u00f3 ch\u1ecbu m\u00e0 t\u1ea5t c\u1ea3 ch\u00fang ta \u0111\u1ec1u ph\u1ea3i \u0111\u1ed1i m\u1eb7t: <strong>t\u00e0i li\u1ec7u c\u1ee7a ch\u00fang ta h\u1ea7u nh\u01b0 lu\u00f4n b\u1ecb l\u1ed7i th\u1eddi<\/strong>. Ch\u00fang ta \u0111\u00e3 d\u00e0nh v\u00f4 s\u1ed1 gi\u1edd v\u1eadt l\u1ed9n v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 v\u1ebd s\u01a1 \u0111\u1ed3 k\u00e9o-th\u1ea3, c\u1ea9n th\u1eadn c\u0103n ch\u1ec9nh c\u00e1c h\u1ed9p v\u00e0 m\u0169i t\u00ean, ch\u1ec9 \u0111\u1ec3 ch\u1ee9ng ki\u1ebfn nh\u1eefng h\u00ecnh \u1ea3nh \u0111\u01b0\u1ee3c t\u1ea1o ra c\u00f4ng phu tr\u1edf n\u00ean l\u1ed7i th\u1eddi ngay khi m\u00e3 ngu\u1ed3n thay \u0111\u1ed5i.<br \/>\nNh\u01b0ng n\u1ebfu t\u00e0i li\u1ec7u c\u00f3 th\u1ec3 theo k\u1ecbp t\u1ed1c \u0111\u1ed9 ph\u00e1t tri\u1ec3n th\u00ec sao? N\u1ebfu vi\u1ec7c t\u1ea1o c\u00e1c s\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac chuy\u00ean nghi\u1ec7p l\u1ea1i \u0111\u01a1n gi\u1ea3n nh\u01b0 vi\u1ebft m\u1ed9t h\u00e0m th\u00ec sao?<br \/>\nCh\u00e0o m\u1eebng b\u1ea1n \u0111\u1ebfn v\u1edbi cu\u1ed9c c\u00e1ch m\u1ea1ng M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3. H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd d\u1eabn d\u1eaft b\u1ea1n qua <strong>VPasCode<\/strong>, n\u1ec1n t\u1ea3ng d\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t c\u1ee7a Visual Paradigm, n\u01a1i thay \u0111\u1ed5i c\u00e1ch c\u00e1c \u0111\u1ed9i t\u1ea1o, chia s\u1ebb v\u00e0 duy tr\u00ec c\u00e1c s\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng. B\u1eb1ng c\u00e1ch coi s\u01a1 \u0111\u1ed3 l\u00e0 m\u00e3, b\u1ea1n s\u1ebd kh\u00e1m ph\u00e1 ra c\u00e1ch t\u1ea1o ra c\u00e1c h\u00ecnh \u1ea3nh ch\u1ea5t l\u01b0\u1ee3ng xu\u1ea5t b\u1ea3n ch\u1ec9 trong v\u00e0i ph\u00fat\u2014kh\u00f4ng ph\u1ea3i v\u00e0i gi\u1edd\u2014\u0111\u1ed3ng th\u1eddi \u0111\u1ea3m b\u1ea3o t\u00e0i li\u1ec7u c\u1ee7a b\u1ea1n ph\u00e1t tri\u1ec3n li\u1ec1n m\u1ea1ch c\u00f9ng v\u1edbi h\u1ec7 th\u1ed1ng.<br \/>\nCho d\u00f9 b\u1ea1n l\u00e0 m\u1ed9t nh\u00e0 ph\u00e1t tri\u1ec3n \u0111ang t\u00e0i li\u1ec7u h\u00f3a c\u00e1c vi d\u1ecbch v\u1ee5, m\u1ed9t ki\u1ebfn tr\u00fac s\u01b0 tr\u00ecnh b\u00e0y cho c\u00e1c b\u00ean li\u00ean quan, hay m\u1ed9t k\u1ef9 s\u01b0 DevOps \u0111ang \u00e1nh x\u1ea1 c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng, h\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n n\u00e0y s\u1ebd trang b\u1ecb cho b\u1ea1n c\u00e1c k\u1ef9 n\u0103ng \u0111\u1ec3 l\u00e0m ch\u1ee7 VPasCode v\u00e0 n\u00e2ng t\u1ea7m tr\u00f2 ch\u01a1i t\u00e0i li\u1ec7u c\u1ee7a \u0111\u1ed9i b\u1ea1n.<\/p>\n<hr\/>\n<h2>1. B\u1eaft \u0111\u1ea7u: S\u01a1 \u0111\u1ed3 \u0111\u1ea7u ti\u00ean c\u1ee7a b\u1ea1n trong 5 ph\u00fat {#getting-started}<\/h2>\n<h3>Kh\u00f4ng c\u1ea7n c\u00e0i \u0111\u1eb7t, kh\u00f4ng c\u1ea7n thi\u1ebft l\u1eadp, ch\u1ec9 c\u1ea7n m\u00e3<\/h3>\n<p>M\u1ed9t trong nh\u1eefng t\u00ednh n\u0103ng m\u1ea1nh m\u1ebd nh\u1ea5t c\u1ee7a VPasCode l\u00e0 quy tr\u00ecnh ti\u1ebfp c\u1eadn kh\u00f4ng ma s\u00e1t. Kh\u00f4ng c\u00f3 g\u00ec ph\u1ea3i c\u00e0i \u0111\u1eb7t, kh\u00f4ng c\u1ea7n t\u1ea1o t\u00e0i kho\u1ea3n, v\u00e0 kh\u00f4ng c\u00f3 c\u1ea5u h\u00ecnh ph\u1ee9c t\u1ea1p. H\u00e3y c\u00f9ng t\u1ea1o s\u01a1 \u0111\u1ed3 \u0111\u1ea7u ti\u00ean c\u1ee7a b\u1ea1n ngay b\u00e2y gi\u1edd.<br \/>\n<strong>H\u01b0\u1edbng d\u1eabn nhanh t\u1eebng b\u01b0\u1edbc:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Truy c\u1eadp VPasCode<\/strong>: M\u1edf tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n v\u00e0 truy c\u1eadp <a href=\"https:\/\/www.vpascode.com\/editor\/\">https:\/\/www.vpascode.com\/editor\/<\/a><\/p>\n<\/li>\n<li>\n<p><strong>Ch\u1ecdn \u0110\u1ed9ng c\u01a1 c\u1ee7a b\u1ea1n<\/strong>: Ch\u1ecdn t\u1eeb menu th\u1ea3 xu\u1ed1ng:<\/p>\n<ul>\n<li>\n<p><strong>Mermaid<\/strong> \u2013 T\u1ed1t nh\u1ea5t cho s\u01a1 \u0111\u1ed3 lu\u1ed3ng v\u00e0 t\u00e0i li\u1ec7u hi\u1ec7n \u0111\u1ea1i<\/p>\n<\/li>\n<li>\n<p><strong>PlantUML<\/strong> \u2013 L\u00fd t\u01b0\u1edfng cho UML v\u00e0 ki\u1ebfn tr\u00fac doanh nghi\u1ec7p<\/p>\n<\/li>\n<li>\n<p><strong>Graphviz<\/strong> \u2013 Ho\u00e0n h\u1ea3o cho c\u00e1c c\u1ea5u tr\u00fac m\u1ea1ng ph\u1ee9c t\u1ea1p<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>T\u1ea3i m\u1eabu<\/strong>: Nh\u1ea5p v\u00e0o &#8216;V\u00ed d\u1ee5&#8217; v\u00e0 ch\u1ecdn m\u1ed9t m\u1eabu kh\u1edfi \u0111\u1ea7u<\/p>\n<\/li>\n<li>\n<p><strong>Ch\u1ec9nh s\u1eeda v\u00e0 xem tr\u01b0\u1edbc<\/strong>: S\u1eeda \u0111\u1ed5i m\u00e3 trong b\u1ea3ng b\u00ean tr\u00e1i; xem s\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n c\u1eadp nh\u1eadt ngay l\u1eadp t\u1ee9c \u1edf b\u00ean ph\u1ea3i<\/p>\n<\/li>\n<li>\n<p><strong>Xu\u1ea5t ho\u1eb7c Chia s\u1ebb<\/strong>: T\u1ea3i xu\u1ed1ng d\u01b0\u1edbi d\u1ea1ng SVG\/PNG ho\u1eb7c sao ch\u00e9p URL c\u00f3 th\u1ec3 chia s\u1ebb<\/p>\n<\/li>\n<\/ol>\n<p><img alt=\"VPasCode: T\u00e0i li\u1ec7u ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng th\u00f4ng qua Diagram-as-Code\" decoding=\"async\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png\"\/><br \/>\n<em>H\u00ecnh 1: VPasCode chuy\u1ec3n \u0111\u1ed5i m\u00e3 d\u1ef1a tr\u00ean v\u0103n b\u1ea3n th\u00e0nh s\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac chuy\u00ean nghi\u1ec7p ngay l\u1eadp t\u1ee9c<\/em><\/p>\n<hr\/>\n<h2>2. Hi\u1ec3u r\u00f5 giao di\u1ec7n VPasCode {#interface}<\/h2>\n<p>Tr\u01b0\u1edbc khi \u0111i s\u00e2u v\u00e0o c\u00fa ph\u00e1p, h\u00e3y l\u00e0m quen v\u1edbi kh\u00f4ng gian l\u00e0m vi\u1ec7c.<br \/>\n<img alt=\"Giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng c\u1ee7a VPasCode - Tr\u00ecnh ch\u1ec9nh s\u1eeda v\u0103n b\u1ea3n sang s\u01a1 \u0111\u1ed3 (ho\u1eb7c s\u01a1 \u0111\u1ed3 nh\u01b0 m\u00e3) t\u1ea5t c\u1ea3 trong m\u1ed9t\" decoding=\"async\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a17bfb3eef7d.png\"\/><br \/>\n<em>H\u00ecnh 2: Giao di\u1ec7n hai b\u1ea3ng c\u1ee7a VPasCode\u2014m\u00e3 \u1edf b\u00ean tr\u00e1i, xem tr\u01b0\u1edbc tr\u1ef1c ti\u1ebfp \u1edf b\u00ean ph\u1ea3i<\/em><\/p>\n<h3>Ph\u00e2n t\u00edch c\u00e1c th\u00e0nh ph\u1ea7n giao di\u1ec7n:<\/h3>\n<p><strong>B\u1ea3ng b\u00ean tr\u00e1i (Tr\u00ecnh so\u1ea1n th\u1ea3o m\u00e3):<\/strong><\/p>\n<ul>\n<li>\n<p>Tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n c\u00f3 t\u00f4 s\u00e1ng c\u00fa ph\u00e1p<\/p>\n<\/li>\n<li>\n<p>S\u1ed1 d\u00f2ng \u0111\u1ec3 tham kh\u1ea3o d\u1ec5 d\u00e0ng<\/p>\n<\/li>\n<li>\n<p>H\u1ed7 tr\u1ee3 t\u1ef1 \u0111\u1ed9ng ho\u00e0n th\u00e0nh<\/p>\n<\/li>\n<li>\n<p>T\u00f4 s\u00e1ng l\u1ed7i theo th\u1eddi gian th\u1ef1c<\/p>\n<\/li>\n<\/ul>\n<p><strong>B\u1ea3ng b\u00ean ph\u1ea3i (Xem tr\u01b0\u1edbc tr\u1ef1c ti\u1ebfp):<\/strong><\/p>\n<ul>\n<li>\n<p>Hi\u1ec3n th\u1ecb tr\u1ef1c quan ngay l\u1eadp t\u1ee9c<\/p>\n<\/li>\n<li>\n<p>\u0110i\u1ec1u khi\u1ec3n di chuy\u1ec3n v\u00e0 ph\u00f3ng to\/thu nh\u1ecf<\/p>\n<\/li>\n<li>\n<p>Hi\u1ec3n th\u1ecb d\u1ef1a tr\u00ean vect\u01a1 (r\u00f5 n\u00e9t \u1edf m\u1ecdi m\u1ee9c \u0111\u1ed9 ph\u00f3ng to)<\/p>\n<\/li>\n<li>\n<p>Nh\u1ea5p \u0111\u1ec3 ki\u1ec3m tra c\u00e1c ph\u1ea7n t\u1eed<\/p>\n<\/li>\n<\/ul>\n<p><strong>Thanh c\u00f4ng c\u1ee5 ph\u00eda tr\u00ean:<\/strong><\/p>\n<ul>\n<li>\n<p>B\u1ed9 ch\u1ecdn c\u00f4ng c\u1ee5 (Mermaid\/PlantUML\/Graphviz)<\/p>\n<\/li>\n<li>\n<p>Th\u01b0 vi\u1ec7n m\u1eabu<\/p>\n<\/li>\n<li>\n<p>T\u00f9y ch\u1ecdn xu\u1ea5t (SVG, PNG, PDF)<\/p>\n<\/li>\n<li>\n<p>N\u00fat chia s\u1ebb (t\u1ea1o li\u00ean k\u1ebft v\u0129nh vi\u1ec5n)<\/p>\n<\/li>\n<li>\n<p>C\u00e0i \u0111\u1eb7t v\u00e0 t\u00f9y ch\u1ecdn<\/p>\n<\/li>\n<\/ul>\n<p><strong>Thanh tr\u1ea1ng th\u00e1i ph\u00eda d\u01b0\u1edbi:<\/strong><\/p>\n<ul>\n<li>\n<p>Tr\u1ea1ng th\u00e1i x\u00e1c th\u1ef1c c\u00fa ph\u00e1p<\/p>\n<\/li>\n<li>\n<p>\u0110\u1ebfm k\u00fd t\u1ef1<\/p>\n<\/li>\n<li>\n<p>Th\u1eddi gian l\u01b0u l\u1ea7n cu\u1ed1i<\/p>\n<\/li>\n<li>\n<p>Tham chi\u1ebfu ph\u00edm t\u1eaft<\/p>\n<\/li>\n<\/ul>\n<h3>Nguy\u00ean t\u1eafc quy tr\u00ecnh c\u1ed1t l\u00f5i:<\/h3>\n<pre><code>Vi\u1ebft m\u00e3 \u2192 Xem xem tr\u01b0\u1edbc ngay l\u1eadp t\u1ee9c \u2192 Tinh ch\u1ec9nh \u2192 Xu\u1ea5t\/Chia s\u1ebb\r\n<\/code><\/pre>\n<p>V\u00f2ng l\u1eb7p ph\u1ea3n h\u1ed3i t\u1ee9c th\u1eddi n\u00e0y ch\u00ednh l\u00e0 \u0111i\u1ec1u khi\u1ebfn VPasCode tr\u1edf n\u00ean m\u1ea1nh m\u1ebd. Kh\u00f4ng c\u00f3 n\u00fat &#8220;render&#8221; \u0111\u1ec3 nh\u1ea5p, kh\u00f4ng c\u1ea7n ch\u1edd bi\u00ean d\u1ecbch\u2014ch\u1ec9 c\u00f3 ph\u1ea3n h\u1ed3i tr\u1ef1c quan thu\u1ea7n t\u00fay v\u00e0 t\u1ee9c th\u00ec khi b\u1ea1n g\u00f5.<\/p>\n<hr\/>\n<h2>3. L\u00e0m ch\u1ee7 Mermaid.js: S\u01a1 \u0111\u1ed3 lu\u1ed3ng v\u00e0 h\u01a1n th\u1ebf n\u1eefa {#mermaid-tutorial}<\/h2>\n<p>Mermaid.js \u0111\u00e3 tr\u1edf th\u00e0nh ti\u00eau chu\u1ea9n th\u1ef1c t\u1ebf cho vi\u1ec7c v\u1ebd bi\u1ec3u \u0111\u1ed3 th\u00e2n thi\u1ec7n v\u1edbi l\u1eadp tr\u00ecnh vi\u00ean. C\u00fa ph\u00e1p c\u1ee7a n\u00f3 tr\u1ef1c quan, d\u1ec5 \u0111\u1ecdc v\u00e0 ho\u00e0n h\u1ea3o cho t\u00e0i li\u1ec7u \u0111i k\u00e8m v\u1edbi m\u00e3 ngu\u1ed3n.<\/p>\n<h3>H\u01b0\u1edbng d\u1eabn 1: T\u1ea1o lu\u1ed3ng x\u00e1c th\u1ef1c ng\u01b0\u1eddi d\u00f9ng<\/h3>\n<p>H\u00e3y c\u00f9ng x\u00e2y d\u1ef1ng m\u1ed9t bi\u1ec3u \u0111\u1ed3 lu\u1ed3ng x\u00e1c th\u1ef1c th\u1ef1c t\u1ebf m\u00e0 b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng trong k\u1ebf ho\u1ea1ch sprint ti\u1ebfp theo c\u1ee7a m\u00ecnh.<br \/>\n<strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 lu\u1ed3ng x\u00e1c th\u1ef1c ng\u01b0\u1eddi d\u00f9ng hi\u1ec3n th\u1ecb vi\u1ec7c x\u00e1c th\u1ef1c th\u00f4ng tin \u0111\u0103ng nh\u1eadp, t\u1ea1o m\u00e3 th\u00f4ng b\u00e1o JWT v\u00e0 chuy\u1ec3n h\u01b0\u1edbng b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n v\u1edbi c\u00e1c v\u00f2ng l\u1eb7p x\u1eed l\u00fd l\u1ed7i.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8b6724da1.png\"\/><\/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:eNpNj99rwkAMgN8H+x8Cvk7QrVXxYaP2hzrYBlY3RvHh1kvXw+5OcnHD6f731bZK8xAI+ZIv+SSxzWEZXF9BGV6yskgQakay4BNK1KxEYdfQ7d7D5PAqCiUhMvQl+OGvHpqcesdncwQ\/iXPzAxUkWBkNIZGhdZt7R3uEIIlRS2AD3o5ziJG+VYoN51cury6CqggPrVvgSXCan+3hxR4lC+QdaXB6fVhpUW42pH5Rrttk5Z8mU9RIghEe35awNBvUDTWthLMkZkNYd0BpmDFvX3SxB9+YjTqfOqvgeSmWijDl00eBsPmHEXTWRu136mx5XyB4kKmiGHewn7lZdmOZStm40+sNBmnaBucNKB2UUlzA25EYOm4bjBowG8lhC5Tpneu4\/12qjr4=\" 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\">\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:eNpNj99rwkAMgN8H+x8Cvk7QrVXxYaP2hzrYBlY3RvHh1kvXw+5OcnHD6f731bZK8xAI+ZIv+SSxzWEZXF9BGV6yskgQakay4BNK1KxEYdfQ7d7D5PAqCiUhMvQl+OGvHpqcesdncwQ\/iXPzAxUkWBkNIZGhdZt7R3uEIIlRS2AD3o5ziJG+VYoN51cury6CqggPrVvgSXCan+3hxR4lC+QdaXB6fVhpUW42pH5Rrttk5Z8mU9RIghEe35awNBvUDTWthLMkZkNYd0BpmDFvX3SxB9+YjTqfOqvgeSmWijDl00eBsPmHEXTWRu136mx5XyB4kKmiGHewn7lZdmOZStm40+sNBmnaBucNKB2UUlzA25EYOm4bjBowG8lhC5Tpneu4\/12qjr4=\" 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:eNp1kD9PwkAYxncTv8ObsEoC2gJh0ED5U9To0sShYcD+4Rpq20AhEnAgDAwsOjkQE0nj4ECC0cXe4FDC97hv4vVaSU30hkvee3\/P+z73tLstB4FU2d8DekryRXu7JvjJADX4tNpgIeKvHHBR8EEr17Bg87CZ7hpNSKePoTza3BM8txCoxF\/SJiLYc8AkeHZyFw0uh+D4jI0ZgyCLBsFTi86luhB8NOA2WCrs4U1pJkVC8D6GilwneGXQ7cT\/sugePFcQDAh++UMnMFelqKiwojqS\/vkCdKh04fwYrf4yWpOlLvG9cNEEuEwWogadEKbkKeCg4NVpJqXMbl2WaBI23AQenF5JMVBnVkT5fLvus9YgeLZBdF3n0jKHINh2x9BiVmRsQxZQf8iiQuHGBdvNIrimvlhFk5z06S9YorG6lkwgunvu0NSgBLphmsWUltV5XT\/ouV27oxVTmUwupyhJsBGDKqepamsHHhZaeY5PgrUY1AtqPgGqyhHP8d9tK+Uc\" \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\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">graph TD\r\n    A[Ng\u01b0\u1eddi d\u00f9ng nh\u1eadp th\u00f4ng tin \u0111\u0103ng nh\u1eadp] --&gt; B{\u0110\u1ecbnh d\u1ea1ng h\u1ee3p l\u1ec7?}\r\n    B --&gt;|Kh\u00f4ng| C[Hi\u1ec3n th\u1ecb l\u1ed7i x\u00e1c th\u1ef1c]\r\n    B --&gt;|C\u00f3| D[G\u1eedi \u0111\u1ebfn d\u1ecbch v\u1ee5 x\u00e1c th\u1ef1c]\r\n    C --&gt; A\r\n    D --&gt; E{Th\u00f4ng tin \u0111\u0103ng nh\u1eadp kh\u1edbp?}\r\n    E --&gt;|Kh\u00f4ng| F[Tr\u1ea3 v\u1ec1 401 Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p]\r\n    E --&gt;|C\u00f3| G[T\u1ea1o m\u00e3 JWT]\r\n    G --&gt; H[L\u01b0u m\u00e3 v\u00e0o HttpOnly Cookie]\r\n    H --&gt; I[Chuy\u1ec3n h\u01b0\u1edbng \u0111\u1ebfn b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n]\r\n    F --&gt; A\r\n    \r\n    style A fill:#e1f5ff,stroke:#0066cc\r\n    style I fill:#d4edda,stroke:#28a745\r\n    style F fill:#f8d7da,stroke:#dc3545\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNp1kD9PwkAYxncTv8ObsEoC2gJh0ED5U9To0sShYcD+4Rpq20AhEnAgDAwsOjkQE0nj4ECC0cXe4FDC97hv4vVaSU30hkvee3\/P+z73tLstB4FU2d8DekryRXu7JvjJADX4tNpgIeKvHHBR8EEr17Bg87CZ7hpNSKePoTza3BM8txCoxF\/SJiLYc8AkeHZyFw0uh+D4jI0ZgyCLBsFTi86luhB8NOA2WCrs4U1pJkVC8D6GilwneGXQ7cT\/sugePFcQDAh++UMnMFelqKiwojqS\/vkCdKh04fwYrf4yWpOlLvG9cNEEuEwWogadEKbkKeCg4NVpJqXMbl2WaBI23AQenF5JMVBnVkT5fLvus9YgeLZBdF3n0jKHINh2x9BiVmRsQxZQf8iiQuHGBdvNIrimvlhFk5z06S9YorG6lkwgunvu0NSgBLphmsWUltV5XT\/ouV27oxVTmUwupyhJsBGDKqepamsHHhZaeY5PgrUY1AtqPgGqyhHP8d9tK+Uc\" \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:eNpNj99rwkAMgN8H+x8Cvk7QrVXxYaP2hzrYBlY3RvHh1kvXw+5OcnHD6f731bZK8xAI+ZIv+SSxzWEZXF9BGV6yskgQakay4BNK1KxEYdfQ7d7D5PAqCiUhMvQl+OGvHpqcesdncwQ\/iXPzAxUkWBkNIZGhdZt7R3uEIIlRS2AD3o5ziJG+VYoN51cury6CqggPrVvgSXCan+3hxR4lC+QdaXB6fVhpUW42pH5Rrttk5Z8mU9RIghEe35awNBvUDTWthLMkZkNYd0BpmDFvX3SxB9+YjTqfOqvgeSmWijDl00eBsPmHEXTWRu136mx5XyB4kKmiGHewn7lZdmOZStm40+sNBmnaBucNKB2UUlzA25EYOm4bjBowG8lhC5Tpneu4\/12qjr4=\" 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<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpNj99rwkAMgN8H+x8Cvk7QrVXxYaP2hzrYBlY3RvHh1kvXw+5OcnHD6f731bZK8xAI+ZIv+SSxzWEZXF9BGV6yskgQakay4BNK1KxEYdfQ7d7D5PAqCiUhMvQl+OGvHpqcesdncwQ\/iXPzAxUkWBkNIZGhdZt7R3uEIIlRS2AD3o5ziJG+VYoN51cury6CqggPrVvgSXCan+3hxR4lC+QdaXB6fVhpUW42pH5Rrttk5Z8mU9RIghEe35awNBvUDTWthLMkZkNYd0BpmDFvX3SxB9+YjTqfOqvgeSmWijDl00eBsPmHEXTWRu136mx5XyB4kKmiGHewn7lZdmOZStm40+sNBmnaBucNKB2UUlzA25EYOm4bjBowG8lhC5Tpneu4\/12qjr4=\" 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><strong>\u0110i\u1ec1u n\u00e0y minh h\u1ecda:<\/strong><\/p>\n<ul>\n<li>\n<p>C\u00e1c n\u00fat quy\u1ebft \u0111\u1ecbnh (h\u00ecnh thoi v\u1edbi <code data-backticks=\"1\">{?}<\/code>)<\/p>\n<\/li>\n<li>\n<p>Lu\u1ed3ng c\u00f3 h\u01b0\u1edbng (<code data-backticks=\"1\">TD<\/code> = T\u1eeb tr\u00ean xu\u1ed1ng d\u01b0\u1edbi)<\/p>\n<\/li>\n<li>\n<p>T\u00f9y ch\u1ec9nh ki\u1ec3u d\u00e1ng v\u1edbi m\u00e0u s\u1eafc<\/p>\n<\/li>\n<li>\n<p>V\u00f2ng l\u1eb7p t\u1ef1 tham chi\u1ebfu<\/p>\n<\/li>\n<li>\n<p>Nh\u00e3n r\u00f5 r\u00e0ng<\/p>\n<\/li>\n<\/ul>\n<h3>H\u01b0\u1edbng d\u1eabn 2: Bi\u1ec3u \u0111\u1ed3 ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5<\/h3>\n<p>B\u00e2y gi\u1edd h\u00e3y c\u00f9ng t\u1ea1o m\u1ed9t ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng ph\u1ee9c t\u1ea1p h\u01a1n th\u1ec3 hi\u1ec7n c\u00e1c m\u1ed1i quan h\u1ec7 gi\u1eefa c\u00e1c d\u1ecbch v\u1ee5.<br \/>\n<strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 hi\u1ec3n th\u1ecb L\u1edbp Kh\u00e1ch h\u00e0ng, C\u1ed5ng API, D\u1ecbch v\u1ee5 Kinh doanh v\u00e0 L\u1edbp D\u1eef li\u1ec7u v\u1edbi c\u00e1c k\u1ebft n\u1ed1i PostgreSQL, MongoDB v\u00e0 Redis.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8b8990079.png\"\/><\/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:eNqNUt9rwjAQfh\/sfwj1RUGZiHNOhmAtG2OOucrYQ9hDml41rFpJ0on\/\/ZpfXWndZqCX5rvvkvvubs3JfoMW4eUFKpbIo7UG5imDncSe2dGCHIF7H4ak1jtEuPjQbL+\/i\/jVNARCZcX\/nEUsBWy2knWf5lICtzzYxean9vZs+Yi9wqAHIuFAjtV3LYTRU7ZbuxOqEGa53GBl0Ar4F6NQ8YUFHSuDFmzL\/k\/E3iCw5+eC7UCIEqrm9CaAY2VOPPnC48Kp7QnvkmdxTiW2+ykGOW5VI+xeY\/yWeEAkwZ6yzc6pRAMft3XCga\/7ssyEXHNYvS469dwV1aRvuc9F4bPA7zRlKKpT8ufFc0I3gNshxEyYQ+e0IDVhvd7U9dmAdqYauBsG5VAD0ERV6w2qh0BBqgo1SKutYVaWQXXlXHDg10Ctx2CmbuWdjvoD264a2JWu8p6LcN1vXGX7Lo9FQZzShKXppJUko2gUdYXk2SdMWvR2QAakS7M045PDhrlCmFAjxEYOgcZ0WEb2xzfJdVRl2wzOpZdazg3QFSxlwGgUl+SkP6b9\/jc5B1T5\" 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\">\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:eNqNUt9rwjAQfh\/sfwj1RUGZiHNOhmAtG2OOucrYQ9hDml41rFpJ0on\/\/ZpfXWndZqCX5rvvkvvubs3JfoMW4eUFKpbIo7UG5imDncSe2dGCHIF7H4ak1jtEuPjQbL+\/i\/jVNARCZcX\/nEUsBWy2knWf5lICtzzYxean9vZs+Yi9wqAHIuFAjtV3LYTRU7ZbuxOqEGa53GBl0Ar4F6NQ8YUFHSuDFmzL\/k\/E3iCw5+eC7UCIEqrm9CaAY2VOPPnC48Kp7QnvkmdxTiW2+ykGOW5VI+xeY\/yWeEAkwZ6yzc6pRAMft3XCga\/7ssyEXHNYvS469dwV1aRvuc9F4bPA7zRlKKpT8ufFc0I3gNshxEyYQ+e0IDVhvd7U9dmAdqYauBsG5VAD0ERV6w2qh0BBqgo1SKutYVaWQXXlXHDg10Ctx2CmbuWdjvoD264a2JWu8p6LcN1vXGX7Lo9FQZzShKXppJUko2gUdYXk2SdMWvR2QAakS7M045PDhrlCmFAjxEYOgcZ0WEb2xzfJdVRl2wzOpZdazg3QFSxlwGgUl+SkP6b9\/jc5B1T5\" 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:eNqNU8Fu00AQvSPxD6P00kitiKoSSoQqNYmoEKkIqRAHi8N6vfau4qwje9OSL+iBU46oQhAhJDgBR+pjqvyH\/4Txrp1uHErrQ+w8v5l97804iMmYQ2\/w8AHglUzcQAOdUDCpnFovSy\/HMOSLOeXAF19kUHtnqPn1lrlOln6XAXhZ+g1vCDxz40eHA0aosognkStCts71BFzPsvSjDHTJ83CiFIuLIiY981DRddR\/4dTwB46JYudkaqspIAdeRti++AcW4WiiuNPN0g\/o5QxFwHu0BYpn6W9q0QZY6RwLdC6AZ1dzCSpLZ9SovUPfKYvPBGWJU7PPGQrJwYuI5LbeNwmL1+TIYPkrSz8J8BZ\/ZGAxX8VehXo9W6IuPRCL148jb0LVGjPJrr5KGKORHyObSqajfMI2VXFUCCpazOUdNrtEkXI5cJw\/IcS4LiZVd922s91ZzlFD+tnmVZzq+fejRAUxO33dq1ed39rGSkH3OMHBR912fTOSW1vY8fxHR4dQzpztNm4ASFyYS70NFyMYME8k9X\/HhV8D7O4elqtoQPMpbOLlvuYv8kXdRPO9NGj+pKE85AqkE6tgRQgGzWtWxd12BdRGDaY73fQsqTdwsUMGLs6wzysrCt5mq2Kr1BQDKZ36IgxbW77fdJvuTqLiaMhaW\/TpHtkjOzQKo7h1zkUZhCk1RorKfUY9ur+qbBw88R+7NrtQcF\/6yst9C3SCKxus2fRWZL9xQBuNv2Pg0n8=\" \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\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">graph LR\r\n    subgraph Client[\"L\u1edbp kh\u00e1ch h\u00e0ng\"]\r\n        Web[\u1ee8ng d\u1ee5ng Web&lt;br\/&gt;React]\r\n        Mobile[\u1ee8ng d\u1ee5ng di \u0111\u1ed9ng&lt;br\/&gt;Flutter]\r\n    end\r\n    \r\n    subgraph API[\"API Gateway\"]\r\n        Gateway[ Kong Gateway ]\r\n        Auth[D\u1ecbch v\u1ee5 x\u00e1c th\u1ef1c]\r\n        Rate[Gi\u1edbi h\u1ea1n t\u1ed1c \u0111\u1ed9]\r\n    end\r\n    \r\n    subgraph Services[\"D\u1ecbch v\u1ee5 kinh doanh\"]\r\n        User[D\u1ecbch v\u1ee5 ng\u01b0\u1eddi d\u00f9ng]\r\n        Order[D\u1ecbch v\u1ee5 \u0111\u01a1n h\u00e0ng]\r\n        Product[D\u1ecbch v\u1ee5 s\u1ea3n ph\u1ea9m]\r\n        Payment[D\u1ecbch v\u1ee5 thanh to\u00e1n]\r\n    end\r\n    \r\n    subgraph Data[\"L\u1edbp d\u1eef li\u1ec7u\"]\r\n        UserDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng&lt;br\/&gt;PostgreSQL)]\r\n        OrderDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01a1n h\u00e0ng&lt;br\/&gt;MongoDB)]\r\n        ProductDB[(C\u01a1 s\u1edf d\u1eef li\u1ec7u s\u1ea3n ph\u1ea9m&lt;br\/&gt;PostgreSQL)]\r\n        Cache[(B\u1ed9 nh\u1edb \u0111\u1ec7m Redis)]\r\n    end\r\n    \r\n    Web --&gt; Gateway\r\n    Mobile --&gt; Gateway\r\n    Gateway --&gt; Auth\r\n    Gateway --&gt; Rate\r\n    Rate --&gt; User\r\n    Rate --&gt; Order\r\n    Rate --&gt; Product\r\n    User --&gt; UserDB\r\n    User --&gt; Cache\r\n    Order --&gt; OrderDB\r\n    Order --&gt; Payment\r\n    Product --&gt; ProductDB\r\n    Payment --&gt; OrderDB\r\n    \r\n    style Gateway fill:#ff6b6b,stroke:#c92a2a,color:white\r\n    style UserDB fill:#4ecdc4,stroke:#087f5b\r\n    style OrderDB fill:#4ecdc4,stroke:#087f5b\r\n    style ProductDB fill:#4ecdc4,stroke:#087f5b\r\n    style Cache fill:#ffe66d,stroke:#f08c00\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNU8Fu00AQvSPxD6P00kitiKoSSoQqNYmoEKkIqRAHi8N6vfau4qwje9OSL+iBU46oQhAhJDgBR+pjqvyH\/4Txrp1uHErrQ+w8v5l97804iMmYQ2\/w8AHglUzcQAOdUDCpnFovSy\/HMOSLOeXAF19kUHtnqPn1lrlOln6XAXhZ+g1vCDxz40eHA0aosognkStCts71BFzPsvSjDHTJ83CiFIuLIiY981DRddR\/4dTwB46JYudkaqspIAdeRti++AcW4WiiuNPN0g\/o5QxFwHu0BYpn6W9q0QZY6RwLdC6AZ1dzCSpLZ9SovUPfKYvPBGWJU7PPGQrJwYuI5LbeNwmL1+TIYPkrSz8J8BZ\/ZGAxX8VehXo9W6IuPRCL148jb0LVGjPJrr5KGKORHyObSqajfMI2VXFUCCpazOUdNrtEkXI5cJw\/IcS4LiZVd922s91ZzlFD+tnmVZzq+fejRAUxO33dq1ed39rGSkH3OMHBR912fTOSW1vY8fxHR4dQzpztNm4ASFyYS70NFyMYME8k9X\/HhV8D7O4elqtoQPMpbOLlvuYv8kXdRPO9NGj+pKE85AqkE6tgRQgGzWtWxd12BdRGDaY73fQsqTdwsUMGLs6wzysrCt5mq2Kr1BQDKZ36IgxbW77fdJvuTqLiaMhaW\/TpHtkjOzQKo7h1zkUZhCk1RorKfUY9ur+qbBw88R+7NrtQcF\/6yst9C3SCKxus2fRWZL9xQBuNv2Pg0n8=\" \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:eNqNUt9rwjAQfh\/sfwj1RUGZiHNOhmAtG2OOucrYQ9hDml41rFpJ0on\/\/ZpfXWndZqCX5rvvkvvubs3JfoMW4eUFKpbIo7UG5imDncSe2dGCHIF7H4ak1jtEuPjQbL+\/i\/jVNARCZcX\/nEUsBWy2knWf5lICtzzYxean9vZs+Yi9wqAHIuFAjtV3LYTRU7ZbuxOqEGa53GBl0Ar4F6NQ8YUFHSuDFmzL\/k\/E3iCw5+eC7UCIEqrm9CaAY2VOPPnC48Kp7QnvkmdxTiW2+ykGOW5VI+xeY\/yWeEAkwZ6yzc6pRAMft3XCga\/7ssyEXHNYvS469dwV1aRvuc9F4bPA7zRlKKpT8ufFc0I3gNshxEyYQ+e0IDVhvd7U9dmAdqYauBsG5VAD0ERV6w2qh0BBqgo1SKutYVaWQXXlXHDg10Ctx2CmbuWdjvoD264a2JWu8p6LcN1vXGX7Lo9FQZzShKXppJUko2gUdYXk2SdMWvR2QAakS7M045PDhrlCmFAjxEYOgcZ0WEb2xzfJdVRl2wzOpZdazg3QFSxlwGgUl+SkP6b9\/jc5B1T5\" 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<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNUt9rwjAQfh\/sfwj1RUGZiHNOhmAtG2OOucrYQ9hDml41rFpJ0on\/\/ZpfXWndZqCX5rvvkvvubs3JfoMW4eUFKpbIo7UG5imDncSe2dGCHIF7H4ak1jtEuPjQbL+\/i\/jVNARCZcX\/nEUsBWy2knWf5lICtzzYxean9vZs+Yi9wqAHIuFAjtV3LYTRU7ZbuxOqEGa53GBl0Ar4F6NQ8YUFHSuDFmzL\/k\/E3iCw5+eC7UCIEqrm9CaAY2VOPPnC48Kp7QnvkmdxTiW2+ykGOW5VI+xeY\/yWeEAkwZ6yzc6pRAMft3XCga\/7ssyEXHNYvS469dwV1aRvuc9F4bPA7zRlKKpT8ufFc0I3gNshxEyYQ+e0IDVhvd7U9dmAdqYauBsG5VAD0ERV6w2qh0BBqgo1SKutYVaWQXXlXHDg10Ctx2CmbuWdjvoD264a2JWu8p6LcN1vXGX7Lo9FQZzShKXppJUko2gUdYXk2SdMWvR2QAakS7M045PDhrlCmFAjxEYOgcZ0WEb2xzfJdVRl2wzOpZdazg3QFSxlwGgUl+SkP6b9\/jc5B1T5\" 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><strong>C\u00e1c kh\u00e1i ni\u1ec7m ch\u00ednh:<\/strong><\/p>\n<ul>\n<li>\n<p><code data-backticks=\"1\">subgraph<\/code>\u00a0\u0111\u1ec3 nh\u00f3m logic<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">LR<\/code>\u00a0\u0111\u1ec3 b\u1ed1 c\u1ee5c t\u1eeb tr\u00e1i sang ph\u1ea3i<\/p>\n<\/li>\n<li>\n<p>Nh\u00e3n nhi\u1ec1u d\u00f2ng v\u1edbi\u00a0<code data-backticks=\"1\">&lt;br\/&gt;<\/code><\/p>\n<\/li>\n<li>\n<p>K\u00fd hi\u1ec7u h\u00ecnh tr\u1ee5 c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u1edbi\u00a0<code data-backticks=\"1\">[( )]<\/code><\/p>\n<\/li>\n<li>\n<p>\u0110\u1ecbnh tuy\u1ebfn v\u00e0 quan h\u1ec7 ph\u1ee9c t\u1ea1p<\/p>\n<\/li>\n<\/ul>\n<h3>B\u00e0i h\u01b0\u1edbng d\u1eabn 3: Bi\u1ec3u \u0111\u1ed3 tr\u00ecnh t\u1ef1 cho x\u1eed l\u00fd \u0111\u01a1n h\u00e0ng<\/h3>\n<p>Bi\u1ec3u \u0111\u1ed3 tr\u00ecnh t\u1ef1 r\u1ea5t quan tr\u1ecdng \u0111\u1ec3 hi\u1ec3u c\u00e1c t\u01b0\u01a1ng t\u00e1c theo th\u1eddi gian gi\u1eefa c\u00e1c th\u00e0nh ph\u1ea7n.<br \/>\n<strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 tr\u00ecnh t\u1ef1 minh h\u1ecda lu\u1ed3ng x\u1eed l\u00fd \u0111\u01a1n h\u00e0ng gi\u1eefa Kh\u00e1ch h\u00e0ng, \u1ee8ng d\u1ee5ng Web, D\u1ecbch v\u1ee5 \u0110\u01a1n h\u00e0ng, D\u1ecbch v\u1ee5 Thanh to\u00e1n, D\u1ecbch v\u1ee5 Kho v\u00e0 D\u1ecbch v\u1ee5 Th\u00f4ng b\u00e1o.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8bb593914.png\"\/><\/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:eNp1klFrgzAUhd8H+w+XPm3Qrl0fZRSK3YMvKuugzzHeaqgmLokdpfS\/78YorrQVEeN3cu+5Jxr8aVFy3AhWaFY\/PwFdrLVKtnWG2q8bpq3gomHSQgjMQNgaq+p7eOfwDjNYN80tTRxNdI4atqiPguOtJnWalJ1qpMVDVeRUkTySSOnTY13sdLGyYi84s0LJa6l\/hrPVahfAOs9BWKwNWAWcilzRsBL8AJOwRH5QrZ14uCOYBJAm22+YKzeZgXNXZAqmFE0jZHHx0oSkUQBfaMgBghjMexrNfCWPvVWu5F7oGvOxQEq9tOJoDI3ZZeRZ2m8fgjMtd6J9W417CYcamUXojIJGTi8jjwMKR+Y97Zt3Trwmdj3CAD5rJqo7PJn5pJaL975RDueuWJRfhrh8iW2pfgePNEhxdRx0XGTxSB6Saeo8CzpOVoFB7pp9ZHq+qukPhAzBaiYN676zflQay4IuMvayXCym0D3c\/bZ89YJ\/WYYl0wW6w85HNmT5PdaGaOM55fMHOQD0Aw==\" 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\">\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:eNp1klFrgzAUhd8H+w+XPm3Qrl0fZRSK3YMvKuugzzHeaqgmLokdpfS\/78YorrQVEeN3cu+5Jxr8aVFy3AhWaFY\/PwFdrLVKtnWG2q8bpq3gomHSQgjMQNgaq+p7eOfwDjNYN80tTRxNdI4atqiPguOtJnWalJ1qpMVDVeRUkTySSOnTY13sdLGyYi84s0LJa6l\/hrPVahfAOs9BWKwNWAWcilzRsBL8AJOwRH5QrZ14uCOYBJAm22+YKzeZgXNXZAqmFE0jZHHx0oSkUQBfaMgBghjMexrNfCWPvVWu5F7oGvOxQEq9tOJoDI3ZZeRZ2m8fgjMtd6J9W417CYcamUXojIJGTi8jjwMKR+Y97Zt3Trwmdj3CAD5rJqo7PJn5pJaL975RDueuWJRfhrh8iW2pfgePNEhxdRx0XGTxSB6Saeo8CzpOVoFB7pp9ZHq+qukPhAzBaiYN676zflQay4IuMvayXCym0D3c\/bZ89YJ\/WYYl0wW6w85HNmT5PdaGaOM55fMHOQD0Aw==\" 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:eNp1kkGL00AUx++C3+GxJ4WuW3sM0ksLbhCagIV6nSRDZnAzyU6mRVj2IB5FVDx43VCWFaEgKAgZPGXZ7zHfZN8kLU13MIQJSX7zf\/\/3f1PS8yUVMZ1ykkqSPX4EeJGlysUyi6js3gsiFY95QYSCCZASXrGmihmw5kqkLrKwiNE\/RAqJ0df4WNDIxQKLTY3+iEor5OD2y10l\/icaPqTnjAgGKm8q4dK+Qxv9TcBblrvszFVu\/qDpqKm2dLdOjsfjhWf\/\/swgQzCGVXOVQ8qN\/ty3vQVnzNTXAo56Ro86YIFA4EEYvJ7DSS4TKku44Ipm5QBKxouCi\/SyQwNEfQ+jMfVfBTEz+juow178407ugLn9evfL6HUM73BSINDKRuwVQw\/eGL2Bs+YfqIc5hlu9nm+EsD0GsQ1mL2MhU1c5RKZeC0gZt3UPZ2i5mQcvsRzvm3HJma07QWc96HxJgGaEn+3EumhHw+cwkZQomsBFG6CfXO6y7VROcSofrHEcLChJcKBuE9vCuaKQr6iEYIDJhFj6pi2N26XRn0T6IpIn4wK\/rzlu\/w2q2aBQykluTzgenE5I0liBTCPyZDQcDqBd7P1s9LQDevnPWwmFLt+3Lmu9R3YT8KduDSqSe\/V6Vn4=\" \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\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">sequenceDiagram\r\n    autonumber\r\n    participant C as Kh\u00e1ch h\u00e0ng\r\n    participant W as \u1ee8ng d\u1ee5ng Web\r\n    participant O as D\u1ecbch v\u1ee5 \u0110\u01a1n h\u00e0ng\r\n    participant P as D\u1ecbch v\u1ee5 Thanh to\u00e1n\r\n    participant I as D\u1ecbch v\u1ee5 T\u1ed3n kho\r\n    participant N as D\u1ecbch v\u1ee5 Th\u00f4ng b\u00e1o\r\n    \r\n    C-&gt;&gt;W: Th\u00eam m\u1ee5c v\u00e0o gi\u1ecf h\u00e0ng\r\n    C-&gt;&gt;W: Nh\u1ea5n \"Thanh to\u00e1n\"\r\n    W-&gt;&gt;O: POST \/orders {items, shipping}\r\n    O-&gt;&gt;I: \u0110\u1eb7t ch\u1ed7 t\u1ed3n kho\r\n    I--&gt;&gt;O: \u0110\u1eb7t ch\u1ed7 \u0111\u01b0\u1ee3c x\u00e1c nh\u1eadn\r\n    O-&gt;&gt;P: X\u1eed l\u00fd thanh to\u00e1n\r\n    P--&gt;&gt;O: Thanh to\u00e1n th\u00e0nh c\u00f4ng\r\n    O-&gt;&gt;O: T\u1ea1o b\u1ea3n ghi \u0111\u01a1n h\u00e0ng\r\n    O-&gt;&gt;N: G\u1eedi x\u00e1c nh\u1eadn \u0111\u01a1n h\u00e0ng\r\n    N--&gt;&gt;C: X\u00e1c nh\u1eadn qua email\r\n    O--&gt;&gt;W: 201 Created {orderId}\r\n    W--&gt;&gt;C: Hi\u1ec3n th\u1ecb trang th\u00e0nh c\u00f4ng\r\n    \r\n    Note over O,P: Ph\u1ea7n quan tr\u1ecdng&lt;br\/&gt;ph\u1ea3i c\u00f3 t\u00ednh giao d\u1ecbch\r\n    rect rgba(200, 200, 0, 0.2)\r\n        O-&gt;&gt;P: T\u00ednh ti\u1ec1n th\u1ebb\r\n        P--&gt;&gt;O: ID giao d\u1ecbch\r\n    end\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNp1kkGL00AUx++C3+GxJ4WuW3sM0ksLbhCagIV6nSRDZnAzyU6mRVj2IB5FVDx43VCWFaEgKAgZPGXZ7zHfZN8kLU13MIQJSX7zf\/\/3f1PS8yUVMZ1ykkqSPX4EeJGlysUyi6js3gsiFY95QYSCCZASXrGmihmw5kqkLrKwiNE\/RAqJ0df4WNDIxQKLTY3+iEor5OD2y10l\/icaPqTnjAgGKm8q4dK+Qxv9TcBblrvszFVu\/qDpqKm2dLdOjsfjhWf\/\/swgQzCGVXOVQ8qN\/ty3vQVnzNTXAo56Ro86YIFA4EEYvJ7DSS4TKku44Ipm5QBKxouCi\/SyQwNEfQ+jMfVfBTEz+juow178407ugLn9evfL6HUM73BSINDKRuwVQw\/eGL2Bs+YfqIc5hlu9nm+EsD0GsQ1mL2MhU1c5RKZeC0gZt3UPZ2i5mQcvsRzvm3HJma07QWc96HxJgGaEn+3EumhHw+cwkZQomsBFG6CfXO6y7VROcSofrHEcLChJcKBuE9vCuaKQr6iEYIDJhFj6pi2N26XRn0T6IpIn4wK\/rzlu\/w2q2aBQykluTzgenE5I0liBTCPyZDQcDqBd7P1s9LQDevnPWwmFLt+3Lmu9R3YT8KduDSqSe\/V6Vn4=\" \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:eNp1klFrgzAUhd8H+w+XPm3Qrl0fZRSK3YMvKuugzzHeaqgmLokdpfS\/78YorrQVEeN3cu+5Jxr8aVFy3AhWaFY\/PwFdrLVKtnWG2q8bpq3gomHSQgjMQNgaq+p7eOfwDjNYN80tTRxNdI4atqiPguOtJnWalJ1qpMVDVeRUkTySSOnTY13sdLGyYi84s0LJa6l\/hrPVahfAOs9BWKwNWAWcilzRsBL8AJOwRH5QrZ14uCOYBJAm22+YKzeZgXNXZAqmFE0jZHHx0oSkUQBfaMgBghjMexrNfCWPvVWu5F7oGvOxQEq9tOJoDI3ZZeRZ2m8fgjMtd6J9W417CYcamUXojIJGTi8jjwMKR+Y97Zt3Trwmdj3CAD5rJqo7PJn5pJaL975RDueuWJRfhrh8iW2pfgePNEhxdRx0XGTxSB6Saeo8CzpOVoFB7pp9ZHq+qukPhAzBaiYN676zflQay4IuMvayXCym0D3c\/bZ89YJ\/WYYl0wW6w85HNmT5PdaGaOM55fMHOQD0Aw==\" 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<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNp1klFrgzAUhd8H+w+XPm3Qrl0fZRSK3YMvKuugzzHeaqgmLokdpfS\/78YorrQVEeN3cu+5Jxr8aVFy3AhWaFY\/PwFdrLVKtnWG2q8bpq3gomHSQgjMQNgaq+p7eOfwDjNYN80tTRxNdI4atqiPguOtJnWalJ1qpMVDVeRUkTySSOnTY13sdLGyYi84s0LJa6l\/hrPVahfAOs9BWKwNWAWcilzRsBL8AJOwRH5QrZ14uCOYBJAm22+YKzeZgXNXZAqmFE0jZHHx0oSkUQBfaMgBghjMexrNfCWPvVWu5F7oGvOxQEq9tOJoDI3ZZeRZ2m8fgjMtd6J9W417CYcamUXojIJGTi8jjwMKR+Y97Zt3Trwmdj3CAD5rJqo7PJn5pJaL975RDueuWJRfhrh8iW2pfgePNEhxdRx0XGTxSB6Saeo8CzpOVoFB7pp9ZHq+qukPhAzBaiYN676zflQay4IuMvayXCym0D3c\/bZ89YJ\/WYYl0wW6w85HNmT5PdaGaOM55fMHOQD0Aw==\" 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><strong>T\u00ednh n\u0103ng c\u1ee7a bi\u1ec3u \u0111\u1ed3 tr\u00ecnh t\u1ef1:<\/strong><\/p>\n<ul>\n<li>\n<p><code data-backticks=\"1\">autonumber<\/code>\u00a0\u0111\u1ec3 \u0111\u00e1nh s\u1ed1 b\u01b0\u1edbc t\u1ef1 \u0111\u1ed9ng<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">participant<\/code>\u00a0khai b\u00e1o<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">-&gt;&gt;<\/code>\u00a0cho c\u00e1c cu\u1ed9c g\u1ecdi \u0111\u1ed3ng b\u1ed9<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">--&gt;&gt;<\/code>\u00a0cho c\u00e1c ph\u1ea3n h\u1ed3i<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Ghi ch\u00fa tr\u00ean<\/code> cho ch\u00fa th\u00edch<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">h\u00ecnh ch\u1eef nh\u1eadt<\/code> \u0111\u1ec3 l\u00e0m n\u1ed5i b\u1eadt c\u00e1c ph\u1ea7n<\/p>\n<\/li>\n<\/ul>\n<h3>B\u00e0i h\u01b0\u1edbng d\u1eabn 4: Bi\u1ec3u \u0111\u1ed3 Gantt cho l\u1eadp k\u1ebf ho\u1ea1ch Sprint<\/h3>\n<p>Mermaid c\u0169ng h\u1ed7 tr\u1ee3 tr\u1ef1c quan h\u00f3a ti\u1ebfn \u0111\u1ed9 d\u1ef1 \u00e1n.<br \/>\n<strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"Bi\u1ec3u \u0111\u1ed3 Gantt cho Sprint 24 c\u1ee7a M\u00f4-\u0111un X\u00e1c th\u1ef1c, hi\u1ec3n th\u1ecb c\u00e1c nhi\u1ec7m v\u1ee5 theo th\u1eddi gian cho c\u00e1c \u0111\u1ed9i Backend, Frontend v\u00e0 T\u00edch h\u1ee3p t\u1eeb ng\u00e0y 1 th\u00e1ng 6 \u0111\u1ebfn ng\u00e0y 17 th\u00e1ng 6.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8bd9463b2.png\"\/><\/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:eNqFkUFrwzAMhe+D\/QddemtY64QdettoCx0rFNoxdvQSNROr7eIoZfv3U+IkTaBhOhhj5XvSe8m1Zb6\/AykmPiHsz54sg0oggqeSv9AypZrJWdi6rDxh+DjTjGvnjWaAD6lou42Wy9DTP1S0vYl5mGThOZwFprXYs06\/0TatJRaUW3jabSB1lr1OuYBQi8xZnNYjsZhPQc1UEs0eo1l1b\/CNOZ\/QyKbw8n6QCf5CKTa4SNGlEhBc9fB4CnE7XbP+1AWCodwHq20tupvggugjo2+lGvzNEgNjwWRzGNSATnp0fKWHqay92O9ieXU5WUnEnCUDcXdL+VgR89vGDk4iBqOtzkM8Y7xqd+vUGoWddyyrYQbeleJxVCEeKKgxfxtx12QcGtUvp+vjTYtUr9SFl1zFV2r1X\/LUcxeE2nT2mJae+Bd0mRGPwXEPrm39ASby08A=\" 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\">\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:eNqFkUFrwzAMhe+D\/QddemtY64QdettoCx0rFNoxdvQSNROr7eIoZfv3U+IkTaBhOhhj5XvSe8m1Zb6\/AykmPiHsz54sg0oggqeSv9AypZrJWdi6rDxh+DjTjGvnjWaAD6lou42Wy9DTP1S0vYl5mGThOZwFprXYs06\/0TatJRaUW3jabSB1lr1OuYBQi8xZnNYjsZhPQc1UEs0eo1l1b\/CNOZ\/QyKbw8n6QCf5CKTa4SNGlEhBc9fB4CnE7XbP+1AWCodwHq20tupvggugjo2+lGvzNEgNjwWRzGNSATnp0fKWHqay92O9ieXU5WUnEnCUDcXdL+VgR89vGDk4iBqOtzkM8Y7xqd+vUGoWddyyrYQbeleJxVCEeKKgxfxtx12QcGtUvp+vjTYtUr9SFl1zFV2r1X\/LUcxeE2nT2mJae+Bd0mRGPwXEPrm39ASby08A=\" 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:eNp9kr9PwkAUx3cT\/4e3sNEIbePgpgESNCQaSdTxbCu9AFfSXonODAwsGmejhBgHQ9SVxjiU8H\/cf+K7XssPAd9wuZ+f9\/2+dw3CON\/dAQxOecuB845PGQfdBA1qnh3i1mU8tIC7Ivqy1E2bcKfi+W3CAa4wtFpNK5XUGbmlQXaWa+\/lbLWtxsCxOPUYHBGr6bD0qO5SMfnh0MQRMMuoA9MHET2yBhyeVkHFge0xJ58kd4JiHvSCbmqFfa0g5xnIpyLqMWi6hIItooHlQldEr3B8UU8pBPN3JQcp+hLFyIORUkoULDe8S0jWbAiBiJ4l7QNaiO+HCgRZIAgfByTMkCnmRGppJ2Ubo5\/ZkEktA1iKFYg5hxgLyGrVKr7H+FLZ4hfmQscVkzeGGaY9LBjD1bizxr+RL4ub\/Z6FYjJi0Iq\/gXvYFYDNGhOGrlTOeSljej\/7FNETCrDF5F2qkeuRBdfI9qTx\/kacsYTTt9muoumGT+Q8dR6PsbPqpyx+yLpimmhMq2puaU1ZL\/8HSA0rlPEH4MXYVWWxjXXnWxjGnJF4\/AWuYw8J\" \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\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">gantt\r\n    title Sprint 24 - Module X\u00e1c th\u1ef1c\r\n    dateFormat  YYYY-MM-DD\r\n    axisFormat  %m\/%d\r\n    \r\n    section Backend\r\n    Thi\u1ebft k\u1ebf h\u1ee3p \u0111\u1ed3ng API       :done,    des1, 2024-06-01, 2d\r\n    Tri\u1ec3n khai d\u1ecbch v\u1ee5 JWT      :active,  des2, 2024-06-03, 3d\r\n    Di chuy\u1ec3n c\u01a1 s\u1edf d\u1eef li\u1ec7u     :         des3, sau des2, 2d\r\n    Ki\u1ec3m th\u1eed \u0111\u01a1n v\u1ecb            :         des4, sau des3, 2d\r\n    \r\n    section Frontend\r\n    Th\u00e0nh ph\u1ea7n \u0111\u0103ng nh\u1eadp       :         front1, 2024-06-03, 3d\r\n    Qu\u1ea3n l\u00fd token              :         front2, sau front1, 2d\r\n    \u0110\u01b0\u1eddng d\u1eabn \u0111\u01b0\u1ee3c b\u1ea3o v\u1ec7      :         front3, sau front2, 2d\r\n    \r\n    section Integration\r\n    T\u00edch h\u1ee3p API               :         int1, sau des4, 2d\r\n    Ki\u1ec3m th\u1eed E2E               :         int2, sau int1, 3d\r\n    Ki\u1ec3m to\u00e1n b\u1ea3o m\u1eadt          :         int3, sau int2, 2d\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNp9kr9PwkAUx3cT\/4e3sNEIbePgpgESNCQaSdTxbCu9AFfSXonODAwsGmejhBgHQ9SVxjiU8H\/cf+K7XssPAd9wuZ+f9\/2+dw3CON\/dAQxOecuB845PGQfdBA1qnh3i1mU8tIC7Ivqy1E2bcKfi+W3CAa4wtFpNK5XUGbmlQXaWa+\/lbLWtxsCxOPUYHBGr6bD0qO5SMfnh0MQRMMuoA9MHET2yBhyeVkHFge0xJ58kd4JiHvSCbmqFfa0g5xnIpyLqMWi6hIItooHlQldEr3B8UU8pBPN3JQcp+hLFyIORUkoULDe8S0jWbAiBiJ4l7QNaiO+HCgRZIAgfByTMkCnmRGppJ2Ubo5\/ZkEktA1iKFYg5hxgLyGrVKr7H+FLZ4hfmQscVkzeGGaY9LBjD1bizxr+RL4ub\/Z6FYjJi0Iq\/gXvYFYDNGhOGrlTOeSljej\/7FNETCrDF5F2qkeuRBdfI9qTx\/kacsYTTt9muoumGT+Q8dR6PsbPqpyx+yLpimmhMq2puaU1ZL\/8HSA0rlPEH4MXYVWWxjXXnWxjGnJF4\/AWuYw8J\" \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:eNqFkUFrwzAMhe+D\/QddemtY64QdettoCx0rFNoxdvQSNROr7eIoZfv3U+IkTaBhOhhj5XvSe8m1Zb6\/AykmPiHsz54sg0oggqeSv9AypZrJWdi6rDxh+DjTjGvnjWaAD6lou42Wy9DTP1S0vYl5mGThOZwFprXYs06\/0TatJRaUW3jabSB1lr1OuYBQi8xZnNYjsZhPQc1UEs0eo1l1b\/CNOZ\/QyKbw8n6QCf5CKTa4SNGlEhBc9fB4CnE7XbP+1AWCodwHq20tupvggugjo2+lGvzNEgNjwWRzGNSATnp0fKWHqay92O9ieXU5WUnEnCUDcXdL+VgR89vGDk4iBqOtzkM8Y7xqd+vUGoWddyyrYQbeleJxVCEeKKgxfxtx12QcGtUvp+vjTYtUr9SFl1zFV2r1X\/LUcxeE2nT2mJae+Bd0mRGPwXEPrm39ASby08A=\" 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<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqFkUFrwzAMhe+D\/QddemtY64QdettoCx0rFNoxdvQSNROr7eIoZfv3U+IkTaBhOhhj5XvSe8m1Zb6\/AykmPiHsz54sg0oggqeSv9AypZrJWdi6rDxh+DjTjGvnjWaAD6lou42Wy9DTP1S0vYl5mGThOZwFprXYs06\/0TatJRaUW3jabSB1lr1OuYBQi8xZnNYjsZhPQc1UEs0eo1l1b\/CNOZ\/QyKbw8n6QCf5CKTa4SNGlEhBc9fB4CnE7XbP+1AWCodwHq20tupvggugjo2+lGvzNEgNjwWRzGNSATnp0fKWHqay92O9ieXU5WUnEnCUDcXdL+VgR89vGDk4iBqOtzkM8Y7xqd+vUGoWddyyrYQbeleJxVCEeKKgxfxtx12QcGtUvp+vjTYtUr9SFl1zFV2r1X\/LUcxeE2nT2mJae+Bd0mRGPwXEPrm39ASby08A=\" 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<hr\/>\n<h2>4. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 PlantUML: Ki\u1ebfn tr\u00fac doanh nghi\u1ec7p {#plantuml-tutorial}<\/h2>\n<p>PlantUML xu\u1ea5t s\u1eafc trong vi\u1ec7c t\u1ea1o c\u00e1c bi\u1ec3u \u0111\u1ed3 UML ch\u00ednh th\u1ee9c v\u00e0 t\u00e0i li\u1ec7u ki\u1ebfn tr\u00fac doanh nghi\u1ec7p. H\u00e3y c\u00f9ng kh\u00e1m ph\u00e1 c\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf.<\/p>\n<h3>B\u00e0i h\u01b0\u1edbng d\u1eabn 1: Bi\u1ec3u \u0111\u1ed3 th\u00e0nh ph\u1ea7n cho n\u1ec1n t\u1ea3ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac ph\u00e2n l\u1edbp cho n\u1ec1n t\u1ea3ng th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed, chi ti\u1ebft c\u00e1c l\u1edbp tr\u00ecnh b\u00e0y, API, d\u1ecbch v\u1ee5 kinh doanh v\u00e0 l\u1edbp d\u1eef li\u1ec7u.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8bf0e526c.png\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzGm4BvRydyOblFsm953rNrGXDI5BIl40VNW9DEDrTWEVXH5YF_Es76UIFZa-RvlFC_apdbXVL0DPszyZGgXROJKdBaNgLjXXO92b2zNQuAk3gOn5jxUfpENb4QrHgFs5zyr2FJSEyuuyzAJjVcmFHYbq9O8vqRuPsCLRE4m-C3EbhNqMFfWSHFzMeeehkHvjkX88Rmq6Xv4XtO3lpa3EZ--Om7trcYFkde2uO20J9rC8IdmhcqJqPkPsrLAQZWALnT6sDupOPpzMSJUdJ-jGqRee_3uItJ9Bzy7Db03jPTbIhT_cA3CVYKjF4X5XTh4HI3Pwy3xuAH6v-22zbMMwAO43iABnbm79hsJiQpuOYkq2puXcJsBJiMEp_cCPSMbbcqhzJB406RDP-FbSovpeKj4jwxdI0ckEbaHL0YN9cogK7euxZSf6JAF-xMeBofBal6lvfkR9F4-A7u634IVgA4ncyTe9j7fCISQ5scxlPsccTTdWVLhiu0uozS4zwEU8xC1p-5nNdCm3ucpljG8ZNEPe6aE4pRqdBDXEP9pxkEa6ziM4qt8q2NEXhMukRcbji1xQ4FHI5S3lXBiE1ktObIuKBZIoW97JP_8_nIStT6tIZ-7lm00\" 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 Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzGm4BvRydyOblFsm953rNrGXDI5BIl40VNW9DEDrTWEVXH5YF_Es76UIFZa-RvlFC_apdbXVL0DPszyZGgXROJKdBaNgLjXXO92b2zNQuAk3gOn5jxUfpENb4QrHgFs5zyr2FJSEyuuyzAJjVcmFHYbq9O8vqRuPsCLRE4m-C3EbhNqMFfWSHFzMeeehkHvjkX88Rmq6Xv4XtO3lpa3EZ--Om7trcYFkde2uO20J9rC8IdmhcqJqPkPsrLAQZWALnT6sDupOPpzMSJUdJ-jGqRee_3uItJ9Bzy7Db03jPTbIhT_cA3CVYKjF4X5XTh4HI3Pwy3xuAH6v-22zbMMwAO43iABnbm79hsJiQpuOYkq2puXcJsBJiMEp_cCPSMbbcqhzJB406RDP-FbSovpeKj4jwxdI0ckEbaHL0YN9cogK7euxZSf6JAF-xMeBofBal6lvfkR9F4-A7u634IVgA4ncyTe9j7fCISQ5scxlPsccTTdWVLhiu0uozS4zwEU8xC1p-5nNdCm3ucpljG8ZNEPe6aE4pRqdBDXEP9pxkEa6ziM4qt8q2NEXhMukRcbji1xQ4FHI5S3lXBiE1ktObIuKBZIoW97JP_8_nIStT6tIZ-7lm00\" 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 PlantUML 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:ZLHDRzD04BrRydyOmZazSEHGzIEY8DhGal0X8GuRszYhsBl6MOCYnA7gWGCNSgmgHAsg0YIgjX8Nia8S7EL_x3zXTktO3ef4VTdTsJSpRzyyUMCaI2BIABIjMoBm8W_Ya51cMwCXPJ59I0G3uWpzXAVCtUOXJ-3sFVCr8GwFOiuy9dfY77g0vUxObcq9Al3KwYfvo42ewHdpeH_Ch-OPRY8rpIZC9bJ93_fMNa0R7b8r_OEd99yw88Byb0KG1shwbRLqmHYf41zBxYfv4aC_oNyWO92VZblmphO0lnSxb71mYwhFlC5B82EzbhTAViFUhfBdk7HqVoMFcMzGUtn0Gwy4RXLq3R_358O1haSC3b8THu9AVZH9cswavNg_Wjxc_eEQ5XvWXmZlBHcRl79VtZxFC_rU9Q-TecegWeg8F0OVkvzGG2KoezN4APWRy6CijKiZAlwbqK6IJW1lyBMeB2hbSiA2cbFpleCtE1DvNX3O9eA4t5y1d7t2yO4UJQ7QeyJraXMuVg0h2fvdpE3soJX2Xwn0FbNJ2mPEa8wrn0RS2sWSK-Qlh9l_nC4CyemRQ9SB-cgyUWAOTmcXza9QlTh5bmt8237Rymn6IdxHTbZ0e6VcgpttFMePtWbtEritocr8qwgakM5krvzVAVcPWfl_AjEVZEhirwcNOkfzNTkC_en2dp9WIFII6VZUGIa2kXtQxVNQOeMnbsF6jyiXsogt9bnOi1bf-AmPhgpI39Qki2spCQ7A07Me7dCTMypJjih2HN8vXHfNYQk9ciX2BzigMy7QsZhA0dTnddacjEZNC3I_1jjQzAv1iydi2C_3_FSoic3qVvnjRNZCnP_VNm00\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n!theme plain\r\nskinparam backgroundColor #FFFFFF\r\nskinparam componentStyle uml2\r\n\r\ntitle \"N\u1ec1n t\u1ea3ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed - Ki\u1ebfn tr\u00fac th\u00e0nh ph\u1ea7n\"\r\n\r\npackage \"L\u1edbp Tr\u00ecnh b\u00e0y\" {\r\n    [Giao di\u1ec7n Web] as Web\r\n    [\u1ee8ng d\u1ee5ng Di \u0111\u1ed9ng] as Mobile\r\n    [B\u1ea3ng \u0111i\u1ec1u khi\u1ec3n Qu\u1ea3n tr\u1ecb] as Admin\r\n}\r\n\r\npackage \"L\u1edbp API\" {\r\n    [API Gateway] as Gateway\r\n    [X\u00e1c th\u1ef1c] as Auth\r\n    [B\u1ed9 gi\u1edbi h\u1ea1n t\u1ed1c \u0111\u1ed9] as RateLimit\r\n}\r\n\r\npackage \"D\u1ecbch v\u1ee5 Kinh doanh\" {\r\n    [D\u1ecbch v\u1ee5 Danh m\u1ee5c] as Catalog\r\n    [D\u1ecbch v\u1ee5 \u0110\u01a1n h\u00e0ng] as Order\r\n    [D\u1ecbch v\u1ee5 Thanh to\u00e1n] as Payment\r\n    [D\u1ecbch v\u1ee5 V\u1eadn chuy\u1ec3n] as Shipping\r\n    [D\u1ecbch v\u1ee5 Th\u00f4ng b\u00e1o] as Notify\r\n}\r\n\r\npackage \"L\u1edbp D\u1eef li\u1ec7u\" {\r\n    database \"C\u01a1 s\u1edf d\u1eef li\u1ec7u S\u1ea3n ph\u1ea9m\" as ProdDB\r\n    database \"C\u01a1 s\u1edf d\u1eef li\u1ec7u \u0110\u01a1n h\u00e0ng\" as OrderDB\r\n    database \"C\u01a1 s\u1edf d\u1eef li\u1ec7u Ng\u01b0\u1eddi d\u00f9ng\" as UserDB\r\n    queue \"H\u00e0ng \u0111\u1ee3i Tin nh\u1eafn\" as MQ\r\n}\r\n\r\nWeb --&gt; Gateway\r\nMobile --&gt; Gateway\r\nAdmin --&gt; Gateway\r\n\r\nGateway --&gt; Auth\r\nGateway --&gt; RateLimit\r\nGateway --&gt; Catalog\r\nGateway --&gt; Order\r\n\r\nOrder --&gt; Payment\r\nOrder --&gt; Shipping\r\nOrder --&gt; Notify\r\n\r\nCatalog --&gt; ProdDB\r\nOrder --&gt; OrderDB\r\nAuth --&gt; UserDB\r\n\r\nPayment ..&gt; MQ : ph\u00e1t s\u1ef1 ki\u1ec7n\r\nShipping ..&gt; MQ : \u0111\u0103ng k\u00fd s\u1ef1 ki\u1ec7n\r\nNotify ..&gt; MQ : \u0111\u0103ng k\u00fd s\u1ef1 ki\u1ec7n\r\n\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:ZLHDRzD04BrRydyOmZazSEHGzIEY8DhGal0X8GuRszYhsBl6MOCYnA7gWGCNSgmgHAsg0YIgjX8Nia8S7EL_x3zXTktO3ef4VTdTsJSpRzyyUMCaI2BIABIjMoBm8W_Ya51cMwCXPJ59I0G3uWpzXAVCtUOXJ-3sFVCr8GwFOiuy9dfY77g0vUxObcq9Al3KwYfvo42ewHdpeH_Ch-OPRY8rpIZC9bJ93_fMNa0R7b8r_OEd99yw88Byb0KG1shwbRLqmHYf41zBxYfv4aC_oNyWO92VZblmphO0lnSxb71mYwhFlC5B82EzbhTAViFUhfBdk7HqVoMFcMzGUtn0Gwy4RXLq3R_358O1haSC3b8THu9AVZH9cswavNg_Wjxc_eEQ5XvWXmZlBHcRl79VtZxFC_rU9Q-TecegWeg8F0OVkvzGG2KoezN4APWRy6CijKiZAlwbqK6IJW1lyBMeB2hbSiA2cbFpleCtE1DvNX3O9eA4t5y1d7t2yO4UJQ7QeyJraXMuVg0h2fvdpE3soJX2Xwn0FbNJ2mPEa8wrn0RS2sWSK-Qlh9l_nC4CyemRQ9SB-cgyUWAOTmcXza9QlTh5bmt8237Rymn6IdxHTbZ0e6VcgpttFMePtWbtEritocr8qwgakM5krvzVAVcPWfl_AjEVZEhirwcNOkfzNTkC_en2dp9WIFII6VZUGIa2kXtQxVNQOeMnbsF6jyiXsogt9bnOi1bf-AmPhgpI39Qki2spCQ7A07Me7dCTMypJjih2HN8vXHfNYQk9ciX2BzigMy7QsZhA0dTnddacjEZNC3I_1jjQzAv1iydi2C_3_FSoic3qVvnjRNZCnP_VNm00\" \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 PlantUML 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\/#plantuml:VLHBRzGm4BvRydyOblFsm953rNrGXDI5BIl40VNW9DEDrTWEVXH5YF_Es76UIFZa-RvlFC_apdbXVL0DPszyZGgXROJKdBaNgLjXXO92b2zNQuAk3gOn5jxUfpENb4QrHgFs5zyr2FJSEyuuyzAJjVcmFHYbq9O8vqRuPsCLRE4m-C3EbhNqMFfWSHFzMeeehkHvjkX88Rmq6Xv4XtO3lpa3EZ--Om7trcYFkde2uO20J9rC8IdmhcqJqPkPsrLAQZWALnT6sDupOPpzMSJUdJ-jGqRee_3uItJ9Bzy7Db03jPTbIhT_cA3CVYKjF4X5XTh4HI3Pwy3xuAH6v-22zbMMwAO43iABnbm79hsJiQpuOYkq2puXcJsBJiMEp_cCPSMbbcqhzJB406RDP-FbSovpeKj4jwxdI0ckEbaHL0YN9cogK7euxZSf6JAF-xMeBofBal6lvfkR9F4-A7u634IVgA4ncyTe9j7fCISQ5scxlPsccTTdWVLhiu0uozS4zwEU8xC1p-5nNdCm3ucpljG8ZNEPe6aE4pRqdBDXEP9pxkEa6ziM4qt8q2NEXhMukRcbji1xQ4FHI5S3lXBiE1ktObIuKBZIoW97JP_8_nIStT6tIZ-7lm00\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzGm4BvRydyOblFsm953rNrGXDI5BIl40VNW9DEDrTWEVXH5YF_Es76UIFZa-RvlFC_apdbXVL0DPszyZGgXROJKdBaNgLjXXO92b2zNQuAk3gOn5jxUfpENb4QrHgFs5zyr2FJSEyuuyzAJjVcmFHYbq9O8vqRuPsCLRE4m-C3EbhNqMFfWSHFzMeeehkHvjkX88Rmq6Xv4XtO3lpa3EZ--Om7trcYFkde2uO20J9rC8IdmhcqJqPkPsrLAQZWALnT6sDupOPpzMSJUdJ-jGqRee_3uItJ9Bzy7Db03jPTbIhT_cA3CVYKjF4X5XTh4HI3Pwy3xuAH6v-22zbMMwAO43iABnbm79hsJiQpuOYkq2puXcJsBJiMEp_cCPSMbbcqhzJB406RDP-FbSovpeKj4jwxdI0ckEbaHL0YN9cogK7euxZSf6JAF-xMeBofBal6lvfkR9F4-A7u634IVgA4ncyTe9j7fCISQ5scxlPsccTTdWVLhiu0uozS4zwEU8xC1p-5nNdCm3ucpljG8ZNEPe6aE4pRqdBDXEP9pxkEa6ziM4qt8q2NEXhMukRcbji1xQ4FHI5S3lXBiE1ktObIuKBZIoW97JP_8_nIStT6tIZ-7lm00\" 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 Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n PlantUML\" decoding=\"async\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e8451e511f.png\"\/><br \/>\n<em>H\u00ecnh 3: Bi\u1ec3u \u0111\u1ed3 th\u00e0nh ph\u1ea7n PlantUML hi\u1ec3n th\u1ecb ki\u1ebfn tr\u00fac ph\u00e2n l\u1edbp<\/em><\/p>\n<h3>B\u00e0i h\u01b0\u1edbng d\u1eabn 2: Bi\u1ec3u \u0111\u1ed3 tri\u1ec3n khai cho c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<h3>B\u00e0i h\u01b0\u1edbng d\u1eabn 3: M\u00f4 h\u00ecnh C4 \u2013 Bi\u1ec3u \u0111\u1ed3 Container<\/h3>\n<p>M\u00f4 h\u00ecnh C4 r\u1ea5t tuy\u1ec7t v\u1eddi \u0111\u1ec3 truy\u1ec1n \u0111\u1ea1t ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m \u1edf nhi\u1ec1u m\u1ee9c \u0111\u1ed9 tr\u1eebu t\u01b0\u1ee3ng kh\u00e1c nhau.<br \/>\n<strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 container m\u00f4 h\u00ecnh C4 hi\u1ec3n th\u1ecb ki\u1ebfn tr\u00fac tri\u1ec3n khai \u0111\u00e1m m\u00e2y AWS v\u1edbi c\u00e1c m\u1ea1ng con c\u00f4ng c\u1ed9ng v\u00e0 ri\u00eang t\u01b0, m\u00e1y ch\u1ee7 web, m\u00e1y ch\u1ee7 API v\u00e0 c\u00e1c th\u00e0nh ph\u1ea7n l\u01b0u tr\u1eef.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8cec25f51.png\"\/><br \/>\n@startuml<br \/>\n!define AWS_COLOR FF9900<br \/>\n!define DOCKER_COLOR 0DB7ED<br \/>\nskinparam componentStyle uml2<br \/>\nskinparam backgroundColor #FAFAFA<br \/>\ntitle &#8220;Ki\u1ebfn tr\u00fac Tri\u1ec3n khai \u0110\u00e1m m\u00e2y&#8221;<br \/>\npackage &#8220;V\u00f9ng AWS: us-east-1&#8221; {<br \/>\npackage &#8220;M\u1ea1ng con C\u00f4ng c\u1ed9ng&#8221; {<br \/>\n[CloudFront CDN] as CDN<br \/>\n[Application Load Balancer] as ALB #AWS_COLOR<br \/>\n}<br \/>\npackage &#8220;M\u1ea1ng con Ri\u00eang t\u01b0 1&#8221; {<br \/>\n[Web Server 1] as Web1 #DOCKER_COLOR<br \/>\n[Web Server 2] as Web2 #DOCKER_COLOR<br \/>\n}<br \/>\npackage &#8220;M\u1ea1ng con Ri\u00eang t\u01b0 2&#8221; {<br \/>\n[API Server 1] as API1 #DOCKER_COLOR<br \/>\n[API Server 2] as API2 #DOCKER_COLOR<br \/>\n}<br \/>\npackage &#8220;T\u1ea7ng D\u1eef li\u1ec7u&#8221; {<br \/>\ndatabase &#8220;RDS Ch\u00ednh&#8221; as RDS1 #AWS_COLOR<br \/>\ndatabase &#8220;RDS Sao ch\u00e9p&#8221; as RDS2 #AWS_COLOR<br \/>\n[ElastiCache Redis] as Cache #AWS_COLOR<br \/>\n}<br \/>\npackage &#8220;L\u01b0u tr\u1eef&#8221; {<br \/>\n[S3 Bucket] as S3 #AWS_COLOR<br \/>\n[EFS Shared Storage] as EFS #AWS_COLOR<br \/>\n}<br \/>\n}<br \/>\nInternet \u2013&gt; CDN<br \/>\nCDN \u2013&gt; ALB<br \/>\nALB \u2013&gt; Web1<br \/>\nALB \u2013&gt; Web2<br \/>\nWeb1 \u2013&gt; API1<br \/>\nWeb1 \u2013&gt; API2<br \/>\nWeb2 \u2013&gt; API1<br \/>\nWeb2 \u2013&gt; API2<br \/>\nAPI1 \u2013&gt; RDS1<br \/>\nAPI2 \u2013&gt; RDS1<br \/>\nRDS1 -[dashed]&gt; RDS2<br \/>\nAPI1 \u2013&gt; Cache<br \/>\nAPI2 \u2013&gt; Cache<br \/>\nAPI1 \u2013&gt; S3<br \/>\nAPI2 \u2013&gt; S3<br \/>\nWeb1 \u2013&gt; EFS<br \/>\nWeb2 \u2013&gt; EFS<br \/>\n@enduml<\/p>\n<h3>B\u00e0i t\u1eadp 4: Bi\u1ec3u \u0111\u1ed3 ho\u1ea1t \u0111\u1ed9ng cho quy tr\u00ecnh<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 ho\u1ea1t \u0111\u1ed9ng quy tr\u00ecnh l\u00e0m vi\u1ec7c hi\u1ec3n th\u1ecb t\u01b0\u01a1ng t\u00e1c gi\u1eefa kh\u00e1ch h\u00e0ng v\u00e0 h\u1ec7 th\u1ed1ng cho m\u1ed9t \u0111\u01a1n h\u00e0ng tr\u1ef1c tuy\u1ebfn, bao g\u1ed3m x\u00e1c th\u1ef1c, thanh to\u00e1n v\u00e0 c\u00e1c t\u00e1c v\u1ee5 n\u1ec1n.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8d19bd807.png\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XL9DJ-Gm3BrNwd-mE0r_eNFWengXMMa1RPVTSqXT6aqQLuupg8Bzx-ka349muEXd-_czbrn6CInfydNrsgOeD26_rbL1wwgvPdgE2FTCVR8IjmfTzJq8GQi3kTIMHLoX4Us1KeQLhLkYuAHSpH_ZNMy4omxi5Ir4hV4s-Op_9Z5U8JV0fhJXwcYSDuyUByv1HWomMJ2UrnL0ymiZyX5X7uuOX7ZHHVGgSXDedUX6UeQx9403T4BsiCsmUfjrClHkAFe-k6rsGP2X6zqyk_04Qf4n5f4TUhG2zsQPz1hyH1cf_somP13ZQUhDoMcdIpPtX-I_ccaPSm1tt2DlL_6g45eAW-F9YAC0kqcpM9iFSydn6-kdmpjcMbbx56F73-wRxFNzx8ctr1gPaPJDhudLrQpFvegKisjZ3qzCIJN-eCTu1Y_bx0q6v3Tbv2okQcz9tB30NyCuKeeP_PVvBbM6_hZ_\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XL9DJ-Gm3BrNwd-mE0r_eNFWengXMMa1RPVTSqXT6aqQLuupg8Bzx-ka349muEXd-_czbrn6CInfydNrsgOeD26_rbL1wwgvPdgE2FTCVR8IjmfTzJq8GQi3kTIMHLoX4Us1KeQLhLkYuAHSpH_ZNMy4omxi5Ir4hV4s-Op_9Z5U8JV0fhJXwcYSDuyUByv1HWomMJ2UrnL0ymiZyX5X7uuOX7ZHHVGgSXDedUX6UeQx9403T4BsiCsmUfjrClHkAFe-k6rsGP2X6zqyk_04Qf4n5f4TUhG2zsQPz1hyH1cf_somP13ZQUhDoMcdIpPtX-I_ccaPSm1tt2DlL_6g45eAW-F9YAC0kqcpM9iFSydn6-kdmpjcMbbx56F73-wRxFNzx8ctr1gPaPJDhudLrQpFvegKisjZ3qzCIJN-eCTu1Y_bx0q6v3Tbv2okQcz9tB30NyCuKeeP_PVvBbM6_hZ_\" 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 PlantUML 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:bLCzIyD06DuFyXzUEhL_8HqiL6X1SEhW6jEQEzfSIfiMmJg8Gn4HAIAk3U9GiVXHfnpIuQJ_u_w9xtl1VYww97a_xlbAKkh6NYVkXIs73GwuJdmEN8zbC72OdJZChUcN49h2fFCGkYPzbD3c9fs4HPfn_Hn2NuyZ28HHjzbXEw43qjOSOkxHDTA9n1bILOqQOjUeaQLoZv3Prky--FGS6lM4dKuaWnraFIKme-wnPX9fUf0lwu-CBDWh891-WRolPmM70RZx28jGHhrc6tJsJaAJHqNM9C-Gnzkd3BBrAj9TIglc6j3fF5vo0tJZgCqQiYvEh8-joDn3t9-suNk4Pptm4U8AvNlHIdqPUpSKuU9jaP0Mh2V-7n8oQWej_RMn-Uk-jkgHUOhS9qExMTHCcaIe3xdNNBaLH1VG23tHWbDAH98HcGtBrfFjnFzFi6NKWzZo1r1ln9xFLqcwbSsKrYdnrQLPL3eHMzhfVJYCjV5J5R689EJAf0FwA668Deowa3auM_FEzSpBG39tDIiSZZNEqD0I-PnabL0W_Xm_\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n|Kh\u00e1ch h\u00e0ng|\r\nstart\r\n:T\u00ecm ki\u1ebfm s\u1ea3n ph\u1ea9m;\r\n:Th\u00eam v\u00e0o gi\u1ecf h\u00e0ng;\r\n:Ti\u1ebfn h\u00e0nh thanh to\u00e1n;\r\n\r\n|H\u1ec7 th\u1ed1ng|\r\n:X\u00e1c th\u1ef1c c\u00e1c m\u1ee5c trong gi\u1ecf h\u00e0ng;\r\n:T\u00ednh t\u1ed5ng;\nn\u1ebfu (C\u00f2n h\u00e0ng?) th\u00ec (c\u00f3)\r\n  :D\u1ef1 tr\u1eef h\u00e0ng t\u1ed3n kho;\nkh\u00e1c (kh\u00f4ng)\r\n  :Hi\u1ec3n th\u1ecb h\u1ebft h\u00e0ng;\r\n  stop\nendif\r\n\r\n|Kh\u00e1ch h\u00e0ng|\r\n:Nh\u1eadp \u0111\u1ecba ch\u1ec9 giao h\u00e0ng;\r\n:Ch\u1ecdn ph\u01b0\u01a1ng th\u1ee9c thanh to\u00e1n;\r\n\r\n|H\u1ec7 th\u1ed1ng|\r\n:X\u1eed l\u00fd thanh to\u00e1n;\nn\u1ebfu (Thanh to\u00e1n th\u00e0nh c\u00f4ng?) th\u00ec (c\u00f3)\r\n  :T\u1ea1o \u0111\u01a1n h\u00e0ng;\r\n  :G\u1eedi email x\u00e1c nh\u1eadn;\r\n  :C\u1eadp nh\u1eadt h\u00e0ng t\u1ed3n kho;\nkh\u00e1c (kh\u00f4ng)\r\n  :Hi\u1ec3n th\u1ecb l\u1ed7i thanh to\u00e1n;\r\n  detach\nendif\r\n\r\n:Giao h\u00e0ng;\r\n:C\u1eadp nh\u1eadt tr\u1ea1ng th\u00e1i \u0111\u01a1n h\u00e0ng;\r\nstop\r\n\npartition \"C\u00f4ng vi\u1ec7c n\u1ec1n\" {\r\n  :T\u1ea1o h\u00f3a \u0111\u01a1n;\r\n  :Th\u00f4ng b\u00e1o kho h\u00e0ng;\r\n}\r\n\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:bLCzIyD06DuFyXzUEhL_8HqiL6X1SEhW6jEQEzfSIfiMmJg8Gn4HAIAk3U9GiVXHfnpIuQJ_u_w9xtl1VYww97a_xlbAKkh6NYVkXIs73GwuJdmEN8zbC72OdJZChUcN49h2fFCGkYPzbD3c9fs4HPfn_Hn2NuyZ28HHjzbXEw43qjOSOkxHDTA9n1bILOqQOjUeaQLoZv3Prky--FGS6lM4dKuaWnraFIKme-wnPX9fUf0lwu-CBDWh891-WRolPmM70RZx28jGHhrc6tJsJaAJHqNM9C-Gnzkd3BBrAj9TIglc6j3fF5vo0tJZgCqQiYvEh8-joDn3t9-suNk4Pptm4U8AvNlHIdqPUpSKuU9jaP0Mh2V-7n8oQWej_RMn-Uk-jkgHUOhS9qExMTHCcaIe3xdNNBaLH1VG23tHWbDAH98HcGtBrfFjnFzFi6NKWzZo1r1ln9xFLqcwbSsKrYdnrQLPL3eHMzhfVJYCjV5J5R689EJAf0FwA668Deowa3auM_FEzSpBG39tDIiSZZNEqD0I-PnabL0W_Xm_\" \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 PlantUML 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\/#plantuml:XL9DJ-Gm3BrNwd-mE0r_eNFWengXMMa1RPVTSqXT6aqQLuupg8Bzx-ka349muEXd-_czbrn6CInfydNrsgOeD26_rbL1wwgvPdgE2FTCVR8IjmfTzJq8GQi3kTIMHLoX4Us1KeQLhLkYuAHSpH_ZNMy4omxi5Ir4hV4s-Op_9Z5U8JV0fhJXwcYSDuyUByv1HWomMJ2UrnL0ymiZyX5X7uuOX7ZHHVGgSXDedUX6UeQx9403T4BsiCsmUfjrClHkAFe-k6rsGP2X6zqyk_04Qf4n5f4TUhG2zsQPz1hyH1cf_somP13ZQUhDoMcdIpPtX-I_ccaPSm1tt2DlL_6g45eAW-F9YAC0kqcpM9iFSydn6-kdmpjcMbbx56F73-wRxFNzx8ctr1gPaPJDhudLrQpFvegKisjZ3qzCIJN-eCTu1Y_bx0q6v3Tbv2okQcz9tB30NyCuKeeP_PVvBbM6_hZ_\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XL9DJ-Gm3BrNwd-mE0r_eNFWengXMMa1RPVTSqXT6aqQLuupg8Bzx-ka349muEXd-_czbrn6CInfydNrsgOeD26_rbL1wwgvPdgE2FTCVR8IjmfTzJq8GQi3kTIMHLoX4Us1KeQLhLkYuAHSpH_ZNMy4omxi5Ir4hV4s-Op_9Z5U8JV0fhJXwcYSDuyUByv1HWomMJ2UrnL0ymiZyX5X7uuOX7ZHHVGgSXDedUX6UeQx9403T4BsiCsmUfjrClHkAFe-k6rsGP2X6zqyk_04Qf4n5f4TUhG2zsQPz1hyH1cf_somP13ZQUhDoMcdIpPtX-I_ccaPSm1tt2DlL_6g45eAW-F9YAC0kqcpM9iFSydn6-kdmpjcMbbx56F73-wRxFNzx8ctr1gPaPJDhudLrQpFvegKisjZ3qzCIJN-eCTu1Y_bx0q6v3Tbv2okQcz9tB30NyCuKeeP_PVvBbM6_hZ_\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr\/>\n<h2>5. C\u01a1 b\u1ea3n v\u1ec1 Graphviz: Tr\u1ef1c quan h\u00f3a m\u1ea1ng ph\u1ee9c t\u1ea1p {#graphviz-tutorial}<\/h2>\n<p>Graphviz (ng\u00f4n ng\u1eef DOT) xu\u1ea5t s\u1eafc trong vi\u1ec7c tr\u1ef1c quan h\u00f3a c\u00e1c m\u1ed1i quan h\u1ec7 ph\u1ee9c t\u1ea1p v\u00e0 c\u1ea5u tr\u00fac m\u1ea1ng n\u01a1i c\u00e1c thu\u1eadt to\u00e1n b\u1ed1 tr\u00ed \u0111\u00f3ng vai tr\u00f2 quan tr\u1ecdng.<\/p>\n<h3>B\u00e0i t\u1eadp 1: \u0110\u1ed3 th\u1ecb ph\u1ee5 thu\u1ed9c c\u1ee7a vi d\u1ecbch v\u1ee5<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 \u0111\u1ed3 th\u1ecb ph\u1ee5 thu\u1ed9c vi d\u1ecbch v\u1ee5 hi\u1ec3n th\u1ecb C\u1ed5ng API, L\u01b0\u1edbi D\u1ecbch v\u1ee5 v\u00e0 c\u00e1c d\u1ecbch v\u1ee5 \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i v\u1edbi c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 c\u1ed5ng b\u00ean ngo\u00e0i.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8d4a5db75.png\"\/><br \/>\n<em>H\u00ecnh 4: Tr\u1ef1c quan h\u00f3a Graphviz hi\u1ec3n th\u1ecb c\u00e1c ph\u1ee5 thu\u1ed9c v\u00e0 lu\u1ed3ng d\u1eef li\u1ec7u c\u1ee7a vi d\u1ecbch v\u1ee5<\/em><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVU1vEzEQvSPxH6zlGlRoKaKqFqklFeohJSJwqnJw7HF2xMZe2U7bBfW\/11lnP2J7A+xhpZ15Ox\/Pbzwc15pWBZkh08qAfkAGZgoVSA6SIRjy5\/Ur4h5N5S+OOv9xfekNUnEg96agFeQr9TQhxtYl5JlWW\/cvnwgsS+DZhAglraQb57rSSMtsuQ8AfO0ChF6PN\/gb8vfvWqh\/n5yQu11SDgIlWlTSkEe0BWGqVNoMy9olb6x59gbOxKngXdrsan5LvlILj7TODpFCMM5Pe+TC80FmYIoIKi7Yhywq8IvSQFoe92F+um+yj5V1VWxd4aHxm+YJ6JzWG5A2st\/KB2dWuo48d8qiQEZ3HMWZJS1ri8yEnq6JKbV0RQ2Y+KRZXaI7Xu2OacAG+wQf2UVPXNPx9Droa2CYa8W3zA5NfVm9savo5smCdoCA2kiDB0d0BufiPOuEyakpel0uQ3ZbSbT2mw3FMiJvMVuM0vYdyoZxU2BlUmJ7+znQVFpoO1hSMzEsqaIYltZVjBtTWowc1V5K831Hw\/Melp5EHFY9aOQ4ZnwsEuB\/ny0Pj3UbRjgIG4oqOZjNH2m5jeMTQkxMthfJ6GSlGEmnvPdD5GdoebT3\/wjQjc5iu2r2kHG3vyZrt0MqlGvv3i+gdgnlxm2Ly96WHJXRK\/Z5mPhvkZNjc+xKPn4tu9zPL0KfHeo=\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVU1vEzEQvSPxH6zlGlRoKaKqFqklFeohJSJwqnJw7HF2xMZe2U7bBfW\/11lnP2J7A+xhpZ15Ox\/Pbzwc15pWBZkh08qAfkAGZgoVSA6SIRjy5\/Ur4h5N5S+OOv9xfekNUnEg96agFeQr9TQhxtYl5JlWW\/cvnwgsS+DZhAglraQb57rSSMtsuQ8AfO0ChF6PN\/gb8vfvWqh\/n5yQu11SDgIlWlTSkEe0BWGqVNoMy9olb6x59gbOxKngXdrsan5LvlILj7TODpFCMM5Pe+TC80FmYIoIKi7Yhywq8IvSQFoe92F+um+yj5V1VWxd4aHxm+YJ6JzWG5A2st\/KB2dWuo48d8qiQEZ3HMWZJS1ri8yEnq6JKbV0RQ2Y+KRZXaI7Xu2OacAG+wQf2UVPXNPx9Droa2CYa8W3zA5NfVm9savo5smCdoCA2kiDB0d0BufiPOuEyakpel0uQ3ZbSbT2mw3FMiJvMVuM0vYdyoZxU2BlUmJ7+znQVFpoO1hSMzEsqaIYltZVjBtTWowc1V5K831Hw\/Melp5EHFY9aOQ4ZnwsEuB\/ny0Pj3UbRjgIG4oqOZjNH2m5jeMTQkxMthfJ6GSlGEmnvPdD5GdoebT3\/wjQjc5iu2r2kHG3vyZrt0MqlGvv3i+gdgnlxm2Ly96WHJXRK\/Z5mPhvkZNjc+xKPn4tu9zPL0KfHeo=\" 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 DOT 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\">DOT<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVT1vEzEY3ivxH14da1ChpYiqOqSWINQhECkwVRlc25ezuNjB9gUO1ImBoQsVIwPtwABLB8TSGy\/if9w\/wckluQ\/7Atxww+vH78fj57EJG0k0CaHHsBSKyinDVHXphHJCOWZUwftbW2A+ifgrwqT\/4uigCHBBKJyoEE2ofyredkDpJKK+J0Vs9pJOwKKIEq8DgeCao7FZOpQMRd5wmYCSkUnQXC3wir2j\/r27K2jx396G2ac8Pech8FE4+46AZzcapnn6hcE4u4xB5TfXuNrevAksIiF97zbdDXYCsi7vHfaP4SnS9A1KvDoyCDAhOyVyUPACPapCCxrs4\/ue1ejj7AoDMc3icN7gN8B5eqEhyn6xZdKXhm1YZvbWPcU6tILPJXFA+ygZU66t+DGfmrCQibXyTGgWMIw0E9yuzFGUaIZVc6Uc6feVITj9Oh\/rGiKWpx9jWwo4iZg5f2nOsUITfkgf4P2S0cXw3aPGiJVAXwoSY10NlR2WwXVz3QrVp9kPbhQiskvWItXaCe7SvWDPW+uXIBWW8h026V4pZhV\/MkYsstgc9AatPPaMEhi8jhGH0HDoUuOdRw3RuZU4hzllZMOcwrJhbqnZuDbx2chWObpsUE5UPfdq605EvevKIJsx7U5xgP\/dbgXc1m8zQy1tU1ZOry52uAXXjndI0WH2QiStDnMx4i55UtiocNFw4+z\/kaD2AHwGbYxzDthsm13k6QfgYfZzXGCWz9XqyfKVeVsOypjTL46rdxE\/qxb\/W2KndTbd1G23dVF66+wPZs1Ckw==\" \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 DOT in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-dot\"><code class=\"language-dot\" data-language=\"dot\" class=\"language-dot\">digraph MicroservicesDependencies {\r\n    rankdir=TB;\r\n    node [shape=box, style=\"rounded,filled\", fontname=\"Arial\"];\r\n    edge [fontname=\"Arial\", fontsize=10];\r\n    \r\n    \/\/ \u0110\u1ecbnh ngh\u0129a n\u00fat v\u1edbi m\u00e0u s\u1eafc\r\n    node [fillcolor=\"#e3f2fd\"];\r\n    \"API Gateway\" [fillcolor=\"#ffcdd2\"];\r\n    \"Service Mesh\" [fillcolor=\"#fff9c4\"];\r\n    \r\n    \/\/ C\u00e1c d\u1ecbch v\u1ee5 c\u1ed1t l\u00f5i\r\n    \"User Service\";\r\n    \"Auth Service\";\r\n    \"Order Service\";\r\n    \"Payment Service\";\r\n    \"Inventory Service\";\r\n    \"Notification Service\";\r\n    \"Analytics Service\";\r\n    \r\n    \/\/ C\u01a1 s\u1edf d\u1eef li\u1ec7u\r\n    node [shape=cylinder, fillcolor=\"#c8e6c9\"];\r\n    \"User DB\";\r\n    \"Order DB\";\r\n    \"Product DB\";\r\n    \"Analytics DB\";\r\n    \r\n    \/\/ D\u1ecbch v\u1ee5 b\u00ean ngo\u00e0i\r\n    node [shape=box, fillcolor=\"#f3e5f5\", style=\"dashed,filled\"];\r\n    \"Payment Gateway\";\r\n    \"Email Service\";\r\n    \"SMS Service\";\r\n    \r\n    \/\/ M\u1ed1i quan h\u1ec7\r\n    \"API Gateway\" -&gt; \"Service Mesh\";\r\n    \"Service Mesh\" -&gt; \"User Service\";\r\n    \"Service Mesh\" -&gt; \"Auth Service\";\r\n    \"Service Mesh\" -&gt; \"Order Service\";\r\n    \"Service Mesh\" -&gt; \"Payment Service\";\r\n    \"Service Mesh\" -&gt; \"Inventory Service\";\r\n    \r\n    \"User Service\" -&gt; \"User DB\";\r\n    \"Auth Service\" -&gt; \"User DB\";\r\n    \"Order Service\" -&gt; \"Order DB\";\r\n    \"Order Service\" -&gt; \"Inventory Service\";\r\n    \"Order Service\" -&gt; \"Payment Service\";\r\n    \"Inventory Service\" -&gt; \"Product DB\";\r\n    \"Payment Service\" -&gt; \"Payment Gateway\";\r\n    \"Notification Service\" -&gt; \"Email Service\";\r\n    \"Notification Service\" -&gt; \"SMS Service\";\r\n    \"Analytics Service\" -&gt; \"Analytics DB\";\r\n    \r\n    \"Order Service\" -&gt; \"Notification Service\" [style=dashed];\r\n    \"Payment Service\" -&gt; \"Notification Service\" [style=dashed];\r\n    \r\n    \/\/ \u0110\u1ed3 th\u1ecb con \u0111\u1ec3 nh\u00f3m\r\n    {\r\n        rank=same;\r\n        \"User Service\";\r\n        \"Auth Service\";\n    }\r\n    \r\n    {\r\n        rank=same;\r\n        \"Order Service\";\r\n        \"Payment Service\";\r\n        \"Inventory Service\";\n    }\n}<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVT1vEzEY3ivxH14da1ChpYiqOqSWINQhECkwVRlc25ezuNjB9gUO1ImBoQsVIwPtwABLB8TSGy\/if9w\/wckluQ\/7Atxww+vH78fj57EJG0k0CaHHsBSKyinDVHXphHJCOWZUwftbW2A+ifgrwqT\/4uigCHBBKJyoEE2ofyredkDpJKK+J0Vs9pJOwKKIEq8DgeCao7FZOpQMRd5wmYCSkUnQXC3wir2j\/r27K2jx396G2ac8Pech8FE4+46AZzcapnn6hcE4u4xB5TfXuNrevAksIiF97zbdDXYCsi7vHfaP4SnS9A1KvDoyCDAhOyVyUPACPapCCxrs4\/ue1ejj7AoDMc3icN7gN8B5eqEhyn6xZdKXhm1YZvbWPcU6tILPJXFA+ygZU66t+DGfmrCQibXyTGgWMIw0E9yuzFGUaIZVc6Uc6feVITj9Oh\/rGiKWpx9jWwo4iZg5f2nOsUITfkgf4P2S0cXw3aPGiJVAXwoSY10NlR2WwXVz3QrVp9kPbhQiskvWItXaCe7SvWDPW+uXIBWW8h026V4pZhV\/MkYsstgc9AatPPaMEhi8jhGH0HDoUuOdRw3RuZU4hzllZMOcwrJhbqnZuDbx2chWObpsUE5UPfdq605EvevKIJsx7U5xgP\/dbgXc1m8zQy1tU1ZOry52uAXXjndI0WH2QiStDnMx4i55UtiocNFw4+z\/kaD2AHwGbYxzDthsm13k6QfgYfZzXGCWz9XqyfKVeVsOypjTL46rdxE\/qxb\/W2KndTbd1G23dVF66+wPZs1Ckw==\" \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 DOT 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\/#graphviz:eNqVVU1vEzEQvSPxH6zlGlRoKaKqFqklFeohJSJwqnJw7HF2xMZe2U7bBfW\/11lnP2J7A+xhpZ15Ox\/Pbzwc15pWBZkh08qAfkAGZgoVSA6SIRjy5\/Ur4h5N5S+OOv9xfekNUnEg96agFeQr9TQhxtYl5JlWW\/cvnwgsS+DZhAglraQb57rSSMtsuQ8AfO0ChF6PN\/gb8vfvWqh\/n5yQu11SDgIlWlTSkEe0BWGqVNoMy9olb6x59gbOxKngXdrsan5LvlILj7TODpFCMM5Pe+TC80FmYIoIKi7Yhywq8IvSQFoe92F+um+yj5V1VWxd4aHxm+YJ6JzWG5A2st\/KB2dWuo48d8qiQEZ3HMWZJS1ri8yEnq6JKbV0RQ2Y+KRZXaI7Xu2OacAG+wQf2UVPXNPx9Droa2CYa8W3zA5NfVm9savo5smCdoCA2kiDB0d0BufiPOuEyakpel0uQ3ZbSbT2mw3FMiJvMVuM0vYdyoZxU2BlUmJ7+znQVFpoO1hSMzEsqaIYltZVjBtTWowc1V5K831Hw\/Melp5EHFY9aOQ4ZnwsEuB\/ny0Pj3UbRjgIG4oqOZjNH2m5jeMTQkxMthfJ6GSlGEmnvPdD5GdoebT3\/wjQjc5iu2r2kHG3vyZrt0MqlGvv3i+gdgnlxm2Ly96WHJXRK\/Z5mPhvkZNjc+xKPn4tu9zPL0KfHeo=\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVU1vEzEQvSPxH6zlGlRoKaKqFqklFeohJSJwqnJw7HF2xMZe2U7bBfW\/11lnP2J7A+xhpZ15Ox\/Pbzwc15pWBZkh08qAfkAGZgoVSA6SIRjy5\/Ur4h5N5S+OOv9xfekNUnEg96agFeQr9TQhxtYl5JlWW\/cvnwgsS+DZhAglraQb57rSSMtsuQ8AfO0ChF6PN\/gb8vfvWqh\/n5yQu11SDgIlWlTSkEe0BWGqVNoMy9olb6x59gbOxKngXdrsan5LvlILj7TODpFCMM5Pe+TC80FmYIoIKi7Yhywq8IvSQFoe92F+um+yj5V1VWxd4aHxm+YJ6JzWG5A2st\/KB2dWuo48d8qiQEZ3HMWZJS1ri8yEnq6JKbV0RQ2Y+KRZXaI7Xu2OacAG+wQf2UVPXNPx9Droa2CYa8W3zA5NfVm9savo5smCdoCA2kiDB0d0BufiPOuEyakpel0uQ3ZbSbT2mw3FMiJvMVuM0vYdyoZxU2BlUmJ7+znQVFpoO1hSMzEsqaIYltZVjBtTWowc1V5K831Hw\/Melp5EHFY9aOQ4ZnwsEuB\/ny0Pj3UbRjgIG4oqOZjNH2m5jeMTQkxMthfJ6GSlGEmnvPdD5GdoebT3\/wjQjc5iu2r2kHG3vyZrt0MqlGvv3i+gdgnlxm2Ly96WHJXRK\/Z5mPhvkZNjc+xKPn4tu9zPL0KfHeo=\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>B\u00e0i h\u01b0\u1edbng d\u1eabn 2: Ph\u00e2n c\u1ea5p t\u1ed5 ch\u1ee9c<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 ph\u00e2n c\u1ea5p t\u1ed5 ch\u1ee9c hi\u1ec3n th\u1ecb CEO John Smith, ban l\u00e3nh \u0111\u1ea1o, Ph\u00f3 ch\u1ee7 t\u1ecbch ph\u1ee5 tr\u00e1ch S\u1ea3n ph\u1ea9m v\u00e0 Ph\u00f3 ch\u1ee7 t\u1ecbch ph\u1ee5 tr\u00e1ch K\u1ef9 thu\u1eadt d\u1eabn d\u1eaft c\u00e1c \u0111\u1ed9i ng\u0169 Backend, Frontend, QA v\u00e0 DevOps.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8d92f09cf.png\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVtFu2jAUfZ+0f7Cyl02iK4UCrSomtbRomoZIV9Q9tFPlxDeJVWMjO9B2U\/99duMkTkg2MBIK1znH99x7bENoLPEqQXMZTxIsU\/Tn\/Tukh8T8kVA5XlycZQEuCKA7leAVjAPx3EEqfWEw9qRYcwKkE1HGgHgdFAmecrzUU1+BbSClIfZ+WRIgsSZpeqODsJTiSdHfMO5+HuWA7PvwEF09Q7hO6QYQgw2wLD65mqM7hgNgY08\/3\/NvIuHoZknTxCSiMwoFE3LsfTg6HQ1Jz2Zng08JTcHbWmly8L1cQa2DrD4hW6sU5APoPPIamWFXL9NbAF56Z+ULWZkIVgkQJ5wndtoNcXTqAsqnycKRt9DybrDECTIileA1hcc9PIgGhZw3\/NTBTzV+RsMEA0MXutK74OcOfq7xV0vKXtAl3lC1A9p30L5GGxxBPyn7b\/Kv9ebzmHIASXnc1hYeN3WlxG23JDNsQ0ugH\/Ui0tySW\/9Bkxa6bn03t5qo4XEwiIaVmjg5NCh4SLV3lKvD0WJ8pdykHHOJNK0oqS5lxgUOH4GTIvH8t2G95x+PegisDvWpJiMICERBRYYZU6l3kktZBCznyd6Ul7CZr1RBaH9ausHedNfnBZV+tDTDvWhem\/3oS0HWYdrixVU22+BHi9vDi1EU9aHb6kVL6PoxX6OqLYqC0TGpaPNnRwUu55lhjmOQ99xnOI2EXG7RhOFJt0bTa6eZiYAy2IWk305yzjF70ZeE+jdPvUk\/QGuggquErlR5Xxx8MefqWTUwrQfm9YA\/r9wT5mjW4ew4sDP2bNBhu7u24vkW2ZrIrL4Vvj6vLurni9oalYC8aHpa97Ul3muJ9+tX4OXbgYKY3idK35jS2FF3R8i3gmavGfuUUvU\/A+co6hT+HQ3Mp+iRMYtTh51R\/f2Wev0L4Dlwzw==\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVtFu2jAUfZ+0f7Cyl02iK4UCrSomtbRomoZIV9Q9tFPlxDeJVWMjO9B2U\/99duMkTkg2MBIK1znH99x7bENoLPEqQXMZTxIsU\/Tn\/Tukh8T8kVA5XlycZQEuCKA7leAVjAPx3EEqfWEw9qRYcwKkE1HGgHgdFAmecrzUU1+BbSClIfZ+WRIgsSZpeqODsJTiSdHfMO5+HuWA7PvwEF09Q7hO6QYQgw2wLD65mqM7hgNgY08\/3\/NvIuHoZknTxCSiMwoFE3LsfTg6HQ1Jz2Zng08JTcHbWmly8L1cQa2DrD4hW6sU5APoPPIamWFXL9NbAF56Z+ULWZkIVgkQJ5wndtoNcXTqAsqnycKRt9DybrDECTIileA1hcc9PIgGhZw3\/NTBTzV+RsMEA0MXutK74OcOfq7xV0vKXtAl3lC1A9p30L5GGxxBPyn7b\/Kv9ebzmHIASXnc1hYeN3WlxG23JDNsQ0ugH\/Ui0tySW\/9Bkxa6bn03t5qo4XEwiIaVmjg5NCh4SLV3lKvD0WJ8pdykHHOJNK0oqS5lxgUOH4GTIvH8t2G95x+PegisDvWpJiMICERBRYYZU6l3kktZBCznyd6Ul7CZr1RBaH9ausHedNfnBZV+tDTDvWhem\/3oS0HWYdrixVU22+BHi9vDi1EU9aHb6kVL6PoxX6OqLYqC0TGpaPNnRwUu55lhjmOQ99xnOI2EXG7RhOFJt0bTa6eZiYAy2IWk305yzjF70ZeE+jdPvUk\/QGuggquErlR5Xxx8MefqWTUwrQfm9YA\/r9wT5mjW4ew4sDP2bNBhu7u24vkW2ZrIrL4Vvj6vLurni9oalYC8aHpa97Ul3muJ9+tX4OXbgYKY3idK35jS2FF3R8i3gmavGfuUUvU\/A+co6hT+HQ3Mp+iRMYtTh51R\/f2Wev0L4Dlwzw==\" 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 DOT 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\">DOT<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVs9P2zAUviPtf7C6SyeVUVraglAnQaGbtrGkAm0HNCEndmqL1OkSp8AQh2kHrnDkMGkM7cABCWmntdqpjP8j\/8mcX8VJw9q6Upt89vve+957toto24ZdAhS73SDQ5uD4yRwQw4ZsH1G7vrO+GgLMQhjsOgR2cV2zDgvA4Ucmrudsy2UIo4JBTROjXAEYFuMMdsTUK2z2MKc6zH2MSDBqC5KsFQUAbds6cOhnXC8+r8UGwdfCAmh4\/Z9dcHdOvcEXF5Dhd0aCqcamAnZNqGGznhPP7LVFGNjuUE78SERIumVadj33dHGlVkWlKLwIPCCUYxFbhqfG\/Fvcw2YAOq4W5kg3XYdjew8fYh0cB3P+iNzfnXmDCwpY++91MtDc6mhpmDMEHYLRAxrHuFLUobEiLR89NHYkmTsK24Y2JMAX61gspXSpBCtGJZYVWDcl66bCtqhOIDbBukj4FNaKZK0obLNDzSOwAXvUmWyrSraqwnwrBD5Qc1LYJ4mavPEGvwEnrte\/4Y+UhLXHKyKbjRUh7NfxIuCyUTJQVhHeq3ubwk2sRyXDX+AlHV52RLm9wbmeCDOlrrqkVYyqnJqHcDK07HEMO46kKKPPhPuOFKbUXhbnsrKEN3+sQ30fMzRSEjFGMMsvlsC+L8W5v32W0qFpCBuarMMfTVtsqgzGGGf55RkZN3BP6TppvhBl+cqMbK21NFNrjeWrM7CcZHTltte\/YqBLvP51J7sru7aFXJ2Pd6ZsOnVnGoZRxsVHOlONXD3enQmfSb2GodWWkKxX3VocUbXcwNIc\/klwsHfiiGOA+1B7jFDXl4tJwtJEwg0axHoxFV15Ip1IwQ8R3\/BGJ\/\/lS1Z1SySLgk8uZIB4g9PRLTP\/wj+FVxPvzdS7knpXFelu8c9wAYanSIhHJ4pAo72XhuMNlMbDjZBGW2uyOzV2F7XGaHXcKmJWlDkbLmXD5eRdeXd2f+sNvgnvbHjNg+JFP1\/FOeh\/E3EPngaZvOqKUlzqc3F3PYgW\/yqkc6sw6vdaxf\/EVfIbSMrItEblmRyd\/AMlytwC\" \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 DOT in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-dot\"><code class=\"language-dot\" data-language=\"dot\" class=\"language-dot\">digraph OrgChart {\r\n    rankdir=TB;\r\n    node [shape=box, style=\"rounded,filled\", fontname=\"Helvetica\"];\r\n    edge [fontname=\"Helvetica\", arrowsize=0.7];\r\n    \n    \/\/ C\u1ea5p \u0111i\u1ec1u h\u00e0nh\n    CEO [label=\"CEOnJohn Smith\", fillcolor=\"#1976d2\", fontcolor=\"white\"];\n    \n    \/\/ C\u1ea5p C-Level\n    subgraph cluster_exec {\n        label=\"\u0110\u1ed9i ng\u0169 \u0111i\u1ec1u h\u00e0nh\";\n        style=dashed;\n        color=\"#90caf9\";\n        \n        CTO [label=\"CTOnSarah Johnson\", fillcolor=\"#42a5f5\"];\n        CFO [label=\"CFOnMichael Brown\", fillcolor=\"#42a5f5\"];\n        COO [label=\"COOnEmily Davis\", fillcolor=\"#42a5f5\"];\n        CPO [label=\"CPOnDavid Wilson\", fillcolor=\"#42a5f5\"];\n    }\n    \n    \/\/ K\u1ef9 thu\u1eadt\n    subgraph cluster_eng {\n        label=\"K\u1ef9 thu\u1eadt\";\n        style=filled;\n        color=\"#e3f2fd\";\n        \n        VP_Eng [label=\"Ph\u00f3 Gi\u00e1m \u0111\u1ed1c K\u1ef9 thu\u1eadt\", fillcolor=\"#64b5f6\"];\n        \n        subgraph cluster_eng_teams {\n            label=\"\u0110\u1ed9i nh\u00f3m\";\n            style=dotted;\n            \n            Backend [label=\"\u0110\u1ed9i Backendn(12 k\u1ef9 s\u01b0)\", fillcolor=\"#bbdefb\"];\n            Frontend [label=\"\u0110\u1ed9i Frontendn(8 k\u1ef9 s\u01b0)\", fillcolor=\"#bbdefb\"];\n            DevOps [label=\"\u0110\u1ed9i DevOpsn(5 k\u1ef9 s\u01b0)\", fillcolor=\"#bbdefb\"];\n            QA [label=\"\u0110\u1ed9i QAn(6 k\u1ef9 s\u01b0)\", fillcolor=\"#bbdefb\"];\n        }\n    }\n    \n    \/\/ S\u1ea3n ph\u1ea9m\n    subgraph cluster_product {\n        label=\"S\u1ea3n ph\u1ea9m\";\n        style=filled;\n        color=\"#fff3e0\";\n        \n        VP_Product [label=\"Ph\u00f3 Gi\u00e1m \u0111\u1ed1c S\u1ea3n ph\u1ea9m\", fillcolor=\"#ffb74d\"];\n        PM1 [label=\"Qu\u1ea3n l\u00fd S\u1ea3n ph\u1ea9mnN\u1ec1n t\u1ea3ng\", fillcolor=\"#ffcc80\"];\n        PM2 [label=\"Qu\u1ea3n l\u00fd S\u1ea3n ph\u1ea9mnDi \u0111\u1ed9ng\", fillcolor=\"#ffcc80\"];\n        PM3 [label=\"Qu\u1ea3n l\u00fd S\u1ea3n ph\u1ea9mnPh\u00e2n t\u00edch\", fillcolor=\"#ffcc80\"];\n    }\n    \n    \/\/ M\u1ed1i quan h\u1ec7\n    CEO -&gt; CTO;\n    CEO -&gt; CFO;\n    CEO -&gt; COO;\n    CEO -&gt; CPO;\n    \n    CTO -&gt; VP_Eng;\n    VP_Eng -&gt; Backend;\n    VP_Eng -&gt; Frontend;\n    VP_Eng -&gt; DevOps;\n    VP_Eng -&gt; QA;\n    \n    CPO -&gt; VP_Product;\n    VP_Product -&gt; PM1;\n    VP_Product -&gt; PM2;\n    VP_Product -&gt; PM3;\n    \n    \/\/ \u0110\u01b0\u1eddng n\u00e9t \u0111\u1ee9t \u0111\u1ec3 th\u1ec3 hi\u1ec7n h\u1ee3p t\u00e1c\n    PM1 -&gt; Backend [style=dotted, color=\"#757575\"];\n    PM2 -&gt; Frontend [style=dotted, color=\"#757575\"];\n    PM3 -&gt; Backend [style=dotted, color=\"#757575\"];\n}<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVs9P2zAUviPtf7C6SyeVUVraglAnQaGbtrGkAm0HNCEndmqL1OkSp8AQh2kHrnDkMGkM7cABCWmntdqpjP8j\/8mcX8VJw9q6Upt89vve+957toto24ZdAhS73SDQ5uD4yRwQw4ZsH1G7vrO+GgLMQhjsOgR2cV2zDgvA4Ucmrudsy2UIo4JBTROjXAEYFuMMdsTUK2z2MKc6zH2MSDBqC5KsFQUAbds6cOhnXC8+r8UGwdfCAmh4\/Z9dcHdOvcEXF5Dhd0aCqcamAnZNqGGznhPP7LVFGNjuUE78SERIumVadj33dHGlVkWlKLwIPCCUYxFbhqfG\/Fvcw2YAOq4W5kg3XYdjew8fYh0cB3P+iNzfnXmDCwpY++91MtDc6mhpmDMEHYLRAxrHuFLUobEiLR89NHYkmTsK24Y2JMAX61gspXSpBCtGJZYVWDcl66bCtqhOIDbBukj4FNaKZK0obLNDzSOwAXvUmWyrSraqwnwrBD5Qc1LYJ4mavPEGvwEnrte\/4Y+UhLXHKyKbjRUh7NfxIuCyUTJQVhHeq3ubwk2sRyXDX+AlHV52RLm9wbmeCDOlrrqkVYyqnJqHcDK07HEMO46kKKPPhPuOFKbUXhbnsrKEN3+sQ30fMzRSEjFGMMsvlsC+L8W5v32W0qFpCBuarMMfTVtsqgzGGGf55RkZN3BP6TppvhBl+cqMbK21NFNrjeWrM7CcZHTltte\/YqBLvP51J7sru7aFXJ2Pd6ZsOnVnGoZRxsVHOlONXD3enQmfSb2GodWWkKxX3VocUbXcwNIc\/klwsHfiiGOA+1B7jFDXl4tJwtJEwg0axHoxFV15Ip1IwQ8R3\/BGJ\/\/lS1Z1SySLgk8uZIB4g9PRLTP\/wj+FVxPvzdS7knpXFelu8c9wAYanSIhHJ4pAo72XhuMNlMbDjZBGW2uyOzV2F7XGaHXcKmJWlDkbLmXD5eRdeXd2f+sNvgnvbHjNg+JFP1\/FOeh\/E3EPngaZvOqKUlzqc3F3PYgW\/yqkc6sw6vdaxf\/EVfIbSMrItEblmRyd\/AMlytwC\" \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 DOT 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\/#graphviz:eNqVVtFu2jAUfZ+0f7Cyl02iK4UCrSomtbRomoZIV9Q9tFPlxDeJVWMjO9B2U\/99duMkTkg2MBIK1znH99x7bENoLPEqQXMZTxIsU\/Tn\/Tukh8T8kVA5XlycZQEuCKA7leAVjAPx3EEqfWEw9qRYcwKkE1HGgHgdFAmecrzUU1+BbSClIfZ+WRIgsSZpeqODsJTiSdHfMO5+HuWA7PvwEF09Q7hO6QYQgw2wLD65mqM7hgNgY08\/3\/NvIuHoZknTxCSiMwoFE3LsfTg6HQ1Jz2Zng08JTcHbWmly8L1cQa2DrD4hW6sU5APoPPIamWFXL9NbAF56Z+ULWZkIVgkQJ5wndtoNcXTqAsqnycKRt9DybrDECTIileA1hcc9PIgGhZw3\/NTBTzV+RsMEA0MXutK74OcOfq7xV0vKXtAl3lC1A9p30L5GGxxBPyn7b\/Kv9ebzmHIASXnc1hYeN3WlxG23JDNsQ0ugH\/Ui0tySW\/9Bkxa6bn03t5qo4XEwiIaVmjg5NCh4SLV3lKvD0WJ8pdykHHOJNK0oqS5lxgUOH4GTIvH8t2G95x+PegisDvWpJiMICERBRYYZU6l3kktZBCznyd6Ul7CZr1RBaH9ausHedNfnBZV+tDTDvWhem\/3oS0HWYdrixVU22+BHi9vDi1EU9aHb6kVL6PoxX6OqLYqC0TGpaPNnRwUu55lhjmOQ99xnOI2EXG7RhOFJt0bTa6eZiYAy2IWk305yzjF70ZeE+jdPvUk\/QGuggquErlR5Xxx8MefqWTUwrQfm9YA\/r9wT5mjW4ew4sDP2bNBhu7u24vkW2ZrIrL4Vvj6vLurni9oalYC8aHpa97Ul3muJ9+tX4OXbgYKY3idK35jS2FF3R8i3gmavGfuUUvU\/A+co6hT+HQ3Mp+iRMYtTh51R\/f2Wev0L4Dlwzw==\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqVVtFu2jAUfZ+0f7Cyl02iK4UCrSomtbRomoZIV9Q9tFPlxDeJVWMjO9B2U\/99duMkTkg2MBIK1znH99x7bENoLPEqQXMZTxIsU\/Tn\/Tukh8T8kVA5XlycZQEuCKA7leAVjAPx3EEqfWEw9qRYcwKkE1HGgHgdFAmecrzUU1+BbSClIfZ+WRIgsSZpeqODsJTiSdHfMO5+HuWA7PvwEF09Q7hO6QYQgw2wLD65mqM7hgNgY08\/3\/NvIuHoZknTxCSiMwoFE3LsfTg6HQ1Jz2Zng08JTcHbWmly8L1cQa2DrD4hW6sU5APoPPIamWFXL9NbAF56Z+ULWZkIVgkQJ5wndtoNcXTqAsqnycKRt9DybrDECTIileA1hcc9PIgGhZw3\/NTBTzV+RsMEA0MXutK74OcOfq7xV0vKXtAl3lC1A9p30L5GGxxBPyn7b\/Kv9ebzmHIASXnc1hYeN3WlxG23JDNsQ0ugH\/Ui0tySW\/9Bkxa6bn03t5qo4XEwiIaVmjg5NCh4SLV3lKvD0WJ8pdykHHOJNK0oqS5lxgUOH4GTIvH8t2G95x+PegisDvWpJiMICERBRYYZU6l3kktZBCznyd6Ul7CZr1RBaH9ausHedNfnBZV+tDTDvWhem\/3oS0HWYdrixVU22+BHi9vDi1EU9aHb6kVL6PoxX6OqLYqC0TGpaPNnRwUu55lhjmOQ99xnOI2EXG7RhOFJt0bTa6eZiYAy2IWk305yzjF70ZeE+jdPvUk\/QGuggquErlR5Xxx8MefqWTUwrQfm9YA\/r9wT5mjW4ew4sDP2bNBhu7u24vkW2ZrIrL4Vvj6vLurni9oalYC8aHpa97Ul3muJ9+tX4OXbgYKY3idK35jS2FF3R8i3gmavGfuUUvU\/A+co6hT+HQ3Mp+iRMYtTh51R\/f2Wev0L4Dlwzw==\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>B\u00e0i h\u01b0\u1edbng d\u1eabn 3: S\u01a1 \u0111\u1ed3 lu\u1ed3ng d\u1eef li\u1ec7u<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 lu\u1ed3ng d\u1eef li\u1ec7u minh h\u1ecda quy tr\u00ecnh x\u1eed l\u00fd \u0111\u01a1n h\u00e0ng k\u1ebft n\u1ed1i c\u00e1c h\u1ec7 th\u1ed1ng kh\u00e1ch h\u00e0ng, thanh to\u00e1n, kho h\u00e0ng v\u00e0 h\u00f3a \u0111\u01a1n.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8da8555c4.png\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNp9VE2P0zAQvSPxH6xwZGEp\/RAVCtJuA6uVVlBtgcvCwbUnrVXXDrbb3YL479hx4zhOSw+V4nkzfvPmeShbKVytUYEN\/sTlI\/rz\/BmyP4XFhjKV392\/9wdCUtBQ5YPXb6IT9KDXuIIcOGeVhgukzYFDnpWMc6DZBSqlMAJv7dGVYphnP4\/JQFc2OY16vGa\/IZ82SP9\/eYk+PhlQAnMEwjDDQMc03IVEcqny7EVZErIktpjntpRPTa3ZThu5BYUeOF4Cz7PmIPD6DoLKNu4\/Q\/TaqhJi7oOJFVoctIFt1uM7V5KA1ud5kjHBMA08CVOEQ1NmPggXzTkmgL4oGvGcv23D\/h40x4etlaaFDAPkW0WxAXQr9hYg1aHFjALmBgSoI0oyAi1mHDCLNatSIpM2asVCn6VhJSPYMCn6mjibWY9I9R9V3sGETOPpDWlTp2hFqVloVFyHS4pWktBoJz7sjb0THsXpTgF0D0Qqqs+0UdrnohNfvfoQD67maKv82oGO5jJwsKiVhdMjldWDeiPsGdYDYzt4G6ACDGY8JW+BFt7xcZOQ8qxBp2vPpCiZ2naH7EtHrmvQix1xBk2ZDOsO2+IFEAVYA7J6kE1sY1d2lKh6pGCXTFJ2VJdt4Qu8P+HpGhV5txm5m+xJoskrqNzL70127JDJCgnoO\/edYCMGXxUm9T65FaVMKUwcuLe9OkrUw\/ghXqKm0Cnb6jVQxJkAbTetQpa+Cou0GCR93oDxrgxeavY7rQtFD6\/r+9kayAZd7W0OXjLOzOFc5jDJdFeGNmsh+ol\/\/wGp8e+9\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNp9VE2P0zAQvSPxH6xwZGEp\/RAVCtJuA6uVVlBtgcvCwbUnrVXXDrbb3YL479hx4zhOSw+V4nkzfvPmeShbKVytUYEN\/sTlI\/rz\/BmyP4XFhjKV392\/9wdCUtBQ5YPXb6IT9KDXuIIcOGeVhgukzYFDnpWMc6DZBSqlMAJv7dGVYphnP4\/JQFc2OY16vGa\/IZ82SP9\/eYk+PhlQAnMEwjDDQMc03IVEcqny7EVZErIktpjntpRPTa3ZThu5BYUeOF4Cz7PmIPD6DoLKNu4\/Q\/TaqhJi7oOJFVoctIFt1uM7V5KA1ud5kjHBMA08CVOEQ1NmPggXzTkmgL4oGvGcv23D\/h40x4etlaaFDAPkW0WxAXQr9hYg1aHFjALmBgSoI0oyAi1mHDCLNatSIpM2asVCn6VhJSPYMCn6mjibWY9I9R9V3sGETOPpDWlTp2hFqVloVFyHS4pWktBoJz7sjb0THsXpTgF0D0Qqqs+0UdrnohNfvfoQD67maKv82oGO5jJwsKiVhdMjldWDeiPsGdYDYzt4G6ACDGY8JW+BFt7xcZOQ8qxBp2vPpCiZ2naH7EtHrmvQix1xBk2ZDOsO2+IFEAVYA7J6kE1sY1d2lKh6pGCXTFJ2VJdt4Qu8P+HpGhV5txm5m+xJoskrqNzL70127JDJCgnoO\/edYCMGXxUm9T65FaVMKUwcuLe9OkrUw\/ghXqKm0Cnb6jVQxJkAbTetQpa+Cou0GCR93oDxrgxeavY7rQtFD6\/r+9kayAZd7W0OXjLOzOFc5jDJdFeGNmsh+ol\/\/wGp8e+9\" 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 DOT 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\">DOT<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNp9VUFrE0EUvgv+hyEerdY2SbHICpqgQoMUCVIpHiazk92h25m4O9FW8dSD15aexcZSxGKxoiJkEQ9T+j\/mn\/hmN9mdzW6aQ4bd+d5733zzvbcu80I88FEbS\/woEG\/Qu+vXEPxCzLdcFjqdZ\/eSZy5cGtGBs3T7Tv4CbUY+HlCHBgEbRHQBRXI3oE6tz4KAurUF1BdccrwNrx6EDAe1l2ksdT2Ind1M4RF7S53VCTD5W1xELTUiSPo6\/pEue6inTjninlBHzKJjChMRiNCp3ej3CekRyJpy7ImdSdLWMJJim4ZoM8A9Gji1NR\/S+8hXR9ybUnxOuStyyFPYRGTIPUT0+GQwRT0ElTLMEx1\/SNgdAIx76jMvpiwc5tVwF8lQfeP+HPqkSTBdzegTFpKATjKtL2VFL\/b1+I8sFlpfzrY3dHyGAvUXeGHuIynUiGewegZr6fHZAHEfFomkjg852vJFBmxkwK4ejwRU+4nRxcGllauZQR4zLGb4rOSbwIcBGfULNOqpkZgVZ80XyNXxdxQwkHM4T5y7dIWs2ndbdyeJ2rk2rcsRinT8yU6Y0i7yay9fHVISpF2\/OmCrwlDthm2UQxRBYFnHqQydoanplaTIvHvrvu2CF+p0aJz5xZyvwhBLBm8p07k8r1RiApxjjKpjpRGW41o+3C\/T43+yynNTf0JMoXesA1REJdBimQ3TRAkvXuntpITl8G6OMfY7ggdiTFgkVk+Ov2x5WY+Ptys6IgFafXGxn2kJuqpjtJPzK5ZoJCUaxauoaKgEZ3VO2\/LXHN9MWDWrVPXKXdk06PKcO+ZzwRadbtrCkhk5KfSs+s2KZFZMRGnW2vdmGZDfRN3KNNALoO25jj+aoaq+SmPwGBYCg4Ikn4UQRulrmMp82v9FETqwtQvwzJa276efLBdHPnXzeVBsrzWQfQ9sEGIwATjCtOXJ3Oj6THRKQOaCFfqolOP9f454sbE=\" \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 DOT in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-dot\"><code class=\"language-dot\" data-language=\"dot\" class=\"language-dot\">digraph DataFlow {\r\n    rankdir=LR;\n    nodesep=1.0;\n    node [shape=ellipse, style=\"filled\", fontname=\"Arial\"];\n    edge [fontname=\"Arial\", fontsize=9];\n    \n    \/\/ C\u00e1c th\u1ef1c th\u1ec3 b\u00ean ngo\u00e0i\n    node [fillcolor=\"#ffccbc\", shape=box];\n    Customer [label=\"Kh\u00e1ch h\u00e0ng\"];\n    Vendor [label=\"Nh\u00e0 cung c\u1ea5p\"];\n    Bank [label=\"H\u1ec7 th\u1ed1ng ng\u00e2n h\u00e0ng\"];\n    \n    \/\/ C\u00e1c quy tr\u00ecnh\n    node [fillcolor=\"#c5cae9\", shape=circle];\n    P1 [label=\"\u0110\u1eb7t h\u00e0ng\"];\n    P2 [label=\"X\u1eed l\u00fd thanh to\u00e1n\"];\n    P3 [label=\"C\u1eadp nh\u1eadt t\u1ed3n kho\"];\n    P4 [label=\"T\u1ea1o h\u00f3a \u0111\u01a1n\"];\n    P5 [label=\"Giao h\u00e0ng\"];\n    P6 [label=\"G\u1eedi th\u00f4ng b\u00e1o\"];\n    \n    \/\/ Kho d\u1eef li\u1ec7u\n    node [fillcolor=\"#c8e6c9\", shape=box3d];\n    D1 [label=\"C\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01a1n h\u00e0ng\"];\n    D2 [label=\"C\u01a1 s\u1edf d\u1eef li\u1ec7u t\u1ed3n kho\"];\n    D3 [label=\"C\u01a1 s\u1edf d\u1eef li\u1ec7u kh\u00e1ch h\u00e0ng\"];\n    D4 [label=\"H\u1ed3 s\u01a1 h\u00f3a \u0111\u01a1n\"];\n    \n    \/\/ Lu\u1ed3ng d\u1eef li\u1ec7u\n    Customer -&gt; P1 [label=\"Y\u00eau c\u1ea7u \u0111\u1eb7t h\u00e0ng\"];\n    P1 -&gt; D1 [label=\"L\u01b0u \u0111\u01a1n h\u00e0ng\"];\n    P1 -&gt; D3 [label=\"C\u1eadp nh\u1eadt kh\u00e1ch h\u00e0ng\"];\n    P1 -&gt; P2 [label=\"Chi ti\u1ebft thanh to\u00e1n\"];\n    \n    P2 -&gt; Bank [label=\"Y\u00eau c\u1ea7u thanh to\u00e1n\"];\n    Bank -&gt; P2 [label=\"X\u00e1c nh\u1eadn thanh to\u00e1n\"];\n    P2 -&gt; P3 [label=\"Thanh to\u00e1n th\u00e0nh c\u00f4ng\"];\n    \n    P3 -&gt; D2 [label=\"Gi\u1ea3m t\u1ed3n kho\"];\n    P3 -&gt; P4 [label=\"\u0110\u01a1n h\u00e0ng \u0111\u00e3 x\u00e1c nh\u1eadn\"];\n    \n    P4 -&gt; D4 [label=\"L\u01b0u h\u00f3a \u0111\u01a1n\"];\n    P4 -&gt; P6 [label=\"D\u1eef li\u1ec7u h\u00f3a \u0111\u01a1n\"];\n    \n    P3 -&gt; P5 [label=\"Y\u00eau c\u1ea7u giao h\u00e0ng\"];\n    P5 -&gt; Vendor [label=\"Nh\u00e3n giao h\u00e0ng\"];\n    P5 -&gt; P6 [label=\"Th\u00f4ng tin theo d\u00f5i\"];\n    \n    P6 -&gt; Customer [label=\"X\u00e1c nh\u1eadn \u0111\u01a1n h\u00e0ngn+ Theo d\u00f5i\"];\n    \n    \/\/ \u0110\u01b0\u1eddng n\u00e9t \u0111\u1ee9t cho c\u00e1c truy v\u1ea5n\n    D1 -&gt; P5 [label=\"L\u1ea5y chi ti\u1ebft \u0111\u01a1n h\u00e0ng\", style=dashed];\n    D2 -&gt; P1 [label=\"Ki\u1ec3m tra kh\u1ea3 d\u1ee5ng\", style=dashed];\n    D3 -&gt; P1 [label=\"L\u1ea5y th\u00f4ng tin kh\u00e1ch h\u00e0ng\", style=dashed];\n}<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNp9VUFrE0EUvgv+hyEerdY2SbHICpqgQoMUCVIpHiazk92h25m4O9FW8dSD15aexcZSxGKxoiJkEQ9T+j\/mn\/hmN9mdzW6aQ4bd+d5733zzvbcu80I88FEbS\/woEG\/Qu+vXEPxCzLdcFjqdZ\/eSZy5cGtGBs3T7Tv4CbUY+HlCHBgEbRHQBRXI3oE6tz4KAurUF1BdccrwNrx6EDAe1l2ksdT2Ind1M4RF7S53VCTD5W1xELTUiSPo6\/pEue6inTjninlBHzKJjChMRiNCp3ej3CekRyJpy7ImdSdLWMJJim4ZoM8A9Gji1NR\/S+8hXR9ybUnxOuStyyFPYRGTIPUT0+GQwRT0ElTLMEx1\/SNgdAIx76jMvpiwc5tVwF8lQfeP+HPqkSTBdzegTFpKATjKtL2VFL\/b1+I8sFlpfzrY3dHyGAvUXeGHuIynUiGewegZr6fHZAHEfFomkjg852vJFBmxkwK4ejwRU+4nRxcGllauZQR4zLGb4rOSbwIcBGfULNOqpkZgVZ80XyNXxdxQwkHM4T5y7dIWs2ndbdyeJ2rk2rcsRinT8yU6Y0i7yay9fHVISpF2\/OmCrwlDthm2UQxRBYFnHqQydoanplaTIvHvrvu2CF+p0aJz5xZyvwhBLBm8p07k8r1RiApxjjKpjpRGW41o+3C\/T43+yynNTf0JMoXesA1REJdBimQ3TRAkvXuntpITl8G6OMfY7ggdiTFgkVk+Ov2x5WY+Ptys6IgFafXGxn2kJuqpjtJPzK5ZoJCUaxauoaKgEZ3VO2\/LXHN9MWDWrVPXKXdk06PKcO+ZzwRadbtrCkhk5KfSs+s2KZFZMRGnW2vdmGZDfRN3KNNALoO25jj+aoaq+SmPwGBYCg4Ikn4UQRulrmMp82v9FETqwtQvwzJa276efLBdHPnXzeVBsrzWQfQ9sEGIwATjCtOXJ3Oj6THRKQOaCFfqolOP9f454sbE=\" \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 DOT 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\/#graphviz:eNp9VE2P0zAQvSPxH6xwZGEp\/RAVCtJuA6uVVlBtgcvCwbUnrVXXDrbb3YL479hx4zhOSw+V4nkzfvPmeShbKVytUYEN\/sTlI\/rz\/BmyP4XFhjKV392\/9wdCUtBQ5YPXb6IT9KDXuIIcOGeVhgukzYFDnpWMc6DZBSqlMAJv7dGVYphnP4\/JQFc2OY16vGa\/IZ82SP9\/eYk+PhlQAnMEwjDDQMc03IVEcqny7EVZErIktpjntpRPTa3ZThu5BYUeOF4Cz7PmIPD6DoLKNu4\/Q\/TaqhJi7oOJFVoctIFt1uM7V5KA1ud5kjHBMA08CVOEQ1NmPggXzTkmgL4oGvGcv23D\/h40x4etlaaFDAPkW0WxAXQr9hYg1aHFjALmBgSoI0oyAi1mHDCLNatSIpM2asVCn6VhJSPYMCn6mjibWY9I9R9V3sGETOPpDWlTp2hFqVloVFyHS4pWktBoJz7sjb0THsXpTgF0D0Qqqs+0UdrnohNfvfoQD67maKv82oGO5jJwsKiVhdMjldWDeiPsGdYDYzt4G6ACDGY8JW+BFt7xcZOQ8qxBp2vPpCiZ2naH7EtHrmvQix1xBk2ZDOsO2+IFEAVYA7J6kE1sY1d2lKh6pGCXTFJ2VJdt4Qu8P+HpGhV5txm5m+xJoskrqNzL70127JDJCgnoO\/edYCMGXxUm9T65FaVMKUwcuLe9OkrUw\/ghXqKm0Cnb6jVQxJkAbTetQpa+Cou0GCR93oDxrgxeavY7rQtFD6\/r+9kayAZd7W0OXjLOzOFc5jDJdFeGNmsh+ol\/\/wGp8e+9\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNp9VE2P0zAQvSPxH6xwZGEp\/RAVCtJuA6uVVlBtgcvCwbUnrVXXDrbb3YL479hx4zhOSw+V4nkzfvPmeShbKVytUYEN\/sTlI\/rz\/BmyP4XFhjKV392\/9wdCUtBQ5YPXb6IT9KDXuIIcOGeVhgukzYFDnpWMc6DZBSqlMAJv7dGVYphnP4\/JQFc2OY16vGa\/IZ82SP9\/eYk+PhlQAnMEwjDDQMc03IVEcqny7EVZErIktpjntpRPTa3ZThu5BYUeOF4Cz7PmIPD6DoLKNu4\/Q\/TaqhJi7oOJFVoctIFt1uM7V5KA1ud5kjHBMA08CVOEQ1NmPggXzTkmgL4oGvGcv23D\/h40x4etlaaFDAPkW0WxAXQr9hYg1aHFjALmBgSoI0oyAi1mHDCLNatSIpM2asVCn6VhJSPYMCn6mjibWY9I9R9V3sGETOPpDWlTp2hFqVloVFyHS4pWktBoJz7sjb0THsXpTgF0D0Qqqs+0UdrnohNfvfoQD67maKv82oGO5jJwsKiVhdMjldWDeiPsGdYDYzt4G6ACDGY8JW+BFt7xcZOQ8qxBp2vPpCiZ2naH7EtHrmvQix1xBk2ZDOsO2+IFEAVYA7J6kE1sY1d2lKh6pGCXTFJ2VJdt4Qu8P+HpGhV5txm5m+xJoskrqNzL70127JDJCgnoO\/edYCMGXxUm9T65FaVMKUwcuLe9OkrUw\/ghXqKm0Cnb6jVQxJkAbTetQpa+Cou0GCR93oDxrgxeavY7rQtFD6\/r+9kayAZd7W0OXjLOzOFc5jDJdFeGNmsh+ol\/\/wGp8e+9\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr\/>\n<h2>6. C\u00e1c m\u1eabu tri\u1ec3n khai th\u1ef1c t\u1ebf {#implementation-patterns}<\/h2>\n<h3>M\u1eabu 1: T\u00e0i li\u1ec7u v\u1ec1 quy tr\u00ecnh CI\/CD<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5 (Mermaid):<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 Mermaid minh h\u1ecda quy tr\u00ecnh lu\u1ed3ng CI\/CD t\u1eeb ki\u1ec3m so\u00e1t ngu\u1ed3n m\u00e3 th\u00f4ng qua t\u00edch h\u1ee3p li\u00ean t\u1ee5c, tri\u1ec3n khai v\u00e0 gi\u00e1m s\u00e1t.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8deb63fe2.png\"\/><\/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:eNqFU9FKKzEQfb\/gP4T6qiBWUfogVCsqKJTW+xR8SJN0DcakJhNh\/\/7OZFbJeoVm2WTmnElmcma3S2r3Kh5XB38Ejlw2XQXWsSRt5YRXcRMDpOgnLxxG486BxPe+bMTK7mJ2EFPf8MuVXBbvkfwoNsPA2GDY+JHv5kFOKIkLJZYsHgJYJMDF0OZ8dAEkTS50DfyM58u\/wUG1csNcF+eNrLOYJ3BbpUf8Wqsg11aX5KCv3r46F6M6F3bnY\/9uA7RlLuynZEZAJK\/NCKqzDUv++Da3p7cS3\/\/uskzRNBvJLZoU2lPyUwzUGzkZDMw20jR2WeIk5l2XbKeaE2k8WUhOZzmsYqHy6yaqZJqYubcJsqwLni7WfQb7\/ntZ+MmI4+Mr\/DzYX66qS01lgKwK0f0ZIqtCtZGMcU8JpK4xRlaFUHJG0OAYUn0IIrOCKDJDpHatCSUdqkKL60J1fkCDEox+yUIEyzDqAfTe1itvnfezw+0JPUcZ\/6U3OzucTqdtXM3AgebMGqO+A08v1cXZ+ZGOPqbZxiv91u7jvF8pLs1Fs9Po6fl45z\/t1RpT\" 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\">\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:eNqFU9FKKzEQfb\/gP4T6qiBWUfogVCsqKJTW+xR8SJN0DcakJhNh\/\/7OZFbJeoVm2WTmnElmcma3S2r3Kh5XB38Ejlw2XQXWsSRt5YRXcRMDpOgnLxxG486BxPe+bMTK7mJ2EFPf8MuVXBbvkfwoNsPA2GDY+JHv5kFOKIkLJZYsHgJYJMDF0OZ8dAEkTS50DfyM58u\/wUG1csNcF+eNrLOYJ3BbpUf8Wqsg11aX5KCv3r46F6M6F3bnY\/9uA7RlLuynZEZAJK\/NCKqzDUv++Da3p7cS3\/\/uskzRNBvJLZoU2lPyUwzUGzkZDMw20jR2WeIk5l2XbKeaE2k8WUhOZzmsYqHy6yaqZJqYubcJsqwLni7WfQb7\/ntZ+MmI4+Mr\/DzYX66qS01lgKwK0f0ZIqtCtZGMcU8JpK4xRlaFUHJG0OAYUn0IIrOCKDJDpHatCSUdqkKL60J1fkCDEox+yUIEyzDqAfTe1itvnfezw+0JPUcZ\/6U3OzucTqdtXM3AgebMGqO+A08v1cXZ+ZGOPqbZxiv91u7jvF8pLs1Fs9Po6fl45z\/t1RpT\" 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:eNqFUj1rGzEY3gv9Dy\/OmkCJExI8FJomJCUJpLaXIjqcdZc74bNkdLrQjKVDKV1qQscOjgnFAdMUOll0uuD\/oX\/SV9I1yIHgu+XRo+fV+\/WkMhpmcNJ+\/gzwK8pe6oiOKCVNSOOYGf1pAIWoxgp4Whp9xRvvvdh+h0yR40xAvrgrQUmjf1nqqOwFmrM2eVfdlkDN\/GcJ\/Woq6suExx48Sv76DWl0qxnNIDN6MoScVbcclNE3NMx9wjgm9wUqGcGgmgS33aRQ5P7bYszhwuiv0K+F+OQskO2VLI9Jx8wnHIaZmU8H8KG6voTY6N88DYQdGnHytqymCnqoFjAw85la1ck+diJtZg79LGJPtbKfXJAlXRHxFBv6w7CzxZ3RP\/CIorAeFaXJ6iArY0uNHGwePEzNDsMS4bakiFc\/a1UlVUzwFRM4FZwpIUnjkFVjNBL6aGmHIi1I1+jv+KZfNs\/sXNEmfwPZaaIkowXZs3tK4X6E5X1EL2W+TIqhX6AwehTEvMoTqQpyZPRn1+gIA6mNz6BXjZ\/wIJoXNjZeomf9+aztjtZqnrDIUdZfnrLIUc5LnnPQkdY3nrPIUbhIzyDwGrvLWmShI3EtnkLga8KZ11Uh8nXh+B5R9ag8Wx\/chZ\/H0pLUZZ64ls9ZnrfWzl\/Yf71QUvST1lqz2Qx1LoMXxltJHEcPws3daGdre52KXMhWL49oP4zzef+n2I13gsiYNreXI\/8BEASDXg==\" \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\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">graph LR\r\n    subgraph Source[\"Ki\u1ec3m so\u00e1t ngu\u1ed3n\"]\r\n        Git[Kho l\u01b0u tr\u1eef GitHub]\r\n        PR[Y\u00eau c\u1ea7u k\u00e9o]\r\n    end\r\n    \r\n    subgraph CI[\"T\u00edch h\u1ee3p li\u00ean t\u1ee5c\"]\r\n        Lint[Ki\u1ec3m tra m\u00e3]\r\n        Test[\u0110\u01a1n v\u1ecb ki\u1ec3m th\u1eed]\r\n        Build[S\u1ea3n ph\u1ea9m x\u00e2y d\u1ef1ng]\r\n        Scan[Qu\u00e9t b\u1ea3o m\u1eadt]\r\n    end\r\n    \r\n    subgraph CD[\"Tri\u1ec3n khai li\u00ean t\u1ee5c\"]\r\n        Dev[Tri\u1ec3n khai sang m\u00f4i tr\u01b0\u1eddng Dev]\r\n        Stage[Tri\u1ec3n khai sang m\u00f4i tr\u01b0\u1eddng Staging]\r\n        E2E[Ki\u1ec3m th\u1eed E2E]\r\n        Prod[Tri\u1ec3n khai sang m\u00f4i tr\u01b0\u1eddng Production]\r\n    end\r\n    \r\n    subgraph Monitor[\"Gi\u00e1m s\u00e1t\"]\r\n        Logs[T\u1ed5ng h\u1ee3p nh\u1eadt k\u00fd]\r\n        Metrics[B\u1ea3ng \u0111i\u1ec1u khi\u1ec3n ch\u1ec9 s\u1ed1]\r\n        Alerts[H\u1ec7 th\u1ed1ng c\u1ea3nh b\u00e1o]\r\n    end\r\n    \r\n    Git --&gt; PR\r\n    PR --&gt; Lint\r\n    Lint --&gt; Test\r\n    Test --&gt; Build\r\n    Build --&gt; Scan\r\n    Scan --&gt; Dev\r\n    Dev --&gt; Stage\r\n    Stage --&gt; E2E\r\n    E2E --&gt; Prod\r\n    Prod --&gt; Logs\r\n    Prod --&gt; Metrics\r\n    Metrics --&gt; Alerts\r\n    \r\n    style Git fill:#f0f0f0,stroke:#333\r\n    style Prod fill:#d4edda,stroke:#28a745,color:black\r\n    style Alerts fill:#f8d7da,stroke:#dc3545,color:black\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqFUj1rGzEY3gv9Dy\/OmkCJExI8FJomJCUJpLaXIjqcdZc74bNkdLrQjKVDKV1qQscOjgnFAdMUOll0uuD\/oX\/SV9I1yIHgu+XRo+fV+\/WkMhpmcNJ+\/gzwK8pe6oiOKCVNSOOYGf1pAIWoxgp4Whp9xRvvvdh+h0yR40xAvrgrQUmjf1nqqOwFmrM2eVfdlkDN\/GcJ\/Woq6suExx48Sv76DWl0qxnNIDN6MoScVbcclNE3NMx9wjgm9wUqGcGgmgS33aRQ5P7bYszhwuiv0K+F+OQskO2VLI9Jx8wnHIaZmU8H8KG6voTY6N88DYQdGnHytqymCnqoFjAw85la1ck+diJtZg79LGJPtbKfXJAlXRHxFBv6w7CzxZ3RP\/CIorAeFaXJ6iArY0uNHGwePEzNDsMS4bakiFc\/a1UlVUzwFRM4FZwpIUnjkFVjNBL6aGmHIi1I1+jv+KZfNs\/sXNEmfwPZaaIkowXZs3tK4X6E5X1EL2W+TIqhX6AwehTEvMoTqQpyZPRn1+gIA6mNz6BXjZ\/wIJoXNjZeomf9+aztjtZqnrDIUdZfnrLIUc5LnnPQkdY3nrPIUbhIzyDwGrvLWmShI3EtnkLga8KZ11Uh8nXh+B5R9ag8Wx\/chZ\/H0pLUZZ64ls9ZnrfWzl\/Yf71QUvST1lqz2Qx1LoMXxltJHEcPws3daGdre52KXMhWL49oP4zzef+n2I13gsiYNreXI\/8BEASDXg==\" \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:eNqFU9FKKzEQfb\/gP4T6qiBWUfogVCsqKJTW+xR8SJN0DcakJhNh\/\/7OZFbJeoVm2WTmnElmcma3S2r3Kh5XB38Ejlw2XQXWsSRt5YRXcRMDpOgnLxxG486BxPe+bMTK7mJ2EFPf8MuVXBbvkfwoNsPA2GDY+JHv5kFOKIkLJZYsHgJYJMDF0OZ8dAEkTS50DfyM58u\/wUG1csNcF+eNrLOYJ3BbpUf8Wqsg11aX5KCv3r46F6M6F3bnY\/9uA7RlLuynZEZAJK\/NCKqzDUv++Da3p7cS3\/\/uskzRNBvJLZoU2lPyUwzUGzkZDMw20jR2WeIk5l2XbKeaE2k8WUhOZzmsYqHy6yaqZJqYubcJsqwLni7WfQb7\/ntZ+MmI4+Mr\/DzYX66qS01lgKwK0f0ZIqtCtZGMcU8JpK4xRlaFUHJG0OAYUn0IIrOCKDJDpHatCSUdqkKL60J1fkCDEox+yUIEyzDqAfTe1itvnfezw+0JPUcZ\/6U3OzucTqdtXM3AgebMGqO+A08v1cXZ+ZGOPqbZxiv91u7jvF8pLs1Fs9Po6fl45z\/t1RpT\" 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<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqFU9FKKzEQfb\/gP4T6qiBWUfogVCsqKJTW+xR8SJN0DcakJhNh\/\/7OZFbJeoVm2WTmnElmcma3S2r3Kh5XB38Ejlw2XQXWsSRt5YRXcRMDpOgnLxxG486BxPe+bMTK7mJ2EFPf8MuVXBbvkfwoNsPA2GDY+JHv5kFOKIkLJZYsHgJYJMDF0OZ8dAEkTS50DfyM58u\/wUG1csNcF+eNrLOYJ3BbpUf8Wqsg11aX5KCv3r46F6M6F3bnY\/9uA7RlLuynZEZAJK\/NCKqzDUv++Da3p7cS3\/\/uskzRNBvJLZoU2lPyUwzUGzkZDMw20jR2WeIk5l2XbKeaE2k8WUhOZzmsYqHy6yaqZJqYubcJsqwLni7WfQb7\/ntZ+MmI4+Mr\/DzYX66qS01lgKwK0f0ZIqtCtZGMcU8JpK4xRlaFUHJG0OAYUn0IIrOCKDJDpHatCSUdqkKL60J1fkCDEox+yUIEyzDqAfTe1itvnfezw+0JPUcZ\/6U3OzucTqdtXM3AgebMGqO+A08v1cXZ+ZGOPqbZxiv91u7jvF8pLs1Fs9Po6fl45z\/t1RpT\" 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>M\u1eabu 2: Thi\u1ebft k\u1ebf l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5 (PlantUML):<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 PlantUML minh h\u1ecda l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed v\u1edbi c\u00e1c b\u1ea3ng Ng\u01b0\u1eddi d\u00f9ng, \u0110\u01a1n h\u00e0ng, M\u1ee5c \u0111\u01a1n h\u00e0ng, S\u1ea3n ph\u1ea9m v\u00e0 Thanh to\u00e1n.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8e0682d4f.png\"\/><br \/>\n<em>H\u00ecnh 5: S\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 hi\u1ec3n th\u1ecb l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed<\/em><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:bLLTQzim57qt-3zex2M66j92NaefzRgOXJPTQDEnDwDAIYngIvuaqsP9__kkBDkn4sTGlmIT-w5pxprNkT46ArFccUzzeMp51KFBwDlzT2HmpWB4XE5cW-m1NLsXqVBiQnn7y0Ne-deVihWRlGVe7LmMTrqyRl6umdtF9N_MJEa0RNqFmGVH9G09fm6wHBE7fOF3qFso7FCC3B-YnziVqUFeOZ89dAN0Mhz9HPCKwtJGWoY63QC9Dc1UpkRJfsKqNpXRXhL9ChdcujW6NJ6b1dpwy3ptlOyzzOMIj2IcnxvmsAa2z6lP8JSPrzogfWwHfamJnGl3PSLi-hlELoXERCJtwUri7jsFpiTd5q73LvBNv4-9tRmw90ZKlvPg0-GQk5FDhRDorgkd4pDOq07py_6u7OW2nGnVzLFHWw5BYvow8nuMXOkXGF1uQ4OQd2KubwKmfzhK6si5fRmek5Wdc5B5j6uxVaXzPbZUeyy1-0_xmUhYas8Pcbqfk4bEJBqhIRp9eUrzIJhii_oQi9oPLD9Ueup2GcDYLUa6V2pSJxOUEa6WumFhMHLNFH9ejmj3kKLEFU1LP1Y2VAy6FcGOxhR8-LwY5vP9iTQ9aQs7JR2h4rGp13SYXS5SD6aSNANQeMR1mKsn5GD1L_UrSEsstnoRhpxyXLguw5qDt9lvMFQOq-HbOyiJ4ZIi-3erIAvS0ROjJqQ2314fOQLpfX0cn3Qric514IvDQbzbkDA-3x09sFSO66o-Dc_6LbLQHyJ6pg7UxWoXE08IiAOtRj9s3-3rWTPakf_q1Wxm9_4F\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:bLLTQzim57qt-3zex2M66j92NaefzRgOXJPTQDEnDwDAIYngIvuaqsP9__kkBDkn4sTGlmIT-w5pxprNkT46ArFccUzzeMp51KFBwDlzT2HmpWB4XE5cW-m1NLsXqVBiQnn7y0Ne-deVihWRlGVe7LmMTrqyRl6umdtF9N_MJEa0RNqFmGVH9G09fm6wHBE7fOF3qFso7FCC3B-YnziVqUFeOZ89dAN0Mhz9HPCKwtJGWoY63QC9Dc1UpkRJfsKqNpXRXhL9ChdcujW6NJ6b1dpwy3ptlOyzzOMIj2IcnxvmsAa2z6lP8JSPrzogfWwHfamJnGl3PSLi-hlELoXERCJtwUri7jsFpiTd5q73LvBNv4-9tRmw90ZKlvPg0-GQk5FDhRDorgkd4pDOq07py_6u7OW2nGnVzLFHWw5BYvow8nuMXOkXGF1uQ4OQd2KubwKmfzhK6si5fRmek5Wdc5B5j6uxVaXzPbZUeyy1-0_xmUhYas8Pcbqfk4bEJBqhIRp9eUrzIJhii_oQi9oPLD9Ueup2GcDYLUa6V2pSJxOUEa6WumFhMHLNFH9ejmj3kKLEFU1LP1Y2VAy6FcGOxhR8-LwY5vP9iTQ9aQs7JR2h4rGp13SYXS5SD6aSNANQeMR1mKsn5GD1L_UrSEsstnoRhpxyXLguw5qDt9lvMFQOq-HbOyiJ4ZIi-3erIAvS0ROjJqQ2314fOQLpfX0cn3Qric514IvDQbzbkDA-3x09sFSO66o-Dc_6LbLQHyJ6pg7UxWoXE08IiAOtRj9s3-3rWTPakf_q1Wxm9_4F\" 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 PlantUML 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:bLNDJjj04Bv7oZjCrKii4IaWSK484MYYHX0QqL3rPYtUZRt2tdLtroqfuSIXXpv2BrGzexPNSkWXKj_3Rz9PRn9YS2hXYxNVp7pppS_Q-zeGPR8ahjTUK3RYWi6mVN3SQGYIC0-OCDoCmHvWTnSQmusNtMuR7m_szXv21aUDImykqMLmj8ftbtYtmEirHtwccT8UNDLhW0z6PmZud7gm0xsJeOERJVTc2U4n6jwrJmzVjqyRMzlRdhEaHEjFKb4_8Zggz0WK8uPHdnWq3tlzpjjXkpzmjfXeuySovEAf3RjYCeruv-IiNwzTFqWVA4cpm9JKfmvRLu2-o5R4RRVcsegcLeccJ0UAfuRBGbdd_PmlLJom4QywXxr--xYnsThOyXPwPN3XVyY8czUAY03h3wKQexW5l5BDeRDoLgfd9QQoe4VADrkjvK0KRanrgZUAFXgwjCYw7DtgfN0n50K-7PgHXiG-IMGcpBesbSPQG15FKov2dr2gcDRBZZ-MtZCiASdd2Fn7VMLrtRNBKZMxJ73ZhvdwwagISO9jBw-amvwhRn6MC1D9McgKKKHe4jYjT0D-khZFR3rs8i2ELrpFehZY8m6JIRCfhy1j3tgbCS6WUcqENCjcSt85pdS7pbaiHQXz8vSUbc0o9oXcY6w158PmiQ1nS44rWSK5HpV5HWmNkiYtXETk3pV7yiqFdx4MBagfKVjYFbOzuTG_7zloXCGTLZoC3CYHAy2svVZlhmnxdKz_WfdTShY8P7x_G-1xzZs889hTYj3wVPpT0hLUCS-dNpAuH3EOA9_-3ker9YXO_cMUc8sAD4wOZJyeMCE8GyY9j5HVaJw8PdSYAlZpwJUEPmw6v_T_30BtTmA1R9nFRqGvnpuUy1_o3m00\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n!define TABLE(name) entity name &lt;&lt; (T,#FFAAAA) &gt;&gt;\r\n!define PK(x) x &lt;&lt;PK&gt;&gt;\r\n!define FK(x) x &lt;&lt;FK&gt;&gt;\r\n\r\nTABLE(Users) {\r\n    PK(user_id) : INT\r\n    --\r\n    email : VARCHAR(255)\r\n    password_hash : VARCHAR(255)\r\n    created_at : TIMESTAMP\r\n    last_login : TIMESTAMP\r\n    status : ENUM\r\n}\r\n\r\nTABLE(Products) {\r\n    PK(product_id) : INT\r\n    --\r\n    sku : VARCHAR(50)\r\n    name : VARCHAR(255)\r\n    description : TEXT\r\n    price : DECIMAL(10,2)\r\n    stock_quantity : INT\r\n    category_id : INT\r\n}\r\n\r\nTABLE(Categories) {\r\n    PK(category_id) : INT\r\n    --\r\n    name : VARCHAR(100)\r\n    parent_id : INT\r\n}\r\n\r\nTABLE(Orders) {\r\n    PK(order_id) : INT\r\n    --\r\n    FK(user_id) : INT\r\n    order_date : TIMESTAMP\r\n    total_amount : DECIMAL(10,2)\r\n    status : ENUM\r\n    shipping_address : TEXT\r\n}\r\n\r\nTABLE(OrderItems) {\r\n    PK(item_id) : INT\r\n    --\r\n    FK(order_id) : INT\r\n    FK(product_id) : INT\r\n    quantity : INT\r\n    unit_price : DECIMAL(10,2)\r\n}\r\n\r\nTABLE(Payments) {\r\n    PK(payment_id) : INT\r\n    --\r\n    FK(order_id) : INT\r\n    payment_method : ENUM\r\n    transaction_id : VARCHAR(255)\r\n    amount : DECIMAL(10,2)\r\n    status : ENUM\r\n    processed_at : TIMESTAMP\r\n}\r\n\r\nUsers ||--o{ Orders : places\r\nOrders }o--|{ Users : belongs_to\r\nOrders ||--|{ OrderItems : contains\r\nOrderItems }o--|| Products : references\r\nProducts }o--|| Categories : categorized_in\r\nOrders ||--o{ Payments : paid_by\r\n\r\nnote right of Users\r\n  L\u01b0u tr\u1eef t\u00e0i kho\u1ea3n kh\u00e1ch h\u00e0ng\r\n  v\u00e0 d\u1eef li\u1ec7u x\u00e1c th\u1ef1c\r\nend note\r\n\r\nnote left of Orders\r\n  B\u1ea3n ghi giao d\u1ecbch ch\u00ednh\r\n  v\u1edbi chi ti\u1ebft v\u1eadn chuy\u1ec3n\r\nend note\r\n\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:bLNDJjj04Bv7oZjCrKii4IaWSK484MYYHX0QqL3rPYtUZRt2tdLtroqfuSIXXpv2BrGzexPNSkWXKj_3Rz9PRn9YS2hXYxNVp7pppS_Q-zeGPR8ahjTUK3RYWi6mVN3SQGYIC0-OCDoCmHvWTnSQmusNtMuR7m_szXv21aUDImykqMLmj8ftbtYtmEirHtwccT8UNDLhW0z6PmZud7gm0xsJeOERJVTc2U4n6jwrJmzVjqyRMzlRdhEaHEjFKb4_8Zggz0WK8uPHdnWq3tlzpjjXkpzmjfXeuySovEAf3RjYCeruv-IiNwzTFqWVA4cpm9JKfmvRLu2-o5R4RRVcsegcLeccJ0UAfuRBGbdd_PmlLJom4QywXxr--xYnsThOyXPwPN3XVyY8czUAY03h3wKQexW5l5BDeRDoLgfd9QQoe4VADrkjvK0KRanrgZUAFXgwjCYw7DtgfN0n50K-7PgHXiG-IMGcpBesbSPQG15FKov2dr2gcDRBZZ-MtZCiASdd2Fn7VMLrtRNBKZMxJ73ZhvdwwagISO9jBw-amvwhRn6MC1D9McgKKKHe4jYjT0D-khZFR3rs8i2ELrpFehZY8m6JIRCfhy1j3tgbCS6WUcqENCjcSt85pdS7pbaiHQXz8vSUbc0o9oXcY6w158PmiQ1nS44rWSK5HpV5HWmNkiYtXETk3pV7yiqFdx4MBagfKVjYFbOzuTG_7zloXCGTLZoC3CYHAy2svVZlhmnxdKz_WfdTShY8P7x_G-1xzZs889hTYj3wVPpT0hLUCS-dNpAuH3EOA9_-3ker9YXO_cMUc8sAD4wOZJyeMCE8GyY9j5HVaJw8PdSYAlZpwJUEPmw6v_T_30BtTmA1R9nFRqGvnpuUy1_o3m00\" \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 PlantUML 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\/#plantuml:bLLTQzim57qt-3zex2M66j92NaefzRgOXJPTQDEnDwDAIYngIvuaqsP9__kkBDkn4sTGlmIT-w5pxprNkT46ArFccUzzeMp51KFBwDlzT2HmpWB4XE5cW-m1NLsXqVBiQnn7y0Ne-deVihWRlGVe7LmMTrqyRl6umdtF9N_MJEa0RNqFmGVH9G09fm6wHBE7fOF3qFso7FCC3B-YnziVqUFeOZ89dAN0Mhz9HPCKwtJGWoY63QC9Dc1UpkRJfsKqNpXRXhL9ChdcujW6NJ6b1dpwy3ptlOyzzOMIj2IcnxvmsAa2z6lP8JSPrzogfWwHfamJnGl3PSLi-hlELoXERCJtwUri7jsFpiTd5q73LvBNv4-9tRmw90ZKlvPg0-GQk5FDhRDorgkd4pDOq07py_6u7OW2nGnVzLFHWw5BYvow8nuMXOkXGF1uQ4OQd2KubwKmfzhK6si5fRmek5Wdc5B5j6uxVaXzPbZUeyy1-0_xmUhYas8Pcbqfk4bEJBqhIRp9eUrzIJhii_oQi9oPLD9Ueup2GcDYLUa6V2pSJxOUEa6WumFhMHLNFH9ejmj3kKLEFU1LP1Y2VAy6FcGOxhR8-LwY5vP9iTQ9aQs7JR2h4rGp13SYXS5SD6aSNANQeMR1mKsn5GD1L_UrSEsstnoRhpxyXLguw5qDt9lvMFQOq-HbOyiJ4ZIi-3erIAvS0ROjJqQ2314fOQLpfX0cn3Qric514IvDQbzbkDA-3x09sFSO66o-Dc_6LbLQHyJ6pg7UxWoXE08IiAOtRj9s3-3rWTPakf_q1Wxm9_4F\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:bLLTQzim57qt-3zex2M66j92NaefzRgOXJPTQDEnDwDAIYngIvuaqsP9__kkBDkn4sTGlmIT-w5pxprNkT46ArFccUzzeMp51KFBwDlzT2HmpWB4XE5cW-m1NLsXqVBiQnn7y0Ne-deVihWRlGVe7LmMTrqyRl6umdtF9N_MJEa0RNqFmGVH9G09fm6wHBE7fOF3qFso7FCC3B-YnziVqUFeOZ89dAN0Mhz9HPCKwtJGWoY63QC9Dc1UpkRJfsKqNpXRXhL9ChdcujW6NJ6b1dpwy3ptlOyzzOMIj2IcnxvmsAa2z6lP8JSPrzogfWwHfamJnGl3PSLi-hlELoXERCJtwUri7jsFpiTd5q73LvBNv4-9tRmw90ZKlvPg0-GQk5FDhRDorgkd4pDOq07py_6u7OW2nGnVzLFHWw5BYvow8nuMXOkXGF1uQ4OQd2KubwKmfzhK6si5fRmek5Wdc5B5j6uxVaXzPbZUeyy1-0_xmUhYas8Pcbqfk4bEJBqhIRp9eUrzIJhii_oQi9oPLD9Ueup2GcDYLUa6V2pSJxOUEa6WumFhMHLNFH9ejmj3kKLEFU1LP1Y2VAy6FcGOxhR8-LwY5vP9iTQ9aQs7JR2h4rGp13SYXS5SD6aSNANQeMR1mKsn5GD1L_UrSEsstnoRhpxyXLguw5qDt9lvMFQOq-HbOyiJ4ZIi-3erIAvS0ROjJqQ2314fOQLpfX0cn3Qric514IvDQbzbkDA-3x09sFSO66o-Dc_6LbLQHyJ6pg7UxWoXE08IiAOtRj9s3-3rWTPakf_q1Wxm9_4F\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>M\u1eabu 3: Tr\u1ef1c quan h\u00f3a C\u01a1 s\u1edf h\u1ea1 t\u1ea7ng d\u01b0\u1edbi d\u1ea1ng M\u00e3<\/h3>\n<p><strong>M\u00e3 v\u00ed d\u1ee5 (Mermaid):<\/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:eNqVVV1vmzAUfZ+0\/2Cl0p6WtYnXNommSoSmWaQ06kI2pll9cMAhVhBGxizLv981UD4M6Tqjay6He8y5\/rgEksZ7tJm+f4egJek2yADLdUgPOmSHIvXRItpJmiiZeiqVrPecR+vmc8k8xUVUjqFb5ZUjrpg6CnngUUB6lV8fSrcfTzYBQ4OrT9l1ObgxIhZzlywixWTEFJpTxY70ZISsrA0BO\/O2+VTqe0q3IfdIL78jJ93CBxJTn27WckqsOIYomiW+FNRHUxrSyGOyI34KMwdxpLijryJRRhiL\/LeJlPw3JAUqc+c1mdVaxvGGMwnrWROtkS6WbjPbGRDo0IYmBzQ4HzWsoobno3AVhTuiWrm382+kc08VzfPR3quJrO8dAoaeYMYDyZxvyy9beXn3mIaK961f51jM5wmZhXq5bOrtWY68RXoDaDx0nAhHCUkDWMzCMbOAiXMwmqbeAVY4E24lCbjoA2wp75DGpqTZg0PAkLOnkvkv4z\/\/hyLmpZKrE0gqPFOTaz0QMLROQ2Z+3pmTFxqaS9HWt7AeCRhaiyb5X7IeRcQhl6x0VD5Mw1IEQUcRsV2SlS2XKm9vvPu5pieiC9vP\/rpVGpyVQ8DQSii+K05Kp9DSyfvvCWzHWeRnTvKM+v27vHA+SBEpUrnIvl8V49VAHQ6TmuN6djUAVSYHwMkAfSpbyLCF4LowzclewCkokWELwU3E5Ordb7IbGDYxY4QXUSW9BuAGYBBhNxvMOoKbiMG1XYNaA3ADyHtdKOpolk5HnO3mileNzybqFDL9+0I7HoaTi91YXx\/hnykObHKBMS78\/pH7aj8Zxn\/qRL2ABXE3Hl9dlUTPu6Xw6IlQyMlxzxWr07TmnDZkt3g7KmkD+tkfnaXpbVrwxtf0mt6UvNvdyBv5fwEtfO9m\" 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\">\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:eNqVVV1vmzAUfZ+0\/2Cl0p6WtYnXNommSoSmWaQ06kI2pll9cMAhVhBGxizLv981UD4M6Tqjay6He8y5\/rgEksZ7tJm+f4egJek2yADLdUgPOmSHIvXRItpJmiiZeiqVrPecR+vmc8k8xUVUjqFb5ZUjrpg6CnngUUB6lV8fSrcfTzYBQ4OrT9l1ObgxIhZzlywixWTEFJpTxY70ZISsrA0BO\/O2+VTqe0q3IfdIL78jJ93CBxJTn27WckqsOIYomiW+FNRHUxrSyGOyI34KMwdxpLijryJRRhiL\/LeJlPw3JAUqc+c1mdVaxvGGMwnrWROtkS6WbjPbGRDo0IYmBzQ4HzWsoobno3AVhTuiWrm382+kc08VzfPR3quJrO8dAoaeYMYDyZxvyy9beXn3mIaK961f51jM5wmZhXq5bOrtWY68RXoDaDx0nAhHCUkDWMzCMbOAiXMwmqbeAVY4E24lCbjoA2wp75DGpqTZg0PAkLOnkvkv4z\/\/hyLmpZKrE0gqPFOTaz0QMLROQ2Z+3pmTFxqaS9HWt7AeCRhaiyb5X7IeRcQhl6x0VD5Mw1IEQUcRsV2SlS2XKm9vvPu5pieiC9vP\/rpVGpyVQ8DQSii+K05Kp9DSyfvvCWzHWeRnTvKM+v27vHA+SBEpUrnIvl8V49VAHQ6TmuN6djUAVSYHwMkAfSpbyLCF4LowzclewCkokWELwU3E5Ordb7IbGDYxY4QXUSW9BuAGYBBhNxvMOoKbiMG1XYNaA3ADyHtdKOpolk5HnO3mileNzybqFDL9+0I7HoaTi91YXx\/hnykObHKBMS78\/pH7aj8Zxn\/qRL2ABXE3Hl9dlUTPu6Xw6IlQyMlxzxWr07TmnDZkt3g7KmkD+tkfnaXpbVrwxtf0mt6UvNvdyBv5fwEtfO9m\" 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:eNqNVc1q20AQvgf6DosDPTVNbDU\/NiVgK4kbcEwSu3FA5LCWZGmJLBlpndRP0Gtz6KGU0jqhlJaWpD+XWvSkkvfQm3RGtmWtFNOskDUz+r7VNzO7a8OlPZM0Kw8WCAyv3zaiQLnVUHLy7ZB4of+emOFoSHg4+mQb5O9FMOySbnA5QFDuZEzEoTFXVzlzbJguDsZGPHVd5+eOe8psQ8ntwcS2kTuJUTiO9mUFbpJfeRxdy\/k1EbBbbSly6L8GNbs2111b5yKgXm5OAWCK7wQnFrXfb1tMnQoiKiShBr\/QCv03GYU4yrWK0nSDr7YJyEubtMPRd8BDla4YCf3PYGuh\/9E2stQK9bBMyjPH41NHROm2dh\/RLjujXBdUuyz4gjJub+7QPGtvr9dkuqvkaqH\/tifIvYOGY1tu5JW6yUL\/ZZecARIjJD8XXMiCC3PBUhYsZcHpomQKI6S4RTlN5gjZXRMLv9Kfk+LhVkOBm+xDWwxXbxzUnrbd5c2\/ryg5C37f1ciIpWvMU7YtbKNMVVMfR\/4vP+kn7eyOaXDHpQb0uXZ70yfchUxSKUAFmyZqBCsS3Qw+MNi7oyubPCSV6OlRh1gwgcjc3mkos2mJajKKPB9fnNxXn672XcYHSg6\/5JBuOPrGUwpb5R3loD\/A\/XGtopdKoApLIPjZxW00nSG16ct7yhFloDP4gc59xe05NoP6RcdNleHZ5QVDDlWpmozYJn6InAZ\/UnJlOGEsp6+1KFdN8dXxIR0ocPSR4yWwUmnUG9gIPDjawdBBP6tz+ox+nnuwROvG7U3ov2NEi3qo9kP\/gp2QpaVNEqnYcR2bKzOTyFv18byJGKKhrguTakc+HFILk8Mq8nEXpwOFdECaqUN8FIZ9MQ0U0gFJCKR4uBdSzGRISoVE9kRKTJ35UtIXSbBwRVYiIAkBkSe3RNrMl5L+wuSoSMYi\/RmQ3BqLrCe+5vGBpeM\/HOkwyyotdop4PfK465zqpUVJkib20jnTuFkq9F4keNikCa9TLK6sxDxVXafgqo7luKVzk3E9wUKxY1ZBX5faGzErT59oG\/NYuDAntOIqXaVrMW29s6FuaP8AyJpHsg==\" \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\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">graph TB\r\n    subgraph AWS[\"C\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y AWS\"]\r\n        direction TB\n        \n        subgraph Networking[\"M\u1ea1ng\"]\n            VPC[VPC 10.0.0.0\/16]\n            IGW[C\u1ed5ng Internet]\n            NAT[C\u1ed5ng NAT]\n            \n            subgraph Public[\"M\u1ea1ng con c\u00f4ng c\u1ed9ng\"]\n                ALB[Tr\u00ecnh c\u00e2n b\u1eb1ng t\u1ea3i \u1ee9ng d\u1ee5ng]\n                Bastion[Host Bastion]\n            end\n            \n            subgraph Private[\"M\u1ea1ng con ri\u00eang t\u01b0\"]\n                subgraph AppTier[\"L\u1edbp \u1ee9ng d\u1ee5ng\"]\n                    ECS1[Nhi\u1ec7m v\u1ee5 ECS 1]\n                    ECS2[Nhi\u1ec7m v\u1ee5 ECS 2]\n                    ECS3[Nhi\u1ec7m v\u1ee5 ECS 3]\n                end\n                \n                subgraph DataTier[\"L\u1edbp d\u1eef li\u1ec7u\"]\n                    RDS[RDS PostgreSQL&lt;br\/&gt;\u0110a v\u00f9ng]\n                    Redis[ElastiCache Redis]\n                end\n            end\n        end\n        \n        subgraph Storage[\"L\u01b0u tr\u1eef\"]\n            S3[Th\u00f9ng S3&lt;br\/&gt;T\u00e0i s\u1ea3n &amp; B\u1ea3n sao l\u01b0u]\n            EFS[L\u01b0u tr\u1eef chia s\u1ebb EFS]\n        end\n        \n        subgraph Security[\"B\u1ea3o m\u1eadt\"]\n            WAF[Quy t\u1eafc WAF]\n            SG[Nh\u00f3m b\u1ea3o m\u1eadt]\n            IAM[Vai tr\u00f2 IAM]\n        end\n        \n        subgraph Monitoring[\"Gi\u00e1m s\u00e1t &amp; Ghi nh\u1eadt k\u00fd\"]\n            CW[CloudWatch]\n            XRay[AWS X-Ray]\n            SNS[Th\u00f4ng b\u00e1o SNS]\n        end\n    end\n    \n    User[Ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i] --&gt; CloudFront[CloudFront CDN]\n    CloudFront --&gt; WAF\n    WAF --&gt; ALB\n    ALB --&gt; ECS1\n    ALB --&gt; ECS2\n    ALB --&gt; ECS3\n    \n    ECS1 --&gt; RDS\n    ECS2 --&gt; RDS\n    ECS3 --&gt; RDS\n    \n    ECS1 --&gt; Redis\n    ECS2 --&gt; Redis\n    ECS3 --&gt; Redis\n    \n    ECS1 --&gt; S3\n    ECS2 --&gt; S3\n    ECS3 --&gt; S3\n    \n    ECS1 --&gt; EFS\n    ECS2 --&gt; EFS\n    ECS3 --&gt; EFS\n    \n    ECS1 --&gt; CW\n    ECS2 --&gt; CW\n    ECS3 --&gt; CW\n    \n    RDS --&gt; CW\n    Redis --&gt; CW\n    \n    CW --&gt; SNS\n    \n    style VPC fill:#f9f9f9,stroke:#333,stroke-width:2px\n    style ALB fill:#ff9900,stroke:#cc7a00,color:white\n    style RDS fill:#2e73b8,stroke:#1a4d80,color:white\n    style User fill:#95a5a6,stroke:#7f8c8d\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNVc1q20AQvgf6DosDPTVNbDU\/NiVgK4kbcEwSu3FA5LCWZGmJLBlpndRP0Gtz6KGU0jqhlJaWpD+XWvSkkvfQm3RGtmWtFNOskDUz+r7VNzO7a8OlPZM0Kw8WCAyv3zaiQLnVUHLy7ZB4of+emOFoSHg4+mQb5O9FMOySbnA5QFDuZEzEoTFXVzlzbJguDsZGPHVd5+eOe8psQ8ntwcS2kTuJUTiO9mUFbpJfeRxdy\/k1EbBbbSly6L8GNbs2111b5yKgXm5OAWCK7wQnFrXfb1tMnQoiKiShBr\/QCv03GYU4yrWK0nSDr7YJyEubtMPRd8BDla4YCf3PYGuh\/9E2stQK9bBMyjPH41NHROm2dh\/RLjujXBdUuyz4gjJub+7QPGtvr9dkuqvkaqH\/tifIvYOGY1tu5JW6yUL\/ZZecARIjJD8XXMiCC3PBUhYsZcHpomQKI6S4RTlN5gjZXRMLv9Kfk+LhVkOBm+xDWwxXbxzUnrbd5c2\/ryg5C37f1ciIpWvMU7YtbKNMVVMfR\/4vP+kn7eyOaXDHpQb0uXZ70yfchUxSKUAFmyZqBCsS3Qw+MNi7oyubPCSV6OlRh1gwgcjc3mkos2mJajKKPB9fnNxXn672XcYHSg6\/5JBuOPrGUwpb5R3loD\/A\/XGtopdKoApLIPjZxW00nSG16ct7yhFloDP4gc59xe05NoP6RcdNleHZ5QVDDlWpmozYJn6InAZ\/UnJlOGEsp6+1KFdN8dXxIR0ocPSR4yWwUmnUG9gIPDjawdBBP6tz+ox+nnuwROvG7U3ov2NEi3qo9kP\/gp2QpaVNEqnYcR2bKzOTyFv18byJGKKhrguTakc+HFILk8Mq8nEXpwOFdECaqUN8FIZ9MQ0U0gFJCKR4uBdSzGRISoVE9kRKTJ35UtIXSbBwRVYiIAkBkSe3RNrMl5L+wuSoSMYi\/RmQ3BqLrCe+5vGBpeM\/HOkwyyotdop4PfK465zqpUVJkib20jnTuFkq9F4keNikCa9TLK6sxDxVXafgqo7luKVzk3E9wUKxY1ZBX5faGzErT59oG\/NYuDAntOIqXaVrMW29s6FuaP8AyJpHsg==\" \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:eNqVVV1vmzAUfZ+0\/2Cl0p6WtYnXNommSoSmWaQ06kI2pll9cMAhVhBGxizLv981UD4M6Tqjay6He8y5\/rgEksZ7tJm+f4egJek2yADLdUgPOmSHIvXRItpJmiiZeiqVrPecR+vmc8k8xUVUjqFb5ZUjrpg6CnngUUB6lV8fSrcfTzYBQ4OrT9l1ObgxIhZzlywixWTEFJpTxY70ZISsrA0BO\/O2+VTqe0q3IfdIL78jJ93CBxJTn27WckqsOIYomiW+FNRHUxrSyGOyI34KMwdxpLijryJRRhiL\/LeJlPw3JAUqc+c1mdVaxvGGMwnrWROtkS6WbjPbGRDo0IYmBzQ4HzWsoobno3AVhTuiWrm382+kc08VzfPR3quJrO8dAoaeYMYDyZxvyy9beXn3mIaK961f51jM5wmZhXq5bOrtWY68RXoDaDx0nAhHCUkDWMzCMbOAiXMwmqbeAVY4E24lCbjoA2wp75DGpqTZg0PAkLOnkvkv4z\/\/hyLmpZKrE0gqPFOTaz0QMLROQ2Z+3pmTFxqaS9HWt7AeCRhaiyb5X7IeRcQhl6x0VD5Mw1IEQUcRsV2SlS2XKm9vvPu5pieiC9vP\/rpVGpyVQ8DQSii+K05Kp9DSyfvvCWzHWeRnTvKM+v27vHA+SBEpUrnIvl8V49VAHQ6TmuN6djUAVSYHwMkAfSpbyLCF4LowzclewCkokWELwU3E5Ordb7IbGDYxY4QXUSW9BuAGYBBhNxvMOoKbiMG1XYNaA3ADyHtdKOpolk5HnO3mileNzybqFDL9+0I7HoaTi91YXx\/hnykObHKBMS78\/pH7aj8Zxn\/qRL2ABXE3Hl9dlUTPu6Xw6IlQyMlxzxWr07TmnDZkt3g7KmkD+tkfnaXpbVrwxtf0mt6UvNvdyBv5fwEtfO9m\" 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<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqVVV1vmzAUfZ+0\/2Cl0p6WtYnXNommSoSmWaQ06kI2pll9cMAhVhBGxizLv981UD4M6Tqjay6He8y5\/rgEksZ7tJm+f4egJek2yADLdUgPOmSHIvXRItpJmiiZeiqVrPecR+vmc8k8xUVUjqFb5ZUjrpg6CnngUUB6lV8fSrcfTzYBQ4OrT9l1ObgxIhZzlywixWTEFJpTxY70ZISsrA0BO\/O2+VTqe0q3IfdIL78jJ93CBxJTn27WckqsOIYomiW+FNRHUxrSyGOyI34KMwdxpLijryJRRhiL\/LeJlPw3JAUqc+c1mdVaxvGGMwnrWROtkS6WbjPbGRDo0IYmBzQ4HzWsoobno3AVhTuiWrm382+kc08VzfPR3quJrO8dAoaeYMYDyZxvyy9beXn3mIaK961f51jM5wmZhXq5bOrtWY68RXoDaDx0nAhHCUkDWMzCMbOAiXMwmqbeAVY4E24lCbjoA2wp75DGpqTZg0PAkLOnkvkv4z\/\/hyLmpZKrE0gqPFOTaz0QMLROQ2Z+3pmTFxqaS9HWt7AeCRhaiyb5X7IeRcQhl6x0VD5Mw1IEQUcRsV2SlS2XKm9vvPu5pieiC9vP\/rpVGpyVQ8DQSii+K05Kp9DSyfvvCWzHWeRnTvKM+v27vHA+SBEpUrnIvl8V49VAHQ6TmuN6djUAVSYHwMkAfSpbyLCF4LowzclewCkokWELwU3E5Ordb7IbGDYxY4QXUSW9BuAGYBBhNxvMOoKbiMG1XYNaA3ADyHtdKOpolk5HnO3mileNzybqFDL9+0I7HoaTi91YXx\/hnykObHKBMS78\/pH7aj8Zxn\/qRL2ABXE3Hl9dlUTPu6Xw6IlQyMlxzxWr07TmnDZkt3g7KmkD+tkfnaXpbVrwxtf0mt6UvNvdyBv5fwEtfO9m\" 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><img alt=\"Ki\u1ebfn tr\u00fac h\u1ea1 t\u1ea7ng\" decoding=\"async\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e8538cd989.png\"\/><br \/>\n<em>H\u00ecnh 6: S\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y AWS<\/em><\/p>\n<hr\/>\n<h2>7. K\u1ef9 thu\u1eadt n\u00e2ng cao: T\u1ea1o ki\u1ec3u v\u00e0 t\u00f9y ch\u1ec9nh {#advanced-techniques}<\/h2>\n<h3>T\u1ea1o ki\u1ec3u n\u00e2ng cao Mermaid<\/h3>\n<p><strong>T\u00f9y ch\u1ec9nh ch\u1ee7 \u0111\u1ec1:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 lu\u1ed3ng minh h\u1ecda c\u00e1ch \u0111\u1ecbnh d\u1ea1ng n\u00e2ng cao c\u1ee7a Mermaid v\u1edbi c\u00e1c h\u00ecnh d\u1ea1ng \u0111\u01b0\u1ee3c m\u00e3 m\u00e0u cho tr\u1ea1ng th\u00e1i b\u1eaft \u0111\u1ea7u, quy\u1ebft \u0111\u1ecbnh, quy tr\u00ecnh v\u00e0 tr\u1ea1ng th\u00e1i k\u1ebft th\u00fac.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8e490dacf.png\"\/><\/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:eNpdj11rgzAUhu8F\/0NAJDcWWrXaejFQYy7HYGVQpBfWHtcwa0oS2Ir636ez+LEEAud9njckplmziqkA1Vhd4QY4wOdMArbQMH9kgmXnEiTuFF1D3cJ3wW6ZeMS85KKLseHGId2usbXkB\/hRk1MUxX8h4uICYlKc3S5x4tEqWQUT9Lf9HqGEnFeXxSsojTdrfzQUCMUWQv8EXWvb1jR1Tdc+RXa\/ogMZ\/DB9V5lQJ7RavaCoJpAzyXjVDjTq4+YIskFx+iZ4DlKi8DSHr7xBZGTRk8V\/9yVpUl2eCRmSYRhOqR4loBAVrCwDw97sPepYUgn+BYGx2fsesa28\/0bwfWUK5qXkWaKu6zjeWCKOTW06L\/0CR6+G1w==\" 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\">\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:eNpdj11rgzAUhu8F\/0NAJDcWWrXaejFQYy7HYGVQpBfWHtcwa0oS2Ir636ez+LEEAud9njckplmziqkA1Vhd4QY4wOdMArbQMH9kgmXnEiTuFF1D3cJ3wW6ZeMS85KKLseHGId2usbXkB\/hRk1MUxX8h4uICYlKc3S5x4tEqWQUT9Lf9HqGEnFeXxSsojTdrfzQUCMUWQv8EXWvb1jR1Tdc+RXa\/ogMZ\/DB9V5lQJ7RavaCoJpAzyXjVDjTq4+YIskFx+iZ4DlKi8DSHr7xBZGTRk8V\/9yVpUl2eCRmSYRhOqR4loBAVrCwDw97sPepYUgn+BYGx2fsesa28\/0bwfWUK5qXkWaKu6zjeWCKOTW06L\/0CR6+G1w==\" 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:eNpdj11rgzAUhu8F\/0NAJDcWWrXaejFQYy7HYGVQpBfWHtcwa0oS2Ir636ez+LEEAud9njckplmziqkA1Vhd4QY4wOdMArbQMH9kgmXnEiTuFF1D3cJ3wW6ZeMS85KKLseHGId2usbXkB\/hRk1MUxX8h4uICYlKc3S5x4tEqWQUT9Lf9HqGEnFeXxSsojTdrfzQUCMUWQv8EXWvb1jR1Tdc+RXa\/ogMZ\/DB9V5lQJ7RavaCoJpAzyXjVDjTq4+YIskFx+iZ4DlKi8DSHr7xBZGTRk8V\/9yVpUl2eCRmSYRhOqR4loBAVrCwDw97sPepYUgn+BYGx2fsesa28\/0bwfWUK5qXkWaKu6zjeWCKOTW06L\/0CR6+G1w==\" \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\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">%%{init: {'theme':'base', 'themeVariables': {\r\n    'primaryColor': '#4CAF50',\r\n    'primaryTextColor': '#fff',\r\n    'primaryBorderColor': '#388E3C',\r\n    'lineColor': '#757575',\r\n    'secondaryColor': '#FFC107',\r\n    'tertiaryColor': '#fff'\r\n}}}%%\r\n\r\ngraph TD\r\n    A[Start] --&gt; B{Decision}\r\n    B --&gt;|Yes| C[Process A]\r\n    B --&gt;|No| D[Process B]\r\n    C --&gt; E[End]\r\n    D --&gt; E\r\n    \r\n    style A fill:#2196F3,stroke:#1976D2,color:white\r\n    style E fill:#F44336,stroke:#D32F2F,color:white\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpdj11rgzAUhu8F\/0NAJDcWWrXaejFQYy7HYGVQpBfWHtcwa0oS2Ir636ez+LEEAud9njckplmziqkA1Vhd4QY4wOdMArbQMH9kgmXnEiTuFF1D3cJ3wW6ZeMS85KKLseHGId2usbXkB\/hRk1MUxX8h4uICYlKc3S5x4tEqWQUT9Lf9HqGEnFeXxSsojTdrfzQUCMUWQv8EXWvb1jR1Tdc+RXa\/ogMZ\/DB9V5lQJ7RavaCoJpAzyXjVDjTq4+YIskFx+iZ4DlKi8DSHr7xBZGTRk8V\/9yVpUl2eCRmSYRhOqR4loBAVrCwDw97sPepYUgn+BYGx2fsesa28\/0bwfWUK5qXkWaKu6zjeWCKOTW06L\/0CR6+G1w==\" \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:eNpdj11rgzAUhu8F\/0NAJDcWWrXaejFQYy7HYGVQpBfWHtcwa0oS2Ir636ez+LEEAud9njckplmziqkA1Vhd4QY4wOdMArbQMH9kgmXnEiTuFF1D3cJ3wW6ZeMS85KKLseHGId2usbXkB\/hRk1MUxX8h4uICYlKc3S5x4tEqWQUT9Lf9HqGEnFeXxSsojTdrfzQUCMUWQv8EXWvb1jR1Tdc+RXa\/ogMZ\/DB9V5lQJ7RavaCoJpAzyXjVDjTq4+YIskFx+iZ4DlKi8DSHr7xBZGTRk8V\/9yVpUl2eCRmSYRhOqR4loBAVrCwDw97sPepYUgn+BYGx2fsesa28\/0bwfWUK5qXkWaKu6zjeWCKOTW06L\/0CR6+G1w==\" 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<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpdj11rgzAUhu8F\/0NAJDcWWrXaejFQYy7HYGVQpBfWHtcwa0oS2Ir636ez+LEEAud9njckplmziqkA1Vhd4QY4wOdMArbQMH9kgmXnEiTuFF1D3cJ3wW6ZeMS85KKLseHGId2usbXkB\/hRk1MUxX8h4uICYlKc3S5x4tEqWQUT9Lf9HqGEnFeXxSsojTdrfzQUCMUWQv8EXWvb1jR1Tdc+RXa\/ogMZ\/DB9V5lQJ7RavaCoJpAzyXjVDjTq4+YIskFx+iZ4DlKi8DSHr7xBZGTRk8V\/9yVpUl2eCRmSYRhOqR4loBAVrCwDw97sPepYUgn+BYGx2fsesa28\/0bwfWUK5qXkWaKu6zjeWCKOTW06L\/0CR6+G1w==\" 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>Tham s\u1ed1 da PlantUML<\/h3>\n<p><strong>Phong c\u00e1ch chuy\u00ean nghi\u1ec7p:<\/strong><\/p>\n<p><img alt=\"Lu\u1ed3ng t\u1eeb \u1ee8ng d\u1ee5ng Frontend React v\u00e0 Redux Store \u0111\u1ebfn API Backend Node.js, M\u00e1y ch\u1ee7 Express v\u00e0 MongoDB, minh h\u1ecda vi\u1ec7c qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i t\u1eadp trung.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8e5b529f3.png\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TPEnRjj038Pt0Ne78XqwfR2Yrh6N8euj5HqQ1FKOPA0bMbOZ7G-ySvEqwBkNikJOLkJRo9_7xpzIkd4UnM_hAWm-mhUALrY1ywzLQOemS4-biIXOmmgpfq9uQ_8vLopm8TsTunAtmPoVzHwiiN9qBEqkPYo61ABHiQ8Syg-MWCLlE0mQ5tEkBHioViX8zYR-3GFGSzjtbiJfLRheH9QSf1EYwVLuSTKACn5-xkN_jVXxROW53S5j9vr3wqJYP3I0JhzSpqUTaBBno_8FGVJvZNd7VX1eclnPMfHEaka0RJoPfl7aGElISJoUHad7t3_b8XMj89DVx3c72J_y9CmypAnz793oxGiiFGizzbisJizqlEESFlroCBl__hvdycA5d8CboM-IJi_HumeTmSCFDWKlRlUu8tTmUVcrR-aaR0jEuITXM_3EG3_JbXsCXC5kGr8M6m-yxdi0cEl312jTTwxxHQsjqUYGQiqt-beNupS46fP2WDPMPOQ-P1C6EiBT1z1WRZJGd_G_\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TPEnRjj038Pt0Ne78XqwfR2Yrh6N8euj5HqQ1FKOPA0bMbOZ7G-ySvEqwBkNikJOLkJRo9_7xpzIkd4UnM_hAWm-mhUALrY1ywzLQOemS4-biIXOmmgpfq9uQ_8vLopm8TsTunAtmPoVzHwiiN9qBEqkPYo61ABHiQ8Syg-MWCLlE0mQ5tEkBHioViX8zYR-3GFGSzjtbiJfLRheH9QSf1EYwVLuSTKACn5-xkN_jVXxROW53S5j9vr3wqJYP3I0JhzSpqUTaBBno_8FGVJvZNd7VX1eclnPMfHEaka0RJoPfl7aGElISJoUHad7t3_b8XMj89DVx3c72J_y9CmypAnz793oxGiiFGizzbisJizqlEESFlroCBl__hvdycA5d8CboM-IJi_HumeTmSCFDWKlRlUu8tTmUVcrR-aaR0jEuITXM_3EG3_JbXsCXC5kGr8M6m-yxdi0cEl312jTTwxxHQsjqUYGQiqt-beNupS46fP2WDPMPOQ-P1C6EiBT1z1WRZJGd_G_\" 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 PlantUML 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VPEnRjim48Pt0Ng7GpfqIc55hMClGPnO0ZgqIECno41JZAX6vX4dgaaRv46wnIYA84EcR38wwKdq9g5j6PPbfznu_w_xVXt9uymmClaaTPttS2PHnS3BAPTWi7nGmAlPN-uwsNMYD2CsWJ7Zrp5Xhg9JJ97WNRXOJKicMOGtYUrqnT9CDAN5Xnn92GAlqrJIH0dpKmj0CX9TPokEj74aQ5aLZwhv8SU9HYMKWJlN0RjEsWa3Fpm8XxM850cg1Qz_s1qUB8K14TwqwlVRCUBo9MdIjOMnMBp9jgFnWyuETlZfyBHJ2o4gCqf-2V0-xeRA1BWiYoPOeVaFrGjxGNy7jTlhXtvlJQtBlj_jUq7DNltINaZM8LIqj-AiHtrnBXWtCD3wSeSKvRSmCaZYijrodlIDZbyn4X--Pp0u-xpTCxZL9B8CHe9-2AhrY1asPfc0YozsLZWyMU4QwM1__wWTQMExD6p2DxPBmrQ0TcLfMmTndSK9KH9B0tZLpW3mBQ-AFmhIyXyOgegfFMrxnwS9cAfurhQMgtZkunBhjpYkPh-XcZrPPsIVvLosirpSX3dls6xiEtu5\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n' Phong c\u00e1ch to\u00e0n c\u1ee5c\r\nskinparam backgroundColor #FFFFFF\r\nskinparam shadowing false\r\nskinparam roundcorner 10\r\nskinparam linetype ortho\r\n\r\n' Phong c\u00e1ch th\u00e0nh ph\u1ea7n\r\nskinparam component {\r\n    BackgroundColor #E3F2FD\r\n    BorderColor #1976D2\r\n    ArrowColor #1976D2\r\n}\r\n\r\n' Phong c\u00e1ch g\u00f3i\r\nskinparam package {\r\n    BackgroundColor #FFF3E0\r\n    BorderColor #F57C00\r\n    FontSize 14\r\n}\r\n\r\n' Phong c\u00e1ch ghi ch\u00fa\r\nskinparam note {\r\n    BackgroundColor #F1F8E9\r\n    BorderColor #689F38\r\n    FontColor #33691E\r\n}\r\n\r\npackage \"Frontend\" {\r\n    component [React App]\r\n    component [Redux Store]\r\n}\r\n\r\npackage \"Backend\" {\r\n    component [Node.js API]\r\n    component [Express Server]\r\n    database [MongoDB]\r\n}\r\n\r\n[React App] --&gt; [Redux Store]\r\n[Redux Store] --&gt; [Node.js API]\r\n[Node.js API] --&gt; [Express Server]\r\n[Express Server] --&gt; [MongoDB]\r\n\r\nnote right of [Redux Store]\r\n  Qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i t\u1eadp trung\r\n  cho to\u00e0n b\u1ed9 \u1ee9ng d\u1ee5ng\r\nend note\r\n\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VPEnRjim48Pt0Ng7GpfqIc55hMClGPnO0ZgqIECno41JZAX6vX4dgaaRv46wnIYA84EcR38wwKdq9g5j6PPbfznu_w_xVXt9uymmClaaTPttS2PHnS3BAPTWi7nGmAlPN-uwsNMYD2CsWJ7Zrp5Xhg9JJ97WNRXOJKicMOGtYUrqnT9CDAN5Xnn92GAlqrJIH0dpKmj0CX9TPokEj74aQ5aLZwhv8SU9HYMKWJlN0RjEsWa3Fpm8XxM850cg1Qz_s1qUB8K14TwqwlVRCUBo9MdIjOMnMBp9jgFnWyuETlZfyBHJ2o4gCqf-2V0-xeRA1BWiYoPOeVaFrGjxGNy7jTlhXtvlJQtBlj_jUq7DNltINaZM8LIqj-AiHtrnBXWtCD3wSeSKvRSmCaZYijrodlIDZbyn4X--Pp0u-xpTCxZL9B8CHe9-2AhrY1asPfc0YozsLZWyMU4QwM1__wWTQMExD6p2DxPBmrQ0TcLfMmTndSK9KH9B0tZLpW3mBQ-AFmhIyXyOgegfFMrxnwS9cAfurhQMgtZkunBhjpYkPh-XcZrPPsIVvLosirpSX3dls6xiEtu5\" \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 PlantUML 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\/#plantuml:TPEnRjj038Pt0Ne78XqwfR2Yrh6N8euj5HqQ1FKOPA0bMbOZ7G-ySvEqwBkNikJOLkJRo9_7xpzIkd4UnM_hAWm-mhUALrY1ywzLQOemS4-biIXOmmgpfq9uQ_8vLopm8TsTunAtmPoVzHwiiN9qBEqkPYo61ABHiQ8Syg-MWCLlE0mQ5tEkBHioViX8zYR-3GFGSzjtbiJfLRheH9QSf1EYwVLuSTKACn5-xkN_jVXxROW53S5j9vr3wqJYP3I0JhzSpqUTaBBno_8FGVJvZNd7VX1eclnPMfHEaka0RJoPfl7aGElISJoUHad7t3_b8XMj89DVx3c72J_y9CmypAnz793oxGiiFGizzbisJizqlEESFlroCBl__hvdycA5d8CboM-IJi_HumeTmSCFDWKlRlUu8tTmUVcrR-aaR0jEuITXM_3EG3_JbXsCXC5kGr8M6m-yxdi0cEl312jTTwxxHQsjqUYGQiqt-beNupS46fP2WDPMPOQ-P1C6EiBT1z1WRZJGd_G_\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TPEnRjj038Pt0Ne78XqwfR2Yrh6N8euj5HqQ1FKOPA0bMbOZ7G-ySvEqwBkNikJOLkJRo9_7xpzIkd4UnM_hAWm-mhUALrY1ywzLQOemS4-biIXOmmgpfq9uQ_8vLopm8TsTunAtmPoVzHwiiN9qBEqkPYo61ABHiQ8Syg-MWCLlE0mQ5tEkBHioViX8zYR-3GFGSzjtbiJfLRheH9QSf1EYwVLuSTKACn5-xkN_jVXxROW53S5j9vr3wqJYP3I0JhzSpqUTaBBno_8FGVJvZNd7VX1eclnPMfHEaka0RJoPfl7aGElISJoUHad7t3_b8XMj89DVx3c72J_y9CmypAnz793oxGiiFGizzbisJizqlEESFlroCBl__hvdycA5d8CboM-IJi_HumeTmSCFDWKlRlUu8tTmUVcrR-aaR0jEuITXM_3EG3_JbXsCXC5kGr8M6m-yxdi0cEl312jTTwxxHQsjqUYGQiqt-beNupS46fP2WDPMPOQ-P1C6EiBT1z1WRZJGd_G_\" 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 PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>Thu\u1ed9c t\u00ednh n\u00e2ng cao Graphviz<\/h3>\n<p><strong>S\u01a1 \u0111\u1ed3 m\u1ea1ng chuy\u00ean nghi\u1ec7p:<\/strong><\/p>\n<p><img alt=\"S\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng doanh nghi\u1ec7p hi\u1ec3n th\u1ecb c\u00e1c l\u1edbp Tr\u00ecnh b\u00e0y, Logic Kinh doanh v\u00e0 D\u1eef li\u1ec7u v\u1edbi c\u00e1c th\u00e0nh ph\u1ea7n Flutter, React, Node.js v\u00e0 PostgreSQL.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8e7dbd492.png\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqtVmtv2jAU\/T5p\/yHKvnbl1QRQl0q0Zd2kbmOlUj901eTYN+DV2JHtFLGq\/312HuQBdIu0IEF8rjn3+tyTC4QuJIqXzoQ8IY6BzPWGUb5wnt++cczV6ThXTISIOdk2pLWkYaJBZfEMvc8W9goXWDAhA\/ddNIrGEXLLUCS45mgFgfsJ2BNoiptRRX9D0PNLkKEQWOBOuQYZS6rAmW+UhpUzkXhJNWCdSPjBZ1KQBGsquDPlT1QKvgKu3QYPEzhwq2iMSNA99kpAIv6oIA56VZALAhnYzcCH0+xzq9AlRChhOt25o1AK3rdXoVeCyvTE7I8oY0COpEg4AVI9B\/A1JXoZ9P9SIJDFboEp2L7A8Z78Nd2QlGKdbu0ejw4U9tWKg1lieiqVs6Z66WCzEKv0zMaH2U6VhJnR8q0\/Y2lawjVKW\/6845dZNXyNNiDd06acmZoVuPAtDKJ+RKpfsGcuoj3P93C3Gi3v7iB07vMS7P0kjplRz1bxIZSdsxtAWDu9kXvk2OwFpX8SepFvwTLP2rrbfaik+SJCymDLny9NipT6I0u0EaY180u1ITsyh4miHJTaI\/F5EboWC4pbixxF0QC6h0QG3+t1D4g8mX3einAznd9aIJXAeun4l2pIEEXh8ITUJQgZwo81ca\/ssb9fb4mL9RXSsEab1pyvy0qQRnskvbRwa7eOIg\/Gh4Tsw5AM+vuFnEm6QnKzPXOxvjxP5ZwJpRcS5kaF3ok5q1qiGAJsn0oCsi4I8oiPhjVFbyD1ftkqQKQAW\/PjEfh4XOO\/QHgJFXZCVYal5BeZ0uahIdCO+6UxoaZmOr4ymexj\/v6sZspPt7ezecda02Tejo3x0Cf9umUKsEidP9L\/iy4vrWltA88FfgT9j3RHuQMJUksg9Qlu6zQpmk6yve7cSTtnyhyD0QgGuJEjBwvWnK\/e23RVIYq8ITbDoU60BfcVW0hgqPfa8htnm5aVZu\/FwfcQz7UEtLL\/pPKI\/RWoJBl69lUWLMz4Tgt++QMrEbZc\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">DOT<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqtVmtv2jAU\/T5p\/yHKvnbl1QRQl0q0Zd2kbmOlUj901eTYN+DV2JHtFLGq\/312HuQBdIu0IEF8rjn3+tyTC4QuJIqXzoQ8IY6BzPWGUb5wnt++cczV6ThXTISIOdk2pLWkYaJBZfEMvc8W9goXWDAhA\/ddNIrGEXLLUCS45mgFgfsJ2BNoiptRRX9D0PNLkKEQWOBOuQYZS6rAmW+UhpUzkXhJNWCdSPjBZ1KQBGsquDPlT1QKvgKu3QYPEzhwq2iMSNA99kpAIv6oIA56VZALAhnYzcCH0+xzq9AlRChhOt25o1AK3rdXoVeCyvTE7I8oY0COpEg4AVI9B\/A1JXoZ9P9SIJDFboEp2L7A8Z78Nd2QlGKdbu0ejw4U9tWKg1lieiqVs6Z66WCzEKv0zMaH2U6VhJnR8q0\/Y2lawjVKW\/6845dZNXyNNiDd06acmZoVuPAtDKJ+RKpfsGcuoj3P93C3Gi3v7iB07vMS7P0kjplRz1bxIZSdsxtAWDu9kXvk2OwFpX8SepFvwTLP2rrbfaik+SJCymDLny9NipT6I0u0EaY180u1ITsyh4miHJTaI\/F5EboWC4pbixxF0QC6h0QG3+t1D4g8mX3einAznd9aIJXAeun4l2pIEEXh8ITUJQgZwo81ca\/ssb9fb4mL9RXSsEab1pyvy0qQRnskvbRwa7eOIg\/Gh4Tsw5AM+vuFnEm6QnKzPXOxvjxP5ZwJpRcS5kaF3ok5q1qiGAJsn0oCsi4I8oiPhjVFbyD1ftkqQKQAW\/PjEfh4XOO\/QHgJFXZCVYal5BeZ0uahIdCO+6UxoaZmOr4ymexj\/v6sZspPt7ezecda02Tejo3x0Cf9umUKsEidP9L\/iy4vrWltA88FfgT9j3RHuQMJUksg9Qlu6zQpmk6yve7cSTtnyhyD0QgGuJEjBwvWnK\/e23RVIYq8ITbDoU60BfcVW0hgqPfa8htnm5aVZu\/FwfcQz7UEtLL\/pPKI\/RWoJBl69lUWLMz4Tgt++QMrEbZc\" 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 DOT 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\">DOT<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqtVV2L00AUfV\/wPwzxdd1+bfqBRtDFL1xl3S74ICKTmUkybjoTkumuq\/gsIoIiPiwiusiCgqIPgtg8+FDxf+SfeCdp2qS22IrpQ9o703vOnHvuHcrdEAceOkf3sCCMdtWBz4WLHpxYQfBUKmjH6yfxIUFq+El46OfzJH6BlJfET5CSw7cCkSQ+JtnuLNWt7Id+bJdIX4aWcdJpOx0HG5MlRwolcI9ZxmXm7zHFyfRqxO8zq9acBH1sM98yrvJk8EMgFQ4HBAGRRymd50CaSgwUhetxiAbi2vArh22\/viTxa1iNksE7ge71k8GxMqay+pJYRjEaYGpV18xJIMRiN2KBVSsGhaQsC1az4O3T2XuOemI4UKiXDL6RVMgnwss26jxF3RYVpzYJRlA42O9w32d0NZR9QRktHoiJfU6VZ9UXYkqSwRG8ZnBl1P0Xrp0ZVEpa4jCU++nW6lp7DscN8FovU3EviV9xFHgSKkuGR8QD4t8PEAErPM6pRn07syTx+5Fi4Z0ghHIJhRWXIrd4wVmbkDPQxvoIR7eHbw+M09MCZ\/oWwrnBWcOpO7T4B330fLVmNk1SLa5Ovt1kNro1YpDE77WP4ZjwgoUzdlg5u80wUajWNlaRhs9zNtdt02nq4ARo3+OKGbcLONekzX02G4DytLSHwk1xLvp9BSotAZOiPCwW6Q\/J7X7EBYuiuXL70uVk3LS6rsdLyO44ToNV58nOmmatOkf2c1tXxqpsX+ju6EAqw3VoxrW70ZQMjmO31mlZBtvHZLek9iV99hub48Rg2Jcg9Ci8RMoFlKVY4bmqQoU\/I19L2l\/GxG3HZJ15atZZizbqs9XcCnkPhweTg\/86goEbvykSgebUsyUVeUtGyg1ZF7SqrYMEkYcDZhF9+VAWlnXCJm3iVknnbRb4MGjGcOfT2R5hmRr6KVkag7RZk3RKGBuYeKyAEB8iAdPlVQrxqAccKI9SoA0PbqSsldLrsLco2J9VTodcOnoXGXB6dJw6W7Ly5Z2drW5FGxpIjMdPp9Wk9bLT8mB+5NGg+F\/pRtSmGwLCXUl2mVow3erIshRHHqPlC0HzBIhp6\/18ph1QueTxAkaj3WYNMoUxCuZZR\/n+UvdCUsdsERgv5aTj4CziuRwAM23hDV3YkX2XJL5S7MAZqbvQF9B7H2DYwh3\/QriF\/C1TfyZ0JVwBQHfl4W+vzS2y\" \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 DOT in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-dot\"><code class=\"language-dot\" data-language=\"dot\" class=\"language-dot\">digraph AdvancedStyling {\r\n    \/\/ Thu\u1ed9c t\u00ednh \u0111\u1ed3 th\u1ecb to\u00e0n c\u1ee5c\r\n    graph [\r\n        bgcolor=\"#f8f9fa\"\r\n        fontname=\"Helvetica\"\r\n        fontsize=16\r\n        label=\"Ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng doanh nghi\u1ec7pnM\u00f4i tr\u01b0\u1eddng s\u1ea3n xu\u1ea5t\"\r\n        labelloc=\"t\"\r\n        pad=0.5\r\n        ranksep=1.5\r\n        nodesep=1.0\r\n    ];\r\n    \r\n    \/\/ Thu\u1ed9c t\u00ednh n\u00fat m\u1eb7c \u0111\u1ecbnh\r\n    node [\r\n        fontname=\"Helvetica\"\r\n        fontsize=11\r\n        style=\"filled,rounded\"\r\n        penwidth=2\r\n    ];\r\n    \r\n    \/\/ Thu\u1ed9c t\u00ednh c\u1ea1nh m\u1eb7c \u0111\u1ecbnh\r\n    edge [\r\n        fontname=\"Helvetica\"\r\n        fontsize=9\r\n        penwidth=1.5\r\n        arrowsize=0.8\r\n    ];\r\n    \r\n    \/\/ C\u1ee5m n\u00fat v\u1edbi phong c\u00e1ch t\u00f9y ch\u1ec9nh\r\n    subgraph cluster_presentation {\r\n        label=\"L\u1edbp tr\u00ecnh b\u00e0y\";\r\n        style=filled;\r\n        color=\"#e3f2fd\";\r\n        fontcolor=\"#1565c0\";\r\n        \r\n        Web [label=\"\u1ee8ng d\u1ee5ng Web&lt;br\/&gt;React 18\", fillcolor=\"#64b5f6\", fontcolor=\"white\"];\r\n        Mobile [label=\"\u1ee8ng d\u1ee5ng di \u0111\u1ed9ng&lt;br\/&gt;Flutter\", fillcolor=\"#64b5f6\", fontcolor=\"white\"];\n    }\r\n    \r\n    subgraph cluster_business {\r\n        label=\"L\u1edbp logic nghi\u1ec7p v\u1ee5\";\r\n        style=filled;\r\n        color=\"#fff3e0\";\r\n        fontcolor=\"#e65100\";\r\n        \r\n        API [label=\"REST API&lt;br\/&gt;Node.js\", fillcolor=\"#ffb74d\", fontcolor=\"black\"];\r\n        GraphQL [label=\"C\u1ed5ng GraphQL\", fillcolor=\"#ffb74d\", fontcolor=\"black\"];\n    }\r\n    \r\n    subgraph cluster_data {\r\n        label=\"L\u1edbp d\u1eef li\u1ec7u\";\r\n        style=filled;\r\n        color=\"#e8f5e9\";\r\n        fontcolor=\"#2e7d32\";\r\n        \r\n        Primary [label=\"C\u01a1 s\u1edf d\u1eef li\u1ec7u ch\u00ednh&lt;br\/&gt;PostgreSQL 14\", shape=cylinder, fillcolor=\"#a5d6a7\"];\r\n        Replica [label=\"B\u1ea3n sao \u0111\u1ecdc&lt;br\/&gt;PostgreSQL 14\", shape=cylinder, fillcolor=\"#c8e6c9\"];\r\n        Cache [label=\"B\u1ed9 nh\u1edb \u0111\u1ec7m Redis&lt;br\/&gt;Ch\u1ebf \u0111\u1ed9 c\u1ee5m\", shape=cylinder, fillcolor=\"#c8e6c9\"];\n    }\r\n    \r\n    \/\/ C\u1ea1nh v\u1edbi phong c\u00e1ch t\u00f9y ch\u1ec9nh\r\n    Web -&gt; API [label=\"HTTPS\/REST\", color=\"#1976d2\", fontcolor=\"#1976d2\"];\r\n    Mobile -&gt; API [label=\"HTTPS\/REST\", color=\"#1976d2\", fontcolor=\"#1976d2\"];\r\n    Web -&gt; GraphQL [label=\"WebSocket\", color=\"#1976d2\", fontcolor=\"#1976d2\", style=dashed];\r\n    \r\n    API -&gt; Primary [label=\"\u0110\u1ecdc\/Ghi\", color=\"#388e3c\", fontcolor=\"#388e3c\"];\r\n    API -&gt; Cache [label=\"B\u1ed9 nh\u1edb \u0111\u1ec7m\", color=\"#f57c00\", fontcolor=\"#f57c00\", style=dashed];\r\n    GraphQL -&gt; Replica [label=\"Ch\u1ec9 \u0111\u1ecdc\", color=\"#388e3c\", fontcolor=\"#388e3c\"];\r\n    \n    Primary -&gt; Replica [label=\"Sao ch\u00e9p lu\u1ed3ng\", color=\"#757575\", style=dotted];\n}\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqtVV2L00AUfV\/wPwzxdd1+bfqBRtDFL1xl3S74ICKTmUkybjoTkumuq\/gsIoIiPiwiusiCgqIPgtg8+FDxf+SfeCdp2qS22IrpQ9o703vOnHvuHcrdEAceOkf3sCCMdtWBz4WLHpxYQfBUKmjH6yfxIUFq+El46OfzJH6BlJfET5CSw7cCkSQ+JtnuLNWt7Id+bJdIX4aWcdJpOx0HG5MlRwolcI9ZxmXm7zHFyfRqxO8zq9acBH1sM98yrvJk8EMgFQ4HBAGRRymd50CaSgwUhetxiAbi2vArh22\/viTxa1iNksE7ge71k8GxMqay+pJYRjEaYGpV18xJIMRiN2KBVSsGhaQsC1az4O3T2XuOemI4UKiXDL6RVMgnwss26jxF3RYVpzYJRlA42O9w32d0NZR9QRktHoiJfU6VZ9UXYkqSwRG8ZnBl1P0Xrp0ZVEpa4jCU++nW6lp7DscN8FovU3EviV9xFHgSKkuGR8QD4t8PEAErPM6pRn07syTx+5Fi4Z0ghHIJhRWXIrd4wVmbkDPQxvoIR7eHbw+M09MCZ\/oWwrnBWcOpO7T4B330fLVmNk1SLa5Ovt1kNro1YpDE77WP4ZjwgoUzdlg5u80wUajWNlaRhs9zNtdt02nq4ARo3+OKGbcLONekzX02G4DytLSHwk1xLvp9BSotAZOiPCwW6Q\/J7X7EBYuiuXL70uVk3LS6rsdLyO44ToNV58nOmmatOkf2c1tXxqpsX+ju6EAqw3VoxrW70ZQMjmO31mlZBtvHZLek9iV99hub48Rg2Jcg9Ci8RMoFlKVY4bmqQoU\/I19L2l\/GxG3HZJ15atZZizbqs9XcCnkPhweTg\/86goEbvykSgebUsyUVeUtGyg1ZF7SqrYMEkYcDZhF9+VAWlnXCJm3iVknnbRb4MGjGcOfT2R5hmRr6KVkag7RZk3RKGBuYeKyAEB8iAdPlVQrxqAccKI9SoA0PbqSsldLrsLco2J9VTodcOnoXGXB6dJw6W7Ly5Z2drW5FGxpIjMdPp9Wk9bLT8mB+5NGg+F\/pRtSmGwLCXUl2mVow3erIshRHHqPlC0HzBIhp6\/18ph1QueTxAkaj3WYNMoUxCuZZR\/n+UvdCUsdsERgv5aTj4CziuRwAM23hDV3YkX2XJL5S7MAZqbvQF9B7H2DYwh3\/QriF\/C1TfyZ0JVwBQHfl4W+vzS2y\" \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 DOT 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\/#graphviz:eNqtVmtv2jAU\/T5p\/yHKvnbl1QRQl0q0Zd2kbmOlUj901eTYN+DV2JHtFLGq\/312HuQBdIu0IEF8rjn3+tyTC4QuJIqXzoQ8IY6BzPWGUb5wnt++cczV6ThXTISIOdk2pLWkYaJBZfEMvc8W9goXWDAhA\/ddNIrGEXLLUCS45mgFgfsJ2BNoiptRRX9D0PNLkKEQWOBOuQYZS6rAmW+UhpUzkXhJNWCdSPjBZ1KQBGsquDPlT1QKvgKu3QYPEzhwq2iMSNA99kpAIv6oIA56VZALAhnYzcCH0+xzq9AlRChhOt25o1AK3rdXoVeCyvTE7I8oY0COpEg4AVI9B\/A1JXoZ9P9SIJDFboEp2L7A8Z78Nd2QlGKdbu0ejw4U9tWKg1lieiqVs6Z66WCzEKv0zMaH2U6VhJnR8q0\/Y2lawjVKW\/6845dZNXyNNiDd06acmZoVuPAtDKJ+RKpfsGcuoj3P93C3Gi3v7iB07vMS7P0kjplRz1bxIZSdsxtAWDu9kXvk2OwFpX8SepFvwTLP2rrbfaik+SJCymDLny9NipT6I0u0EaY180u1ITsyh4miHJTaI\/F5EboWC4pbixxF0QC6h0QG3+t1D4g8mX3einAznd9aIJXAeun4l2pIEEXh8ITUJQgZwo81ca\/ssb9fb4mL9RXSsEab1pyvy0qQRnskvbRwa7eOIg\/Gh4Tsw5AM+vuFnEm6QnKzPXOxvjxP5ZwJpRcS5kaF3ok5q1qiGAJsn0oCsi4I8oiPhjVFbyD1ftkqQKQAW\/PjEfh4XOO\/QHgJFXZCVYal5BeZ0uahIdCO+6UxoaZmOr4ymexj\/v6sZspPt7ezecda02Tejo3x0Cf9umUKsEidP9L\/iy4vrWltA88FfgT9j3RHuQMJUksg9Qlu6zQpmk6yve7cSTtnyhyD0QgGuJEjBwvWnK\/e23RVIYq8ITbDoU60BfcVW0hgqPfa8htnm5aVZu\/FwfcQz7UEtLL\/pPKI\/RWoJBl69lUWLMz4Tgt++QMrEbZc\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#graphviz:eNqtVmtv2jAU\/T5p\/yHKvnbl1QRQl0q0Zd2kbmOlUj901eTYN+DV2JHtFLGq\/312HuQBdIu0IEF8rjn3+tyTC4QuJIqXzoQ8IY6BzPWGUb5wnt++cczV6ThXTISIOdk2pLWkYaJBZfEMvc8W9goXWDAhA\/ddNIrGEXLLUCS45mgFgfsJ2BNoiptRRX9D0PNLkKEQWOBOuQYZS6rAmW+UhpUzkXhJNWCdSPjBZ1KQBGsquDPlT1QKvgKu3QYPEzhwq2iMSNA99kpAIv6oIA56VZALAhnYzcCH0+xzq9AlRChhOt25o1AK3rdXoVeCyvTE7I8oY0COpEg4AVI9B\/A1JXoZ9P9SIJDFboEp2L7A8Z78Nd2QlGKdbu0ejw4U9tWKg1lieiqVs6Z66WCzEKv0zMaH2U6VhJnR8q0\/Y2lawjVKW\/6845dZNXyNNiDd06acmZoVuPAtDKJ+RKpfsGcuoj3P93C3Gi3v7iB07vMS7P0kjplRz1bxIZSdsxtAWDu9kXvk2OwFpX8SepFvwTLP2rrbfaik+SJCymDLny9NipT6I0u0EaY180u1ITsyh4miHJTaI\/F5EboWC4pbixxF0QC6h0QG3+t1D4g8mX3einAznd9aIJXAeun4l2pIEEXh8ITUJQgZwo81ca\/ssb9fb4mL9RXSsEab1pyvy0qQRnskvbRwa7eOIg\/Gh4Tsw5AM+vuFnEm6QnKzPXOxvjxP5ZwJpRcS5kaF3ok5q1qiGAJsn0oCsi4I8oiPhjVFbyD1ftkqQKQAW\/PjEfh4XOO\/QHgJFXZCVYal5BeZ0uahIdCO+6UxoaZmOr4ymexj\/v6sZspPt7ezecda02Tejo3x0Cf9umUKsEidP9L\/iy4vrWltA88FfgT9j3RHuQMJUksg9Qlu6zQpmk6yve7cSTtnyhyD0QgGuJEjBwvWnK\/e23RVIYq8ITbDoU60BfcVW0hgqPfa8htnm5aVZu\/FwfcQz7UEtLL\/pPKI\/RWoJBl69lUWLMz4Tgt++QMrEbZc\" 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 DOT trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr\/>\n<h2>8. Quy tr\u00ecnh c\u1ed9ng t\u00e1c v\u00e0 chia s\u1ebb {#collaboration}<\/h2>\n<h3>T\u1ea1o s\u01a1 \u0111\u1ed3 c\u00f3 th\u1ec3 chia s\u1ebb<\/h3>\n<p><strong>Chia s\u1ebb t\u1eebng b\u01b0\u1edbc:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>T\u1ea1o li\u00ean k\u1ebft chia s\u1ebb:<\/strong><\/p>\n<ul>\n<li>\n<p>Nh\u1ea5n n\u00fat \u201cChia s\u1ebb\u201d trong VPasCode<\/p>\n<\/li>\n<li>\n<p>Sao ch\u00e9p URL \u0111\u00e3 t\u1ea1o<\/p>\n<\/li>\n<li>\n<p>Chia s\u1ebb qua email, Slack ho\u1eb7c t\u00e0i li\u1ec7u<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Nh\u00fang v\u00e0o t\u00e0i li\u1ec7u:<\/strong><\/p>\n<pre class=\"lang-markdown\"><code data-language=\"markdown\">## Ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng\r\n\r\n![S\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac](https:\/\/www.vpascode.com\/share\/abc123xyz.svg)\r\n\r\nHo\u1eb7c nh\u00fang phi\u00ean b\u1ea3n t\u01b0\u01a1ng t\u00e1c:\r\n&lt;iframe src=\"https:\/\/www.vpascode.com\/embed\/abc123xyz\" width=\"100%\" height=\"600\"&gt;&lt;\/iframe&gt;\r\n\r\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Xu\u1ea5t cho b\u00e0i thuy\u1ebft tr\u00ecnh:<\/strong><\/p>\n<ul>\n<li>\n<p>SVG cho \u0111\u1ed3 h\u1ecda web c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng<\/p>\n<\/li>\n<li>\n<p>PNG (300 DPI) cho PowerPoint\/Keynote<\/p>\n<\/li>\n<li>\n<p>PDF cho t\u00e0i li\u1ec7u in<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>T\u00edch h\u1ee3p ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n<\/h3>\n<p><strong>L\u01b0u m\u00e3 s\u01a1 \u0111\u1ed3 trong Git:<\/strong><\/p>\n<pre><code>project-root\/\r\n\u251c\u2500\u2500 docs\/\r\n\u2502   \u251c\u2500\u2500 diagrams\/\r\n\u2502   \u2502   \u251c\u2500\u2500 architecture\/\r\n\u2502   \u2502   \u2502   \u251c\u2500\u2500 system-overview.puml\r\n\u2502   \u2502   \u2502   \u251c\u2500\u2500 deployment-view.puml\r\n\u2502   \u2502   \u2502   \u2514\u2500\u2500 data-flow.mmd\r\n\u2502   \u2502   \u251c\u2500\u2500 processes\/\r\n\u2502   \u2502   \u2502   \u2514\u2500\u2500 user-journey.mmd\r\n\u2502   \u2502   \u2514\u2500\u2500 infrastructure\/\r\n\u2502   \u2502       \u2514\u2500\u2500 aws-architecture.dot\r\n\u2502   \u2514\u2500\u2500 README.md\r\n\u2514\u2500\u2500 src\/\r\n<\/code><\/pre>\n<p><strong>Quy tr\u00ecnh Git m\u1eabu:<\/strong><\/p>\n<pre class=\"lang-bash\"><code data-language=\"bash\"># T\u1ea1o s\u01a1 \u0111\u1ed3\r\necho '@startuml\r\ncomponent \"API Gateway\"\r\n@enduml' &gt; docs\/diagrams\/architecture\/gateway.puml\r\n\r\n# Cam k\u1ebft thay \u0111\u1ed5i\r\ngit add docs\/diagrams\/architecture\/gateway.puml\r\ngit commit -m \"Th\u00eam s\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac API Gateway\"\r\ngit push\r\n\r\n# Th\u00e0nh vi\u00ean trong nh\u00f3m gi\u1edd c\u00f3 th\u1ec3 xem trong VPasCode\r\n# b\u1eb1ng c\u00e1ch d\u00e1n m\u00e3 ho\u1eb7c t\u1ea3i t\u1eeb URL\r\n<\/code><\/pre>\n<h3>M\u1eabu h\u1ee3p t\u00e1c nh\u00f3m<\/h3>\n<p><strong>M\u1eabu 1: B\u1ea3n ghi quy\u1ebft \u0111\u1ecbnh ki\u1ebfn tr\u00fac (ADRs)<\/strong><\/p>\n<pre class=\"lang-markdown\"><code data-language=\"markdown\"># ADR-007: M\u1eabu giao ti\u1ebfp vi d\u1ecbch v\u1ee5\r\n\r\n## B\u1ed1i c\u1ea3nh\r\nCh\u00fang ta c\u1ea7n chu\u1ea9n h\u00f3a c\u00e1ch c\u00e1c vi d\u1ecbch v\u1ee5 giao ti\u1ebfp.\r\n\r\n## Quy\u1ebft \u0111\u1ecbnh\r\nS\u1eed d\u1ee5ng tin nh\u1eafn b\u1ea5t \u0111\u1ed3ng b\u1ed9 qua RabbitMQ cho giao ti\u1ebfp gi\u1eefa c\u00e1c d\u1ecbch v\u1ee5.\r\n\r\n## S\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac\r\n\r\n```mermaid\r\ngraph LR\r\n    A[Service A] --&gt;|Publish| B[(RabbitMQ)]\r\n    B --&gt;|Subscribe| C[Service B]\r\n    B --&gt;|Subscribe| D[Service C]\r\n<\/code><\/pre>\n<h2>H\u1ec7 qu\u1ea3<\/h2>\n<ul>\n<li>\n<p>T\u00e1ch r\u1eddi t\u1ed1t h\u01a1n<\/p>\n<\/li>\n<li>\n<p>Kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng t\u1ed1t h\u01a1n<\/p>\n<\/li>\n<li>\n<p>T\u0103ng \u0111\u1ed9 ph\u1ee9c t\u1ea1p trong x\u1eed l\u00fd tin nh\u1eafn<\/p>\n<\/li>\n<\/ul>\n<pre><code>\r\n**M\u1eabu 2: T\u00e0i li\u1ec7u l\u1eadp k\u1ebf ho\u1ea1ch Sprint**\r\n\r\nT\u1ea1o c\u00e1c s\u01a1 \u0111\u1ed3 s\u1ed1ng \u0111\u1ed9ng ph\u00e1t tri\u1ec3n c\u00f9ng Sprint c\u1ee7a b\u1ea1n:\r\n<\/code><\/pre>\n<p><img alt=\"B\u1ea3ng Kanban Sprint 24 hi\u1ec3n th\u1ecb c\u00e1c nhi\u1ec7m v\u1ee5 \u0111\u00e3 ho\u00e0n th\u00e0nh, \u0111ang th\u1ef1c hi\u1ec7n, c\u1ea7n l\u00e0m v\u00e0 b\u1ecb ch\u1eb7n nh\u01b0 M\u00f4-\u0111un X\u00e1c th\u1ef1c Ng\u01b0\u1eddi d\u00f9ng, Ph\u00e1t tri\u1ec3n API v\u00e0 T\u00edch h\u1ee3p b\u00ean th\u1ee9 ba.\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/06\/img_6a1e8f5b49dbe.png\"\/><\/p>\n<pre><code><\/code><\/pre>\n<pre><code>graph TD\r\n    subgraph Sprint24[\"Sprint 24 - \u0110ang th\u1ef1c hi\u1ec7n\"]\r\n        Done[\u2705 Nhi\u1ec7m v\u1ee5 \u0111\u00e3 ho\u00e0n th\u00e0nh]\r\n        InProgress[\ud83d\udd04 \u0110ang th\u1ef1c hi\u1ec7n]\r\n        ToDo[\ud83d\udccb C\u1ea7n l\u00e0m]\r\n        Blocked[\u26d4 B\u1ecb ch\u1eb7n]\r\n    end\r\n    \r\n    Done --&gt; Task1[Module x\u00e1c th\u1ef1c ng\u01b0\u1eddi d\u00f9ng]\r\n    Done --&gt; Task2[Di chuy\u1ec3n c\u01a1 s\u1edf d\u1eef li\u1ec7u]\r\n    \r\n    InProgress --&gt; Task3[Ph\u00e1t tri\u1ec3n API]\r\n    InProgress --&gt; Task4[T\u00edch h\u1ee3p giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng]\r\n    \r\n    ToDo --&gt; Task5[Ki\u1ec3m th\u1eed \u0111\u01a1n v\u1ecb]\r\n    ToDo --&gt; Task6[T\u00e0i li\u1ec7u h\u00f3a]\r\n    \r\n    Blocked --&gt; Task7[T\u00edch h\u1ee3p b\u00ean th\u1ee9 ba]\r\n    \r\n    style Done fill:#d4edda,stroke:#28a745\r\n    style InProgress fill:#fff3cd,stroke:#ffc107\r\n    style ToDo fill:#e2e3e5,stroke:#6c757d\r\n    style Blocked fill:#f8d7da,stroke:#dc3545\r\n<\/code><\/pre>\n<hr\/>\n<h2>K\u1ebft lu\u1eadn: H\u00e0nh tr\u00ecnh c\u1ee7a b\u1ea1n \u0111\u1ebfn v\u1edbi s\u1ef1 xu\u1ea5t s\u1eafc trong t\u00e0i li\u1ec7u h\u00f3a<\/h2>\n<p>Ch\u00fac m\u1eebng! B\u1ea1n \u0111\u00e3 ho\u00e0n th\u00e0nh h\u00e0nh tr\u00ecnh to\u00e0n di\u1ec7n qua VPasCode v\u00e0 ph\u01b0\u01a1ng ph\u00e1p lu\u1eadn S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng M\u00e3. H\u00e3y c\u00f9ng nh\u00ecn l\u1ea1i nh\u1eefng g\u00ec b\u1ea1n \u0111\u00e3 h\u1ecdc v\u00e0 v\u1ea1ch ra l\u1ed9 tr\u00ecnh ti\u1ebfp theo.<\/p>\n<h3>Nh\u1eefng g\u00ec b\u1ea1n \u0111\u00e3 th\u00e0nh th\u1ea1o<\/h3>\n<p>Su\u1ed1t kh\u00f3a h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n \u0111\u00e3 kh\u00e1m ph\u00e1:<\/p>\n<ol>\n<li>\n<p><strong>S\u1ee9c m\u1ea1nh c\u1ee7a s\u01a1 \u0111\u1ed3 d\u1ef1a tr\u00ean v\u0103n b\u1ea3n<\/strong>: B\u1ea1n \u0111\u00e3 th\u1ea5y c\u00e1ch vi\u1ebft m\u00e3 \u0111\u1ec3 t\u1ea1o s\u01a1 \u0111\u1ed3 lo\u1ea1i b\u1ecf s\u1ef1 c\u1ed3ng k\u1ec1nh c\u1ee7a vi\u1ec7c \u0111\u1ecbnh v\u1ecb th\u1ee7 c\u00f4ng, \u0111\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n v\u00e0 gi\u00fap t\u00e0i li\u1ec7u d\u1ec5 b\u1ea3o tr\u00ec.<\/p>\n<\/li>\n<li>\n<p><strong>Ba c\u00f4ng c\u1ee5 ti\u00eau chu\u1ea9n ng\u00e0nh<\/strong>: B\u1ea1n gi\u1edd \u0111\u00e3 c\u00f3 k\u1ef9 n\u0103ng th\u1ef1c t\u1ebf trong:<\/p>\n<ul>\n<li>\n<p><strong>Mermaid.js<\/strong>\u00a0cho s\u01a1 \u0111\u1ed3 lu\u1ed3ng th\u00e2n thi\u1ec7n v\u1edbi l\u1eadp tr\u00ecnh vi\u00ean v\u00e0 t\u00e0i li\u1ec7u hi\u1ec7n \u0111\u1ea1i<\/p>\n<\/li>\n<li>\n<p><strong>PlantUML<\/strong>\u00a0cho s\u01a1 \u0111\u1ed3 UML v\u00e0 ki\u1ebfn tr\u00fac \u1edf m\u1ee9c \u0111\u1ed9 doanh nghi\u1ec7p<\/p>\n<\/li>\n<li>\n<p><strong>Graphviz<\/strong>\u00a0cho c\u00e1c c\u1ea5u tr\u00fac m\u1ea1ng ph\u1ee9c t\u1ea1p v\u00e0 tr\u1ef1c quan h\u00f3a m\u1ed1i quan h\u1ec7<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>C\u00e1c m\u1eabu th\u1ef1c t\u1ebf<\/strong>: T\u1eeb ki\u1ebfn tr\u00fac vi d\u1ecbch v\u1ee5 \u0111\u1ebfn l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u, quy tr\u00ecnh CI\/CD \u0111\u1ebfn s\u01a1 \u0111\u1ed3 t\u1ed5 ch\u1ee9c\u2014b\u1ea1n \u0111\u00e3 h\u1ecdc c\u00e1ch tr\u1ef1c quan h\u00f3a h\u1ea7u nh\u01b0 b\u1ea5t k\u1ef3 h\u1ec7 th\u1ed1ng ho\u1eb7c quy tr\u00ecnh n\u00e0o.<\/p>\n<\/li>\n<li>\n<p><strong>Quy tr\u00ecnh c\u1ed9ng t\u00e1c<\/strong>: B\u1ea1n hi\u1ec3u c\u00e1ch chia s\u1ebb s\u01a1 \u0111\u1ed3 qua URL, nh\u00fang ch\u00fang v\u00e0o t\u00e0i li\u1ec7u, t\u00edch h\u1ee3p v\u1edbi ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n v\u00e0 t\u1ef1 \u0111\u1ed9ng h\u00f3a vi\u1ec7c t\u1ea1o s\u01a1 \u0111\u1ed3 trong c\u00e1c quy tr\u00ecnh CI\/CD.<\/p>\n<\/li>\n<li>\n<p><strong>Phong c\u00e1ch chuy\u00ean nghi\u1ec7p<\/strong>: B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o h\u00ecnh \u1ea3nh ch\u1ea5t l\u01b0\u1ee3ng xu\u1ea5t b\u1ea3n v\u1edbi ch\u1ee7 \u0111\u1ec1 t\u00f9y ch\u1ec9nh, th\u01b0\u01a1ng hi\u1ec7u nh\u1ea5t qu\u00e1n v\u00e0 m\u1ee9c \u0111\u1ed9 chi ti\u1ebft ph\u00f9 h\u1ee3p cho c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng kh\u00e1c nhau.<\/p>\n<\/li>\n<\/ol>\n<h3>B\u1ee9c tranh to\u00e0n c\u1ea3nh<\/h3>\n<p>\u0110i\u1ec1u khi\u1ebfn VPasCode th\u1ef1c s\u1ef1 mang t\u00ednh chuy\u1ec3n \u0111\u1ed5i kh\u00f4ng ch\u1ec9 l\u00e0 c\u00f4ng c\u1ee5 n\u00e0y\u2014m\u00e0 l\u00e0 s\u1ef1 thay \u0111\u1ed5i m\u00f4 h\u00ecnh m\u00e0 n\u00f3 \u0111\u1ea1i di\u1ec7n. B\u1eb1ng c\u00e1ch coi s\u01a1 \u0111\u1ed3 l\u00e0 m\u00e3, b\u1ea1n \u0111ang:<\/p>\n<ul>\n<li>\n<p><strong>Thu h\u1eb9p kho\u1ea3ng c\u00e1ch<\/strong>\u00a0gi\u1eefa vi\u1ec7c tri\u1ec3n khai v\u00e0 t\u00e0i li\u1ec7u h\u00f3a<\/p>\n<\/li>\n<li>\n<p><strong>D\u00e2n ch\u1ee7 h\u00f3a ki\u1ebfn tr\u00fac<\/strong>\u00a0b\u1eb1ng c\u00e1ch l\u00e0m cho n\u00f3 d\u1ec5 ti\u1ebfp c\u1eadn v\u1edbi m\u1ecdi ng\u01b0\u1eddi trong nh\u00f3m<\/p>\n<\/li>\n<li>\n<p><strong>B\u1ea3o v\u1ec7 ki\u1ebfn th\u1ee9c tr\u01b0\u1edbc t\u01b0\u01a1ng lai<\/strong>\u00a0th\u00f4ng qua c\u00e1c t\u00e0i li\u1ec7u d\u1ef1a tr\u00ean v\u0103n b\u1ea3n v\u00e0 \u0111\u01b0\u1ee3c ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n<\/p>\n<\/li>\n<li>\n<p><strong>T\u0103ng t\u1ed1c qu\u00e1 tr\u00ecnh h\u1ed9i nh\u1eadp<\/strong>\u00a0v\u1edbi t\u00e0i li\u1ec7u r\u00f5 r\u00e0ng v\u00e0 c\u00f3 th\u1ec3 th\u1ef1c thi<\/p>\n<\/li>\n<li>\n<p><strong>Gi\u1ea3m n\u1ee3 k\u1ef9 thu\u1eadt<\/strong>\u00a0b\u1eb1ng c\u00e1ch l\u00e0m cho vi\u1ec7c c\u1eadp nh\u1eadt \u0111\u01a1n gi\u1ea3n nh\u01b0 vi\u1ec7c ch\u1ec9nh s\u1eeda v\u0103n b\u1ea3n<\/p>\n<\/li>\n<\/ul>\n<h3>C\u00e1c b\u01b0\u1edbc ti\u1ebfp theo c\u1ee7a b\u1ea1n<\/h3>\n<p><strong>Tu\u1ea7n 1: B\u1eaft \u0111\u1ea7u nh\u1ecf<\/strong><\/p>\n<ul>\n<li>\n<p>Ch\u1ecdn m\u1ed9t s\u01a1 \u0111\u1ed3 hi\u1ec7n c\u00f3 trong t\u1ed5 ch\u1ee9c c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<li>\n<p>T\u00e1i t\u1ea1o n\u00f3 trong VPasCode b\u1eb1ng c\u00f4ng c\u1ee5 \u01b0a th\u00edch c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<li>\n<p>Chia s\u1ebb n\u00f3 v\u1edbi \u0111\u1ed3ng nghi\u1ec7p v\u00e0 thu th\u1eadp ph\u1ea3n h\u1ed3i<\/p>\n<\/li>\n<li>\n<p>L\u01b0u tr\u1eef m\u00e3 trong kho l\u01b0u tr\u1eef d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<\/ul>\n<p><strong>Tu\u1ea7n 2-3: X\u00e2y d\u1ef1ng \u0111\u00e0<\/strong><\/p>\n<ul>\n<li>\n<p>T\u1ea1o m\u1eabu cho c\u00e1c lo\u1ea1i s\u01a1 \u0111\u1ed3 ph\u1ed5 bi\u1ebfn c\u1ee7a nh\u00f3m<\/p>\n<\/li>\n<li>\n<p>X\u00e2y d\u1ef1ng quy \u01b0\u1edbc \u0111\u1eb7t t\u00ean v\u00e0 h\u01b0\u1edbng d\u1eabn v\u1ec1 phong c\u00e1ch<\/p>\n<\/li>\n<li>\n<p>T\u00edch h\u1ee3p vi\u1ec7c xem x\u00e9t s\u01a1 \u0111\u1ed3 v\u00e0o quy tr\u00ecnh xem x\u00e9t m\u00e3 ngu\u1ed3n<\/p>\n<\/li>\n<li>\n<p>T\u00e0i li\u1ec7u h\u00f3a quy tr\u00ecnh \u201cS\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3\u201d c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<\/ul>\n<p><strong>Th\u00e1ng 2: M\u1edf r\u1ed9ng v\u00e0 t\u1ef1 \u0111\u1ed9ng h\u00f3a<\/strong><\/p>\n<ul>\n<li>\n<p>Thi\u1ebft l\u1eadp t\u00edch h\u1ee3p CI\/CD \u0111\u1ec3 t\u1ea1o s\u01a1 \u0111\u1ed3 t\u1ef1 \u0111\u1ed9ng<\/p>\n<\/li>\n<li>\n<p>T\u1ea1o th\u01b0 vi\u1ec7n s\u01a1 \u0111\u1ed3 cho t\u1ed5 ch\u1ee9c c\u1ee7a b\u1ea1n<\/p>\n<\/li>\n<li>\n<p>\u0110\u00e0o t\u1ea1o th\u00e0nh vi\u00ean nh\u00f3m v\u1ec1 quy tr\u00ecnh<\/p>\n<\/li>\n<li>\n<p>\u0110o l\u01b0\u1eddng th\u1eddi gian ti\u1ebft ki\u1ec7m \u0111\u01b0\u1ee3c v\u00e0 c\u1ea3i thi\u1ec7n ch\u1ea5t l\u01b0\u1ee3ng t\u00e0i li\u1ec7u<\/p>\n<\/li>\n<\/ul>\n<p><strong>Th\u00e1ng 3+: Bi\u1ebfn n\u00f3 th\u00e0nh v\u0103n h\u00f3a<\/strong><\/p>\n<ul>\n<li>\n<p>\u0110\u1ec1 xu\u1ea5t \u00e1p d\u1ee5ng s\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 trong c\u00e1c quy\u1ebft \u0111\u1ecbnh ki\u1ebfn tr\u00fac<\/p>\n<\/li>\n<li>\n<p>Chia s\u1ebb c\u00e1c c\u00e2u chuy\u1ec7n th\u00e0nh c\u00f4ng v\u1edbi l\u00e3nh \u0111\u1ea1o<\/p>\n<\/li>\n<li>\n<p>\u0110\u00f3ng g\u00f3p l\u1ea1i c\u00e1c m\u1eabu cho c\u1ed9ng \u0111\u1ed3ng<\/p>\n<\/li>\n<li>\n<p>Kh\u00e1m ph\u00e1 c\u00e1c t\u00ednh n\u0103ng n\u00e2ng cao nh\u01b0 t\u1ea1o s\u01a1 \u0111\u1ed3 h\u1ed7 tr\u1ee3 b\u1edfi AI<\/p>\n<\/li>\n<\/ul>\n<h3>L\u1ee3i th\u1ebf c\u1ea1nh tranh<\/h3>\n<p>C\u00e1c t\u1ed5 ch\u1ee9c th\u00e0nh th\u1ea1o S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3 s\u1ebd \u0111\u1ea1t \u0111\u01b0\u1ee3c nh\u1eefng l\u1ee3i th\u1ebf \u0111\u00e1ng k\u1ec3:<br \/>\n\u2705\u00a0<strong>Ra quy\u1ebft \u0111\u1ecbnh nhanh h\u01a1n<\/strong>: H\u00ecnh \u1ea3nh r\u00f5 r\u00e0ng th\u00fac \u0111\u1ea9y vi\u1ec7c hi\u1ec3u v\u00e0 th\u1ed1ng nh\u1ea5t nhanh h\u01a1n<br \/>\n\u2705\u00a0<strong>Gi\u1ea3m th\u1eddi gian h\u1ed9i nh\u1eadp<\/strong>: K\u1ef9 s\u01b0 m\u1edbi n\u1eafm b\u1eaft h\u1ec7 th\u1ed1ng nhanh h\u01a1n th\u00f4ng qua t\u00e0i li\u1ec7u c\u00f3 th\u1ec3 th\u1ef1c thi<br \/>\n\u2705\u00a0<strong>Giao ti\u1ebfp t\u1ed1t h\u01a1n v\u1edbi c\u00e1c b\u00ean li\u00ean quan<\/strong>: S\u01a1 \u0111\u1ed3 chuy\u00ean nghi\u1ec7p k\u1ebft n\u1ed1i g\u00f3c nh\u00ecn k\u1ef9 thu\u1eadt v\u00e0 kinh doanh<br \/>\n\u2705\u00a0<strong>Gi\u1ea3m g\u00e1nh n\u1eb7ng b\u1ea3o tr\u00ec<\/strong>: C\u1eadp nh\u1eadt v\u0103n b\u1ea3n nhanh h\u01a1n vi\u1ec7c v\u1ebd l\u1ea1i h\u00ecnh \u1ea3nh<br \/>\n\u2705\u00a0<strong>N\u00e2ng cao ch\u1ea5t l\u01b0\u1ee3ng m\u00e3<\/strong>: Vi\u1ec7c v\u1ebd s\u01a1 \u0111\u1ed3 gi\u00fap ph\u00e1t hi\u1ec7n s\u1edbm c\u00e1c v\u1ea5n \u0111\u1ec1 v\u1ec1 ki\u1ebfn tr\u00fac<\/p>\n<h3>Tham gia phong tr\u00e0o<\/h3>\n<p>B\u1ea1n gi\u1edd \u0111\u00e2y \u0111\u00e3 l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a c\u1ed9ng \u0111\u1ed3ng ng\u00e0y c\u00e0ng ph\u00e1t tri\u1ec3n g\u1ed3m c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n, ki\u1ebfn tr\u00fac s\u01b0 v\u00e0 \u0111\u1ed9i ng\u0169 nh\u1eadn ra r\u1eb1ng t\u00e0i li\u1ec7u kh\u00f4ng nh\u1ea5t thi\u1ebft ph\u1ea3i l\u00e0 g\u00e1nh n\u1eb7ng. V\u1edbi VPasCode, b\u1ea1n c\u00f3 c\u00e1c c\u00f4ng c\u1ee5 \u0111\u1ec3 bi\u1ebfn n\u00f3 th\u00e0nh m\u1ed9t t\u00e0i s\u1ea3n\u2014m\u1ed9t \u0111\u1ea1i di\u1ec7n s\u1ed1ng \u0111\u1ed9ng, lu\u00f4n thay \u0111\u1ed5i c\u1ee7a h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n, ph\u00e1t tri\u1ec3n song song v\u1edbi m\u00e3 ngu\u1ed3n c\u1ee7a b\u1ea1n.<\/p>\n<h3>L\u1eddi k\u1ebft<\/h3>\n<p>Th\u1eddi \u0111i\u1ec3m t\u1ed1t nh\u1ea5t \u0111\u1ec3 b\u1eaft \u0111\u1ea7u coi s\u01a1 \u0111\u1ed3 nh\u01b0 m\u00e3 l\u00e0 h\u00f4m qua. Th\u1eddi \u0111i\u1ec3m t\u1ed1t th\u1ee9 hai l\u00e0 ngay b\u00e2y gi\u1edd.<br \/>\nCh\u00ednh b\u1ea1n trong t\u01b0\u01a1ng lai\u2014v\u00e0 c\u00e1c \u0111\u1ed3ng \u0111\u1ed9i t\u01b0\u01a1ng lai c\u1ee7a b\u1ea1n\u2014s\u1ebd c\u1ea3m \u01a1n b\u1ea1n v\u00ec s\u1ef1 r\u00f5 r\u00e0ng, t\u00ednh nh\u1ea5t qu\u00e1n v\u00e0 s\u1ef1 t\u1ef1 tin m\u00e0 t\u00e0i li\u1ec7u lu\u00f4n c\u1eadp nh\u1eadt, lu\u00f4n d\u1ec5 truy c\u1eadp v\u00e0 lu\u00f4n ch\u00ednh x\u00e1c mang l\u1ea1i.<br \/>\n<strong>S\u1eb5n s\u00e0ng b\u1eaft \u0111\u1ea7u?<\/strong>\u00a0Truy c\u1eadp\u00a0<a href=\"https:\/\/www.vpascode.com\/editor\/\">VPasCode<\/a>\u00a0ngay b\u00e2y gi\u1edd, d\u00e1n m\u00e3 s\u01a1 \u0111\u1ed3 \u0111\u1ea7u ti\u00ean c\u1ee7a b\u1ea1n v\u00e0o v\u00e0 xem v\u0103n b\u1ea3n bi\u1ebfn \u0111\u1ed5i th\u00e0nh s\u1ef1 r\u00f5 r\u00e0ng. Trong \u00edt th\u1eddi gian h\u01a1n c\u1ea3 th\u1eddi gian b\u1ea1n \u0111\u1ecdc ph\u1ea7n k\u1ebft lu\u1eadn n\u00e0y, b\u1ea1n s\u1ebd \u0111\u00e3 t\u1ea1o ra b\u1ea3n sao Diagram-as-Code \u0111\u1ea7u ti\u00ean c\u1ee7a m\u00ecnh.<br \/>\nT\u01b0\u01a1ng lai c\u1ee7a t\u00e0i li\u1ec7u k\u1ef9 thu\u1eadt \u0111\u00e3 \u1edf \u0111\u00e2y. N\u00f3 \u0111\u01b0\u1ee3c \u0111i\u1ec1u khi\u1ec3n b\u1eb1ng m\u00e3, d\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t v\u00e0 ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed. Ch\u00e0o m\u1eebng b\u1ea1n \u0111\u1ebfn v\u1edbi cu\u1ed9c c\u00e1ch m\u1ea1ng.<\/p>\n<hr\/>\n<p><strong>Gi\u1edbi thi\u1ec7u v\u1ec1 h\u01b0\u1edbng d\u1eabn n\u00e0y<\/strong><br \/>\n<em>H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n n\u00e0y \u0111\u01b0\u1ee3c t\u1ea1o ra \u0111\u1ec3 gi\u00fap c\u00e1c \u0111\u1ed9i ph\u00e1t tri\u1ec3n hi\u1ec7n \u0111\u1ea1i h\u00f3a th\u1ef1c h\u00e0nh t\u00e0i li\u1ec7u c\u1ee7a h\u1ecd th\u00f4ng qua Diagram-as-Code. \u0110\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng hai th\u1eadp k\u1ef7 kinh nghi\u1ec7m v\u1ec1 ki\u1ebfn tr\u00fac doanh nghi\u1ec7p c\u1ee7a Visual Paradigm, VPasCode \u0111\u1ea1i di\u1ec7n cho t\u01b0\u01a1ng lai c\u1ee7a truy\u1ec1n th\u00f4ng k\u1ef9 thu\u1eadt\u2014d\u1ec5 ti\u1ebfp c\u1eadn, d\u1ec5 b\u1ea3o tr\u00ec v\u00e0 mi\u1ec5n ph\u00ed.<\/em><br \/>\n<em>C\u1eadp nh\u1eadt l\u1ea7n cu\u1ed1i: Th\u00e1ng 6 n\u0103m 2026<\/em><br \/>\n<em>\u0110\u1ed1i t\u01b0\u1ee3ng m\u1ee5c ti\u00eau: Nh\u00e0 ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m, ki\u1ebfn tr\u00fac s\u01b0 h\u1ec7 th\u1ed1ng, k\u1ef9 s\u01b0 DevOps, nh\u00e0 v\u0103n k\u1ef9 thu\u1eadt v\u00e0 c\u00e1c \u0111\u1ed9i ph\u00e1t tri\u1ec3n<\/em><br \/>\n<em>\u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft: Hi\u1ec3u bi\u1ebft c\u01a1 b\u1ea3n v\u1ec1 c\u00e1c kh\u00e1i ni\u1ec7m ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m<\/em><br \/>\n<em>Th\u1eddi gian ho\u00e0n th\u00e0nh \u01b0\u1edbc t\u00ednh: 2-3 gi\u1edd cho h\u01b0\u1edbng d\u1eabn \u0111\u1ea7y \u0111\u1ee7, 15 ph\u00fat cho b\u1eaft \u0111\u1ea7u nhanh<\/em><\/p>\n<hr\/>\n<p class=\"\"><strong>Ch\u00fac b\u1ea1n v\u1ebd s\u01a1 \u0111\u1ed3 vui v\u1ebb! \ud83c\udfa8\ud83d\udcca<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gi\u1edbi thi\u1ec7u: Cu\u1ed9c c\u00e1ch m\u1ea1ng v\u1ec1 t\u00e0i li\u1ec7u b\u1eaft \u0111\u1ea7u t\u1eeb \u0111\u00e2y Trong th\u1ebf gi\u1edbi ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m \u0111\u1ea7y t\u1ed1c \u0111\u1ed9, c\u00f3 m\u1ed9t s\u1ef1 th\u1eadt kh\u00f3 ch\u1ecbu m\u00e0 t\u1ea5t&hellip;<\/p>\n","protected":false},"author":2,"featured_media":4256,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","source_url":"","source_h1_title":"","fifu_image_url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png","fifu_image_alt":"","_fifu_image_alt":"","fifu_alt":"","_fifu_alt":"","fifu_image_title":"","_fifu_image_title":"","fifu_input_alt":"","vp_image_hash":"","footnotes":""},"categories":[118],"tags":[],"asset-category":[],"class_list":["post-4255","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vpascode"],"source_url":"","source_h1_title":"","fifu_image_url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png","fifu_image_alt":"","vp_image_hash":"","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i - Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends<\/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:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i - Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\" \/>\n<meta property=\"og:description\" content=\"Gi\u1edbi thi\u1ec7u: Cu\u1ed9c c\u00e1ch m\u1ea1ng v\u1ec1 t\u00e0i li\u1ec7u b\u1eaft \u0111\u1ea7u t\u1eeb \u0111\u00e2y Trong th\u1ebf gi\u1edbi ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m \u0111\u1ea7y t\u1ed1c \u0111\u1ed9, c\u00f3 m\u1ed9t s\u1ef1 th\u1eadt kh\u00f3 ch\u1ecbu m\u00e0 t\u1ea5t&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/\" \/>\n<meta property=\"og:site_name\" content=\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-02T08:13:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-09T12:59:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png\" \/><meta property=\"og:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png\" \/>\n\t<meta property=\"og:image:width\" content=\"909\" \/>\n\t<meta property=\"og:image:height\" content=\"504\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/\"},\"author\":{\"name\":\"curtis\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/#\/schema\/person\/7d2ba976d99a3712085fad7b38500b83\"},\"headline\":\"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i\",\"datePublished\":\"2026-06-02T08:13:49+00:00\",\"dateModified\":\"2026-09-09T12:59:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/\"},\"wordCount\":4665,\"publisher\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png\",\"articleSection\":[\"VPasCode\"],\"inLanguage\":\"vi\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/\",\"url\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/\",\"name\":\"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i - Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\",\"isPartOf\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png\",\"datePublished\":\"2026-06-02T08:13:49+00:00\",\"dateModified\":\"2026-09-09T12:59:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage\",\"url\":\"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png\",\"contentUrl\":\"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png\",\"width\":909,\"height\":504},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.go2posts.com\/vn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/#website\",\"url\":\"https:\/\/www.go2posts.com\/vn\/\",\"name\":\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.go2posts.com\/vn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/#organization\",\"name\":\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\",\"url\":\"https:\/\/www.go2posts.com\/vn\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png\",\"contentUrl\":\"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png\",\"width\":341,\"height\":46,\"caption\":\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\"},\"image\":{\"@id\":\"https:\/\/www.go2posts.com\/vn\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/#\/schema\/person\/7d2ba976d99a3712085fad7b38500b83\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.go2posts.com\/vn\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"caption\":\"curtis\"},\"url\":\"https:\/\/www.go2posts.com\/vn\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i - Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","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:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/","og_locale":"vi_VN","og_type":"article","og_title":"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i - Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","og_description":"Gi\u1edbi thi\u1ec7u: Cu\u1ed9c c\u00e1ch m\u1ea1ng v\u1ec1 t\u00e0i li\u1ec7u b\u1eaft \u0111\u1ea7u t\u1eeb \u0111\u00e2y Trong th\u1ebf gi\u1edbi ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m \u0111\u1ea7y t\u1ed1c \u0111\u1ed9, c\u00f3 m\u1ed9t s\u1ef1 th\u1eadt kh\u00f3 ch\u1ecbu m\u00e0 t\u1ea5t&hellip;","og_url":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/","og_site_name":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","article_published_time":"2026-06-02T08:13:49+00:00","article_modified_time":"2026-09-09T12:59:33+00:00","og_image":[{"url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png","type":"","width":"","height":""},{"width":909,"height":504,"url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png","type":"image\/png"}],"author":"curtis","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e86c394c18.png","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"curtis","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"12 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#article","isPartOf":{"@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/"},"author":{"name":"curtis","@id":"https:\/\/www.go2posts.com\/vn\/#\/schema\/person\/7d2ba976d99a3712085fad7b38500b83"},"headline":"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i","datePublished":"2026-06-02T08:13:49+00:00","dateModified":"2026-09-09T12:59:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/"},"wordCount":4665,"publisher":{"@id":"https:\/\/www.go2posts.com\/vn\/#organization"},"image":{"@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage"},"thumbnailUrl":"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png","articleSection":["VPasCode"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/","url":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/","name":"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i - Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","isPartOf":{"@id":"https:\/\/www.go2posts.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage"},"image":{"@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage"},"thumbnailUrl":"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png","datePublished":"2026-06-02T08:13:49+00:00","dateModified":"2026-09-09T12:59:33+00:00","breadcrumb":{"@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#primaryimage","url":"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png","contentUrl":"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2026\/06\/img_6a1e86c394c18.png","width":909,"height":504},{"@type":"BreadcrumbList","@id":"https:\/\/www.go2posts.com\/vn\/mastering-diagram-as-code-a-complete-vpascode-tutorial-for-modern-development-teams\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.go2posts.com\/vn\/"},{"@type":"ListItem","position":2,"name":"L\u00e0m ch\u1ee7 M\u00f4 h\u00ecnh h\u00f3a d\u01b0\u1edbi d\u1ea1ng M\u00e3: H\u01b0\u1edbng d\u1eabn To\u00e0n di\u1ec7n v\u1ec1 VPasCode cho C\u00e1c \u0110\u1ed9i ng\u0169 Ph\u00e1t tri\u1ec3n Hi\u1ec7n \u0111\u1ea1i"}]},{"@type":"WebSite","@id":"https:\/\/www.go2posts.com\/vn\/#website","url":"https:\/\/www.go2posts.com\/vn\/","name":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","description":"","publisher":{"@id":"https:\/\/www.go2posts.com\/vn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.go2posts.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/www.go2posts.com\/vn\/#organization","name":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","url":"https:\/\/www.go2posts.com\/vn\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.go2posts.com\/vn\/#\/schema\/logo\/image\/","url":"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png","contentUrl":"https:\/\/www.go2posts.com\/vn\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png","width":341,"height":46,"caption":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends"},"image":{"@id":"https:\/\/www.go2posts.com\/vn\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.go2posts.com\/vn\/#\/schema\/person\/7d2ba976d99a3712085fad7b38500b83","name":"curtis","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.go2posts.com\/vn\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","caption":"curtis"},"url":"https:\/\/www.go2posts.com\/vn\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/posts\/4255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/comments?post=4255"}],"version-history":[{"count":0,"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/posts\/4255\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/media\/4256"}],"wp:attachment":[{"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/media?parent=4255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/categories?post=4255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/tags?post=4255"},{"taxonomy":"asset-category","embeddable":true,"href":"https:\/\/www.go2posts.com\/vn\/wp-json\/wp\/v2\/asset-category?post=4255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}