thời gian đọc: 12 minutes

Codebase của bạn ngày càng lớn. Sự phụ thuộc giữa các module ngày một nhiều hơn. Tài liệu kiến trúc trở nên lỗi thời ngay cả trước khi kịp viết xong. Sẽ ra sao nếu build Gradle của bạn có thể tự động tạo ra các sơ đồ cập nhật từ cấu trúc thực tế của mã nguồn? Đó chính xác là những gì pipeline Graphify + PlantUML Gradle Plugin thực hiện:`graphify . --no-viz`trích xuất Knowledge Graph,`./gradlew generateKnowledgeGraphDiagram`chuyển đổi nó thành các biểu đồ PlantUML. Không LLM, không thủ công, 100% xác định.

Vấn đề là: các sơ đồ luôn chậm hơn so với mã nguồn `code

Bất kỳ dự án nào vượt quá vài nghìn dòng đều gặp phải hội chứng này:

  1. Chúng ta vẽ một sơ đồ kiến trúc vào đầu dự án

  2. Mã nguồn tiến hóa, các phụ thuộc thay đổi

  3. Biểu đồ trở thành một lời nói dối mang tính trang trí

  4. Không ai cập nhật nó vì việc đó rất phiền phức

  5. Những người mới đến dựa vào đó và mắc sai lầm

@startuml
skinparam backgroundColor #FEFEFE
skinparam ActivityBackgroundColor #FDEDEC
skinparam ActivityDiamondBackgroundColor #FFF3CD

start

:Biểu đồ kiến trúc đã được tạo\n(thủ công, bằng tay);

:Mã nguồn phát triển\n(nouvelles classes, nouvelles dépendances);

:Biểu đồ đã lỗi thời\n(không còn phản ánh mã);

if (Qui met à jour ?) then (Personne)
    :Tài liệu sai lệch;
    note right: Các nhà phát triển mới\n dựa vào đó... và phạm lỗi
else (Quelqu'un)
    :Cập nhật thủ công\n(2-3 giờ làm việc);
    note right: Đã lỗi thời\nđối với PR tiếp theo
endif

stop

@enduml

Câu hỏi không phải là có cần sơ đồ hay không? — mọi người đều biết là có. Câu hỏi là:ai cập duy trì cập nhật chúng?

Câu trả lời là: không một ai. Trừ khi đó là tự động.

Giải pháp: một pipeline tất định Knowledge Graph → PlantUML

Nguyên tắc rất đơn giản: thay vì vẽ các biểu đồ bằng tay, chúng tađược tạo từ cấu trúc thực tế của mã nguồnHãy cung cấp văn bản cần dịch.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

actor Développeur
component "Graphify\n(pip install graphifyy)" as Graphify
collections "graphify-out/graph.json\n(Knowledge Graph)" as KGJSON
component "PlantUML Gradle Plugin\n(generateKnowledgeGraphDiagram)" as Plugin
component "KnowledgeGraphParser" as Parser
component "KnowledgeGraphRenderer" as Renderer
component "PlantumlService\n(xác thực + hiển thị PNG)" as PS
collections "diagrams/knowledge-graph/\n(.puml + .png)" as Output

Développeur --> Graphify : graphify . --no-viz
Graphify --> KGJSON : Trích xuất cấu trúc \n từ mã nguồn
Développeur --> Plugin : ./gradlew generateKnowledgeGraphDiagram
Plugin --> Parser : parse(graph.json)
Parser --> Plugin : KnowledgeGraph\n(đỉnh + cạnh + cộng đồng)
Plugin --> Renderer : render(graph, filters)
Renderer --> Plugin : code PlantUML\nxác định
Plugin --> PS : validateSyntax + generateImage
PS --> Output : .puml + .png

note bottom of Plugin
Pipeline DÉTERMINISTE
Không có lời gọi LLM
Kết quả có thể tái tạo
end note

@enduml

Hai câu lệnh. Chỉ vậy thôi.

# Étape 1 : extraire le Knowledge Graph
graphify . --no-viz

# Étape 2 : générer les diagrammes PlantUML
./gradlew generateKnowledgeGraphDiagram

Kết quả là gì? Những tệp`.puml` et .png`trong`diagrams/knowledge-graph/, được quản lý phiên bản trong Git, luôn cập nhật cùng với mã nguồn.

Bước 1: Cài đặt Graphify và trích xuất Knowledge Graph

Cài đặt

Graphify là một công cụ Python giúp phân tích codebase của bạn và xây dựng một đồ thị tri thức có cấu trúc:

# Méthode recommandée
uv tool install graphifyy && graphify install --platform opencode

# Alternative avec pip
pip install graphifyy && graphify install --platform opencode

Cấu hình các ngoại lệ

Tạo một tệp`.graphifyignore`tại gốc của dự án để loại bỏ các tệp không thuộc về logic nghiệp vụ:

# Secrets — JAMAIS dans le graphe
*-context.yml
*.env

# Fichiers générés
build/
.gradle/

# Tests fonctionnels
src/functionalTest/

Trích xuất Knowledge Graph

graphify . --no-viz

Cờ`--no-viz`bỏ qua việc tạo HTML (không cần thiết trong pipeline Gradle). Kết quả là một tệp`graphify-out/graph.json`chứa:

  • Nút: các lớp, hàm, tệp — cùng với kiểu và cộng đồng của chúng

  • Các cạnh: quan hệ giữa các nút (ĐƯỢC TRÍCH XUẤT từ mã, ĐƯỢC SUY LUẬN bởi LLM)

  • Cộng đồng: nhóm tự động các nút liên kết

Ví dụ về cấu trúc`graph.json`

{
  "nodes": [
    {"id": "0", "label": "LlmService", "file_type": "code", "community": 0},
    {"id": "1", "label": "ApiKeyPool", "file_type": "code", "community": 0},
    {"id": "2", "label": "PlantumlService", "file_type": "code", "community": 1}
  ],
  "links": [
    {"source": "1", "target": "0", "relation": "uses", "confidence": "EXTRACTED", "weight": 0.9},
    {"source": "0", "target": "2", "relation": "calls", "confidence": "INFERRED", "weight": 0.7}
  ]
}

Mã nguồn (.kt, .java) được phân tích cục bộ bởi tree-sitter,LLM không thể kháng cáo. Chỉ những tệp tài liệu (.adoc, .md) yêu cầu một lời gọi LLM để trích xuất ngữ nghĩa. Vì vậy`--update`trên mã Kotlin gần như là tức thời.

Bước 2: Plugin Gradle chuyển đổi Knowledge Graph thành PlantUML

Kiến trúc pipeline

Plugin`com.cheroliv.plantuml`tích hợp một tác vụ`generateKnowledgeGraphDiagram`mà biến đổi`graph.json`sang các biểu đồ PlantUML một cáchhoàn toàn xác địnhvui lòng cung cấp nội dung cần dịch.

@startuml
skinparam backgroundColor #FEFEFE

participant "Gradle" as G
participant "GenerateKnowledgeGraphDiagramTask" as Task
participant "KnowledgeGraphParser" as Parser
participant "KnowledgeGraphRenderer" as Renderer
participant "PlantumlService" as PS

collections "graphify-out/graph.json" as JSON

G -> Task : (empty)
Task -> JSON : read
Task -> Parser : parse(graph.json)
Parser --> Task : KnowledgeGraph\n(nut + cạnh + cộng đồng)
Task -> Renderer : render(graph, filters)
Renderer --> Task : mã PlantUML\n(xác định)
Task -> PS : validateSyntax(plantumlCode)
alt syntaxe valide
    Task -> PS : generateImage → .png
else syntaxe invalide
    Task -> Task : Lưu .puml với cảnh báo
end

@enduml

Các thành phần nội bộ

Thành phần Vai trò

KnowledgeGraphParser

Phân tích`graph.json`— hỗ trợ 3 định dạng: graphify gốc (nodes+links), cũ (communities), flat. Giải quyết các ID số thành nhãn.

KnowledgeGraphRenderer

Chuyển đổi một cách xác định một`KnowledgeGraph`sang mã PlantUML. Nhóm theo loại, các cộng đồng trong các packages, chú giải tự động.

GenerateKnowledgeGraphDiagramTask

Tác vụ Gradle điều phối: parse → render → validate → PNG. Có thể cấu hình thông qua các thuộc tính Gradle.

kgmodels.kt

Mô hình dữ liệu:`KnowledgeGraph`, KnowledgeGraphNode, KnowledgeGraphEdge, KnowledgeGraphCommunity, `EdgeType`Vui lòng cung cấp nội dung cần dịch.

PlantumlService

Kiểm tra cú pháp + xuất PNG (được tái sử dụng bởi tất cả các tác vụ của plugin).

Quy tắc hiển thị

Trình kết xuất áp dụng các quy ước hình ảnh mang tính xác định:

Loại cạnh Ký hiệu PlantUML Ý nghĩa

ĐÃ TRÍCH XUẤT

-→(đường kẻ liền, màu đen)

Quan hệ được trích xuất từ mã nguồn (mức độ tin cậy)

ĐƯỢC SUY LUẬN

..>(đường gạch đứt)

Quan hệ được LLM suy luận (điểm tin cậy)

MƠ HỒ

--x(đường đứt nét màu đỏ)

Quan hệ mơ hồ (cần kiểm tra)

Các cộng đồng được trả về dưới dạng các gói PlantUML với bảng màu tự động.

Bước 3: Sử dụng hàng ngày

Sơ đồ đầy đủ

# Générer le diagramme du Knowledge Graph complet
./gradlew generateKnowledgeGraphDiagram

Đầu ra:`diagrams/knowledge-graph/knowledge-graph-full.puml`+.png

Lọc theo cộng đồng

# Une seule communauté
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.community=community_0

# Limiter le nombre de noeuds (lisibilité)
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.community=community_0 \
  -Pplantuml.kg.maxNodes=15

Lọc theo loại cạnh

# Uniquement les relations certaines (EXTRACTED)
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.edgeTypes=EXTRACTED

# Relations certaines + inférées
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.edgeTypes=EXTRACTED,INFERRED

Lọc theo loại nút và độ tin cậy

# Uniquement les classes de code
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.nodeTypes=code

# Seuil de confiance minimum (pour les INFERRED)
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.minConfidence=0.7

Thư mục đầu ra tùy chỉnh

./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.outputDir=docs/architecture

Tham chiếu đầy đủ các thuộc tính

Thuộc tính Lỗi Mô tả

plantuml.kg.community

(tất cả)_

Lọc các cộng đồng theo tên (khớp chuỗi con)

plantuml.kg.edgeTypes

(tất cả)

Các loại cạnh cách nhau bằng dấu phẩy:`EXTRACTED`, INFERRED, AMBIGUOUS

plantuml.kg.minConfidence

0.0

Ngưỡng tin cậy tối thiểu cho các cạnh

plantuml.kg.maxNodes

(không giới hạn)

Số lượng nút tối đa được hiển thị

plantuml.kg.nodeTypes

(tất cả)

Các loại nút phân tách bằng dấu phẩy (ví dụ:`class`, code)

plantuml.kg.outputDir

diagrams/knowledge-graph

Thư mục đầu ra cho các tệp`.puml` et .png

Pipeline hoàn chỉnh trong một workflow Gradle

Loại quy trình làm việc

@startuml
skinparam backgroundColor #FEFEFE
skinparam ActivityBackgroundColor #E8F4FD
skinparam ActivityDiamondBackgroundColor #FFF3CD
skinparam ActivityBorderColor #2C3E50

start

partition "EXTRACTION" {
    :đồ hoá . --no-viz;
    note right: Phân tích mã nguồn\ntree-sitter (cục bộ, không có LLM)

    :graphify-out/graph.json;
    note right: nút + cạnh\n+ cộng đồng
}

partition "Đã tạoRATION" {
    :./gradlew generateKnowledgeGraphDiagram;
    note right: Pipeline xác định\nphân tích → trình bày → xác thực → PNG

    if (Filtres actifs ?) then (Oui)
        :Áp dụng bộ lọc\n(community, edgeTypes,\nmaxNodes, nodeTypes);
    else (Non)
        :Biểu đồ đầy đủ;
    endif

    :biểu đồ/knowledge-graph/\nbiểu đồ tri thức-full.puml\nbiểu đồ tri thức-full.png;
}

partition "INTÉGRATION" {
    :thêm diagrams/knowledge-graph/;
    :git commit;
    note right: Biểu đồ phiên bản \nluôn cập nhật với mã
}

stop

@enduml

Tích hợp vào chu kỳ phát triển

Pipeline tích hợp một cách tự nhiên vào các giai đoạn chính của quá trình phát triển:

@startuml
skinparam backgroundColor #FEFEFE

state "Phát triển" as dev
state "Extraction\ngraphify . --no-viz" as extract
state "Sinh ra\n./gradlew generateKnowledgeGraphDiagram" as generate
state "Commit\nbiểu đồ đã được phiên bản" as commit

[*] --> dev
dev --> extract : Mã đã được sửa
extract --> generate : graph.json cập nhật
generate --> commit : .puml + .png được tạo ra
commit --> dev : Biểu đồ trong repo

note right of extract
Gần như tức thời trên mã Kotlin (tree-sitter, không có LLM)
end note

note right of generate
Xác định
Không có LLM
Kết quả có thể tái tạo
end note

@enduml

Cập nhật gia tăng

Khi mã thay đổi, chúng ta không xây dựng lại toàn bộ đồ thị từ đầu:

# Mise à jour incrémentale (fichiers modifiés uniquement)
graphify . --update

# Puis régénérer les diagrammes
./gradlew generateKnowledgeGraphDiagram

--update`trích xuất lại duy nhất các tệp đã thay đổi (được phát hiện bằng SHA256 trong`graphify-out/cache/). Đối với mã Kotlin, việc này gần như tức thời vì tree-sitter hoạt động cục bộ mà không cần gọi LLM.

Dogfooding: plugin tự lập tài liệu cho chính mình

Plugin PlantUML tồn tại để chuyển đổi các prompt thành sơ đồ. Nó cũng có thể chuyển đổi Knowledge Graph từ chính codebase của propre thành các sơ đồ tài liệu. Đây là hình thức dogfooding: plugin tự tiêu thụ dịch vụ của chính nó.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

package "Pipeline thông thường\n(người dùng → biểu đồ)" as normal {
    [Fichier .prompt] as prompt
    [LlmService\n+ ApiKeyPool] as llm1
    [ProcessPlantumlPromptsTask] as task1
    [Diagramme PNG] as out1

    prompt --> task1
    task1 --> llm1
    llm1 --> out1
}

package "Pipeline Knowledge Graph\n(định tính, không có LLM)" as kg {
    [graphify-out/graph.json] as kgjson
    [KnowledgeGraphParser] as parser
    [KnowledgeGraphRenderer] as renderer
    [PlantumlService] as ps
    [Diagramme PNG\n(documentation du plugin)] as out2

    kgjson --> parser
    parser --> renderer
    renderer --> ps
    ps --> out2
}

package "Pipeline Dogfooding\n(LLM → tài liệu hướng dẫn plugin)" as dogfood {
    [GraphifyPromptAdapter] as gpa
    [Fichiers .prompt\nauto-générés] as auto_prompt
    [LlmService\n+ ApiKeyPool] as llm2
    [ProcessPlantumlPromptsTask] as task2
    [Diagramme PNG\n(documentation LLM)] as out3

    kgjson --> gpa
    gpa --> auto_prompt
    auto_prompt --> task2
    task2 --> llm2
    llm2 --> out3
}

note "Cùng LlmService, cùng ApiKeyPool,\ncùng PlantumlService\n— KHÔNG trùng lặp" as N

@enduml

Các tác vụ Gradle liên quan:

Nhiệm vụ LLM ? Mô tả

generateKnowledgeGraphDiagram

Không

Chuyển đổi`graph.json`bằng PlantUML (định hướng)

generateDiagramDocs

Vâng

Tạo các`.prompt`từ đồ thị, xử lý chúng thông qua LLM (dogfooding)

# Documentation déterministe (rapide, pas de LLM)
./gradlew generateKnowledgeGraphDiagram

# Documentation LLM (plus riche, consomme des tokens)
./gradlew generateDiagramDocs

Tại sao nó có tính xác định (và tại sao điều đó lại quan trọng)

Điểm mấu chốt của pipeline`generateKnowledgeGraphDiagram`Vui lòng cung cấp nội dung cần dịch.nó không gọi bất kỳ LLM nào. Sự chuyển đổi`graph.json`→ PlantUML là một hàm thuần túy.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

rectangle "Pipeline ĐỊNH DANH\n(generateKnowledgeGraphDiagram)" as det {
    [graph.json] as json
    [KnowledgeGraphParser] as parser
    [KnowledgeGraphRenderer] as renderer
    [PlantUML code] as puml

    json --> parser : parse
    parser --> renderer : KnowledgeGraph
    renderer --> puml : render (fonction pure)
}

rectangle "Pipeline LLM\n(processPlantumlPrompts)" as llm {
    [.prompt] as prompt
    [LlmService] as llmSvc
    [ChatModel] as model
    [PlantUML code] as puml2

    prompt --> llmSvc
    llmSvc --> model : API call
    model --> puml2 : réponse non-déterministe
}

note bottom of det
Cùng một đầu vào → cùng một đầu ra
Không có độ trễ mạng
Không tốn chi phí token
Có thể tái lập trong CI
end note

note bottom of llm
Cùng một đầu vào → đầu ra thay đổi
Độ trễ mạng (1-5s)
Chi phí token
Yêu cầu một clave API
end note

@enduml

Những lợi ích cụ thể:

Lợi thế Tác động

Khả năng tái lập

Thậm chí`graph.json`→ cùng một biểu đồ. Chính xác. Mọi lúc.

Chi phí bằng không

Không gọi LLM = không tốn token = không có hóa đơn API.

Độ trễ bằng không

Parse + render mất ~100ms, chứ không phải 1-5 giây.

CI tương thích

Không cần khóa API. Không có kiểm thử không ổn định (flaky test) do phản hồi LLM thay đổi.

Có thể đánh phiên bản

Le .puml`tạo ra là văn bản. Chúng ta có thể`diff, người review PR, quản lý phiên bản trong Git.

Sơ đồ của chính pipeline

Để hoàn tất quy trình, đây là sơ đồ pipeline như cách nó sẽ được tạo bởi plugin:

@startuml
skinparam backgroundColor #FEFEFE

participant "Lập trình viên" as Dev
participant "Gradle" as G
participant "GenerateKnowledgeGraphDiagramTask" as Task
participant "KnowledgeGraphParser" as Parser
participant "KnowledgeGraphRenderer" as Renderer
participant "PlantumlService" as PS
collections "graphify-out/graph.json" as JSON
collections "diagrams/knowledge-graph/" as Out

Dev -> G : ./gradlew generateKnowledgeGraphDiagram
G -> Task : execute
Task -> JSON : đọc
Task -> Parser : parse(graph.json)
Parser --> Task : KnowledgeGraph

alt filtres actifs
    Task -> Task : Áp dụng bộ lọc\n(community, edgeTypes, maxNodes…)
end

Task -> Renderer : render(graph, filters)
Renderer --> Task : mã PlantUML

Task -> PS : validateSyntax()
alt valide
    Task -> PS : generateImage()
    PS --> Out : .puml + .png
else invalide
    Task -> Out : .puml (cảnh báo)
end

@enduml

Tích hợp vào quản trị dự án

Trong dự án của chúng tôi, pipeline này tích hợp vào một chiến lược quản lý ngữ cảnh EAGER/LAZY cho agent AI. Knowledge Graph thay thế tài liệu kiến trúc thủ công bằng một đồ thị có cấu trúc, có thể truy vấn và tự động cập nhật.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

package "EAGER\n(luôn luôn sạc)" as eager {
    [PROMPT_REPRISE.adoc\n(contexte session)] as pr
    [INDEX.adoc\n(vue d'ensemble)] as idx
    [GRAPH_REPORT.adoc\n(~50 lignes)] as gr
}

package "LAZY — Stratégie\n(theo yêu cầu)" as lazy_strat {
    [Méthodologies] as meth
    [Archives sessions] as sessions
}

package "LAZY — Graphify\n(truy vấn mục tiêu)" as lazy_graph {
    [graph.json] as gj
    [Queries\n(query/path/explain)] as queries
}

package "Pipeline PlantUML\n(tự động tạo)" as puml {
    [generateKnowledgeGraphDiagram] as kgTask
    [generateDiagramDocs] as ddTask
    [Diagrammes PNG] as diagrams
}

Agent --> eager : Đọc vào đầu phiên
Agent ..> lazy_strat : Tải nếu loại được phát hiện
Agent ..> lazy_graph : Truy vấn nếu cần cấu trúc
kgTask --> diagrams : xác định
ddTask --> diagrams : Qua LLM

note right of gr
Bộ tóm tắt của Knowledge Graph
God nodes + cộng đồng
Thay thế ECOSYSTEM_OVERVIEW
(225 dòng → 50 dòng)
end note

@enduml

Sự kết hợp giữa hai hệ thống này mang tính bổ trợ cho nhau:

  • Chiến lược quản lý KHI NÀO và NHƯ THẾ NÀO— quản trị, quy trình làm việc, lưu trữ

  • Graphify quản lý cái GÌ và ở ĐÂU— cấu trúc mã, các mối quan hệ, các truy vấn mục tiêu

Vui lòng cung cấp văn bản tiếng Pháp bạn muốn dịch. Chiến lược phiên quản lýKHI NÀO et le BÌNH LUẬN(quản trị, quy trình công việc, ngưỡng), Graphify quản lý cáiCÁI GÌ et le Ở ĐÂU(cấu trúc mã, các mối quan hệ, các truy vấn mục tiêu). Pipeline PlantUML xử lý việcVỚI CÁI GÌ(các biểu đồ tất định, được đánh phiên bản, luôn được cập nhật). Vui lòng cung cấp nội dung cần dịch.

Chuẩn bị: danh sách kiểm tra trong 5 phút

# Bước Lệnh

1

Cài đặt Graphify

uv tool install graphifyy

2

Cấu hình các loại trừ

Tạo`.graphifyignore`

3

Trích xuất Knowledge Graph

graphify . --no-viz

4

Tạo các sơ đồ

./gradlew generateKnowledgeGraphDiagram

5

Commit các kết quả

git add diagrams/knowledge-graph/

# Script complet en 5 commandes
uv tool install graphifyy
cat > .graphifyignore << 'EOF'
*-context.yml
*.env
build/
.gradle/
EOF
graphify . --no-viz
./gradlew generateKnowledgeGraphDiagram
git add graphify-out/GRAPH_REPORT.adoc graphify-out/graph.json diagrams/knowledge-graph/

Các bẫy và biện pháp giảm thiểu

Bẫy Mô tả Giảm thiểu

Đồ thị quá dày đặc

Một dự án lớn tạo ra hàng trăm nút không thể đọc được

Sử dụng`-Pplantuml.kg.maxNodes=30`và lọc theo cộng đồng

Loại trừ quá rộng

Quá nhiều tệp trong`.graphifyignore`giảm giá trị của đồ thị

Bắt đầu bằng cách chỉ loại trừ credentials và build

Hướng mũi tên

Các cạnh INFERRED có thể có hướng mơ hồ

Lọc theo`-Pplantuml.kg.edgeTypes=EXTRACTED`chỉ dành cho các quan hệ chắc chắn

Ký tự lỗi thời

Mã thay đổi nhưng đồ thị không được xây dựng lại

Sử dụng`graphify . --update`thường xuyên hoặc hook git`graphify hook install`

Chi phí đã cập nhật

Các bản cập nhật gia tăng gần như miễn phí (tree-sitter local)

Chỉ các tài liệu (.adoc) tiêu tốn các token LLM

Kết quả cuối cùng mà chúng ta nhận được

@startuml
skinparam backgroundColor #FEFEFE

rectangle "TRƯỚC" as avant {
    card "Sơ đồ vẽ bằng tay\nLuôn bị lỗi thời\nKhông ai cập nhật" as av1 #FDEDEC
}

rectangle "SAU" as apres {
    card "Sơ đồ được tạo tự động\nLuôn cập nhật cùng mã nguồn\nĐược quản lý phiên bản trong Git\nĐịnh tính và có thể tái lập" as ap1 #E8F8E8
}

avant --> apres : graphify . --no-viz\n+ ./gradlew generateKnowledgeGraphDiagram

@enduml

Những lợi ích cụ thể:

Lợi nhuận Chi tiết

Tài liệu luôn được cập nhật

Các biểu đồ phản ánh mã nguồn hiện tại, không phải là một snapshot thủ công

Không tốn công bảo trì

Các sơ đồ sẽ tự động tạo lại sau mỗi lần build

Giảm nợ kỹ thuật

Không còn cần phải duy trì các sơ đồ bằng tay

Ngữ cảnh trực quan cho người mới

Một lập trình viên mới hiểu được kiến trúc bằng cách xem các sơ đồ

Khả năng tinh chỉnh (Fine-tuning) tiềm năng

Các cặp (sous-graphe → diagramme) là các ví dụ huấn luyện AI

Xác thực tự động

`PlantumlService.validateSyntax()`kiểm tra từng biểu đồ được tạo ra

Nhập môn nhanh chóng

5 sơ đồ = góc nhìn đầy đủ về kiến trúc

Please provide the text you would like me to translate. Người có một tại sao có thể chịu đựng mọi thế nào. Vui lòng cung cấp văn bản cần dịch.

Lý do (pourquoi): các sơ đồ luôn được cập nhật. Cách thực hiện (comment): hai lệnh trong một pipeline Gradle.

Liên kết

Bài viết liên quan