विषय-सूची
पढ़ने का समय : 12 minutes

आपका कोडबेस बढ़ रहा है। मॉड्यूल के बीच निर्भरताएँ बढ़ रही हैं। आर्किटेक्चर दस्तावेज़ लिखे जाने से पहले ही अप्रचलित हो जाता है। और यदि आपका Gradle बिल्ड automatiquement कोड की वास्तविक संरचना से अद्यतन आरेख उत्पन्न कर सके ? यह ठीक वही है जो Graphify + PlantUML Gradle Plugin पाइपलाइन करता है :`graphify . --no-viz`Knowledge Graph को निकालता है,`./gradlew generateKnowledgeGraphDiagram`इसे PlantUML आरेखों में बदल देता है। शून्य LLM, शून्य मैनुअल, 100% निर्धारित।

समस्या: डायग्राम हमेशा कोड के पीछे हैं

कुछ हजार लाइनों से अधिक लंबा कोई भी प्रोजेक्ट इस सिंड्रोम से परिचित होता है :

  1. हम प्रोजेक्ट की शुरुआत में एक आर्किटेक्चर डायग्राम बनाते हैं

  2. कोड विकसित हो रहा है, निर्भरताएँ बदल रही हैं

  3. दियाग्राम सजावटी झूठ बन जाता है

  4. कोई इसे अपडेट नहीं करता क्योंकि यह थकाऊ है

  5. नए आए लोग इस पर निर्भर करते हैं और गलतियाँ करते हैं

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

start

:आर्किटेक्चर डायग्राम निर्मित\n(हाथ से);

:कोड विकसित हो रहा है\n(नई कक्षाएँ, नई निर्भरताएँ);

:अप्रचलित आलेख\n(अब कोड को नहीं दर्शाता);

if (Qui met à jour ?) then (Personne)
    :झूठी दस्तावेज़ीकरण;
    note right: नए डेवलपर\nइस पर निर्भर हैं... और गलतियाँ करते हैं
else (Quelqu'un)
    :मैनुअल अपडेट\n(2-3 घंटे का काम);
    note right: पहले से ही अप्रचलित\nअगली PR के लिए
endif

stop

@enduml

प्रश्न यह नहीं है कि faut-il des diagrammes ? — हर कोई जानता है कि हाँ. प्रश्न यह है :कौन उन्हें अपडेट रखता है ?

जवाब: कोई नहीं. जब तक यह स्वचालित नहीं है.

समाधान : एक निर्धारित पाइपलाइन Knowledge Graph → PlantUML

सिद्धांत सरल है : हाथ से आरेख बनाने के बजाय, हम उन्हेंकोड की वास्तविक संरचना से उत्पन्न.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

actor Développeur
component "Graphify\n(pip install graphifyy)" as Graphify
collections "graphify-out/graph.json\n(ज्ञान ग्राफ)" as KGJSON
component "PlantUML Gradle प्लगइन\n(generateKnowledgeGraphDiagram)" as Plugin
component "KnowledgeGraphParser" as Parser
component "KnowledgeGraphRenderer" as Renderer
component "PlantumlService\n(सत्यापन + रेंडरिंग PNG)" as PS
collections "आरेख/knowledge-graph/\n(.puml + .png)" as Output

Développeur --> Graphify : graphify . --no-viz
Graphify --> KGJSON : संरचना\n की स्रोत कोड निकालता है
Développeur --> Plugin : ./gradlew generateKnowledgeGraphDiagram
Plugin --> Parser : parse(graph.json)
Parser --> Plugin : KnowledgeGraph\n(नोड + किनारे + समुदाय)
Plugin --> Renderer : render(graph, filters)
Renderer --> Plugin : कोड PlantUML\nनिर्धारित
Plugin --> PS : validateSyntax + generateImage
PS --> Output : .puml + .png

note bottom of Plugin
पाइपलाइन DÉTERMINISTE
कोई कॉल नहीं LLM
पुनरुत्पादनशील परिणाम
end note

@enduml

दो कमांड। बस यही।

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

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

परिणाम? फ़ाइलें`.puml` et .png`में`diagrams/knowledge-graph/, Git में वर्ज़न किए गए, कोड के साथ हमेशा अद्यतन.

स्टेप 1: Graphify स्थापित करें और Knowledge Graph निकालें

स्थापना

Graphify एक पायथन टूल है जो आपका कोडबेस विश्लेषण करता है और एक संरचित ज्ञान ग्राफ़ बनाता है :

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

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

अपवादों को कॉन्फ़िगर करें

फ़ाइल बनाएँ`.graphifyignore`परियोजना की जड़ पर व्यापारिक तर्क का हिस्सा न होने वाली फ़ाइलों को बाहर करने के लिए :

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

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

# Tests fonctionnels
src/functionalTest/

Knowledge Graph निकालें

graphify . --no-viz

झंडा`--no-viz`यह HTML जनरेशन को छोड़ देता है (Gradle पाइपलाइन में अनुपयोगी)। परिणाम एक फ़ाइल है।`graphify-out/graph.json`شامل :

  • गाँठें: क्लासेस, फ़ंक्शन, फ़ाइलें — उनके प्रकार और समुदाय के साथ

  • किनारे: नोड्स के बीच संबंध (EXTRACTED कोड से, INFERRED LLM द्वारा)

  • समुदाय: जुड़े नोड्स के स्वचालित समूह

संरचना का उदाहरण`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}
  ]
}

स्रोत कोड (.kt, .java) को tree-sitter द्वारा स्थानीय रूप से विश्लेषित किया जाता है,अपील रहित LLM. केवल दस्तावेज़ फ़ाइलें (.adoc, .md`LLM को एक कॉल करने की आवश्यकता होती है समान्त्रिक निकासी के लिए। इसलिए--update`Kotlin कोड चलाना लगभग तात्कालिक है।

चरण 2 : ग्रैडल प्लगिन नॉलेज ग्राफ को PlantUML में बदलता है

पाइपलाइन वास्तुकला

प्लगइन`com.cheroliv.plantuml`एक कार्य को एकीकृत करता है`generateKnowledgeGraphDiagram`जो बदलता है`graph.json`PlantUML डायग्रामों के तरीके सेपूरी तरह से निर्धारित:

@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 : निष्पादित
Task -> JSON : पढ़ें
Task -> Parser : parse(graph.json)
Parser --> Task : KnowledgeGraph\n(नोड्स + किनाराएँ + समुदाय)
Task -> Renderer : render(graph, filters)
Renderer --> Task : code PlantUML\n(निर्धारित)
Task -> PS : validateSyntax(plantumlCode)
alt syntaxe valide
    Task -> PS : generateImage → .png
else syntaxe invalide
    Task -> Task : .puml फ़ाइल को चेतावनी के साथ सहेजें
end

@enduml

आंतरिक घटक

घटक भूमिका

KnowledgeGraphParser

पार्स`graph.json`— 3 प्रारूपों का समर्थन करता है : graphify स्वदेशी (nodes+links), विरासत (communities), समतल. संख्यात्मक IDs को लेबल में हल करता है।

KnowledgeGraphRenderer

एक निर्धारित रूप से बदलता है`KnowledgeGraph`PlantUML कोड में। प्रकार के अनुसार समूह, पैकेज में समुदाय, स्वचालित लीजेंड।

GenerateKnowledgeGraphDiagramTask

Gradle टास्क जो आर्केस्ट्रेट करता है: parse → render → validate → PNG। Gradle गुणों के माध्यम से कॉन्फ़िगर किया जा सकता है।

kgmodels.kt

डेटा मॉडल:`KnowledgeGraph`, KnowledgeGraphNode, KnowledgeGraphEdge, KnowledgeGraphCommunity, EdgeType.

PlantumlService

सिंटैक्स सत्यापन + PNG रेंडरिंग (प्लगिन के सभी कार्यों द्वारा पुन: उपयोग किया जाता है).

रेंडरिंग के नियम

रेनडरर निर्धारित दृश्यात्मक सम्मेलन लागू करता है :

किनारे का प्रकार नोटेशन PlantUML अर्थ

निकाला

-→(ठोस रेखा, काला)

स्रोत कोड से निकाला गया संबंध (निश्चितता)

निष्कर्षित

..>(बिंदु रेखा)

LLM द्वारा अनुमानित संबंध (विश्वास स्कोर)

अस्पष्ट

--x(लाल बिंदीदार रेखा)

अस्पष्ट संबंध (जाँचने के लिए)

समुदायों को PlantUML पैकेज के रूप में प्रस्तुत किया जाता है, जिसमें स्वचालित रंग पैलेट होता है।

चरण 3 : दैनिक उपयोग

पूर्ण आलेख

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

Sortie : diagrams/knowledge-graph/knowledge-graph-full.puml+.png

समुदाय द्वारा फ़िल्टर

# 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

किनारा प्रकार द्वारा फ़िल्टर करें

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

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

नोड के प्रकार और विश्वास द्वारा फ़िल्टर करें

# 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

कस्टम आउटपुट डायरेक्टरी

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

गुणों का पूर्ण संदर्भ

संपत्ति दोष विवरण

plantuml.kg.community

(सभी)

नाम से समुदाय फ़िल्टर करें (उप-स्ट्रिंग मिलान)

plantuml.kg.edgeTypes

(सभी)

विराम चिह्न से अलग किए गए किनारों के प्रकार :`EXTRACTED`, INFERRED, AMBIGUOUS

plantuml.kg.minConfidence

0.0

किनारों के लिए न्यूनतम विश्वास सीमा

plantuml.kg.maxNodes

(असीमित)

नोड्स को दिखाने के लिए अधिकतम संख्या

plantuml.kg.nodeTypes

(सभी)

विराम चिह्नों द्वारा अलग किए गए नोड्स के प्रकार (उदाहरण`class`, code)

plantuml.kg.outputDir

diagrams/knowledge-graph

फ़ाइलों के लिए आउटपुट निर्देशिका`.puml` et .png

पूर्ण पाइपलाइन एक Gradle वर्कफ़्लो में

वर्कफ़्लो प्रकार

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

start

partition "EXTRACTION" {
    :ग्राफ़ीफ़ाई . --no-viz;
    note right: स्रोत कोड का विश्लेषण करें\ntree-sitter (स्थानीय, बिना LLM के)

    :graphify-out/graph.json;
    note right: नोड्स + किनारियां\n+ समुदाय
}

partition "परेशानRATION" {
    :./gradlew generateKnowledgeGraphDiagram;
    note right: पाइपलाइन निर्धारितीय\nparse → रेन्डर → सत्यापन → PNG

    if (Filtres actifs ?) then (Oui)
        :फ़िल्टर लागू करें\n(community, edgeTypes,\nmaxNodes, nodeTypes);
    else (Non)
        :पूरा आरेख;
    endif

    :आरेख/knowledge-graph/\nज्ञान-ग्राफ़-full.puml\nज्ञान-ग्राफ़-full.png;
}

partition "INTÉGRATION" {
    :git add diagrams/knowledge-graph/;
    :गिट कमिट;
    note right: संस्करणबद्ध आरेख\nहमेशा अद्यतन कोड के साथ
}

stop

@enduml

विकास चक्र में एकीकरण

पाइपलाइन विकास के मुख्य चरणों में स्वाभाविक रूप से एकीकृत होती है:

@startuml
skinparam backgroundColor #FEFEFE

state "विकास" as dev
state "Extraction\ngraphify . --no-viz" as extract
state "उत्पादन\n./gradlew generateKnowledgeGraphDiagram" as generate
state "Commit\nआरेख संस्करणित" as commit

[*] --> dev
dev --> extract : संशोधित कोड
extract --> generate : graph.json अद्यय
generate --> commit : .puml + .png जेनरेटेड
commit --> dev : रीपो में डायग्राम

note right of extract
क्वासी तात्कालिक कोड Kotlin
(tree-sitter, LLM नहीं)
end note

note right of generate
निर्धारी
LLM नहीं
पुनरावृत्ति योग्य परिणाम
end note

@enduml

वृद्धिशील अद्ययन

जब कोड बदलता है, हम पूरे ग्राफ़ को शून्य से फिर से नहीं बनाते :

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

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

--update`पुनः केवल संशोधित फ़ाइलों को निकालता है (SHA256 द्वारा पता लगाए गए`graphify-out/cache/). कोटलिन कोड पर, यह लगभग तत्काल होता है क्योंकि ट्री-सिटर स्थानीय रूप से काम करता है बिना किसी LLM कॉल के।

डॉगफ़ूडिंग: प्लगइन स्वयं का दस्तावेज़ बनाता है

PlantUML प्लगिन प्रॉम्प्ट को आरेख में बदलने के लिए मौजूद है। वह अपने propre कोडबेस का ज्ञान ग्राफ भी दस्तावेज़ीकरण आरेखों में बदल सकता है। यह dogfooding है: प्लगिन अपनी स्वयं की सेवा का उपभोग करता है।

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

package "सामान्य पाइपलाइन\n(उपयोगकर्ता → आरेख)" 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 "पाइपलाइन ज्ञान ग्राफ़\n(नियतात्मक, कोई 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 "पाइपलाइन डॉगफूडिंग\n(LLM → प्लगइन का दस्तावेज़ीकरण)" 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 "वही LlmService, वही ApiKeyPool,\nवही PlantumlService\n— शून्य डुप्लिकेशन" as N

@enduml

Gradle से संबंधित कार्य :

कार्य LLM ? विवरण

generateKnowledgeGraphDiagram

नहीं

parivartit kar`graph.json`में PlantUML (निर्धारित)

generateDiagramDocs

हाँ

जनरेट करो`.prompt`ग्राफ़ से, उन्हें LLM के माध्यम से (dogfooding) से संसाधित किया जाता है

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

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

यह निर्धारित क्यों है (और यह क्यों मायने रखता है)

पाइपलाइन का मुख्य बिंदु`generateKnowledgeGraphDiagram`:वह कोई LLM नहीं बुलाता. परिवर्तन`graph.json`→ PlantUML एक शुद्ध फ़ंक्शन है.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

rectangle "Pipeline DÉTERMINISTE\n(generateKnowledgeGraphDiagram)" as det {
    [graph.json] as json
    [KnowledgeGraphParser] as parser
    [KnowledgeGraphRenderer] as renderer
    [PlantUML code] as puml

    json --> पार्स करनाr : पार्स करना
    parser --> renderer : KnowledgeGraph
    renderer --> puml : render (शुद्ध फ़ंक्शन)
}

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 कॉल
    model --> puml2 : अनिर्धारित उत्तर
}

note bottom of det
एक ही एंट्री → एक ही एग्ज़िट
नेटवर्क लेटेंसी नहीं
टोकन की कोई लागत नहीं
CI में पुनरावृत्ति योग्य
end note

note bottom of llm
एक ही इनपút → चर आउटपुट
नेटवर्क विलंब (1-5s)
टोकन में लागत
API की कुंजी आवश्यक है
end note

@enduml

वास्तविक लाभ :

फायदा प्रभाव

पुनरावृत्ति

समान`graph.json`→ समान आरेख। सही है। हर बार।

शून्य लागत

कोई LLM कॉल नहीं = कोई टोकन नहीं = कोई API बिल नहीं।

शून्य विलंब

Parse + render लगभग 100ms लेता है, 1-5 सेकंड नहीं।

संगत CI

API कुंजी आवश्यक नहीं है. चर LLM प्रतिक्रिया के कारण कोई अस्थिर परीक्षण नहीं.

संस्करणयोग्य

Le .puml`उत्पन्न पाठ है। हम इसे`diff, PR में रिव्यूअर, Git में संस्करणित करना।

पाइपलाइन के स्वयं के आरेख

लूप को बंद करने के लिए, यहाँ प्लगइन द्वारा उत्पन्न किया जाने वाला पाइपलाइन आरेख है :

@startuml
skinparam backgroundColor #FEFEFE

participant "विकासकर्ता" 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 : निष्पादित करें
Task -> JSON : पढ़ना
Task -> Parser : parse(graph.json)
Parser --> Task : KnowledgeGraph

alt filtres actifs
    Task -> Task : फ़िल्टर लगाएँ\n(community, edgeTypes, maxNodes…)
end

Task -> Renderer : render(graph, filters)
Renderer --> Task : कोड PlantUML

Task -> PS : validateSyntax()
alt valide
    Task -> PS : generateImage()
    PS --> Out : .puml + .png
else invalide
    Task -> Out : .puml (चेतावनी के साथ)
end

@enduml

परियोजना शासन में एकीकरण

हमारे प्रोजेक्ट में, यह पाइपलाइन AI एजेंट के लिए EAGER/LAZY संदर्भ प्रबंधन रणनीति में एकीकृत है। नॉलेज ग्राफ़ मैनुअल आर्किटेक्चर दस्तावेज़ीकरण को एक संरचित, क्वेरी करने योग्य और स्वचालित रूप से अद्यतन किए जाने वाले ग्राफ से बदल देता है।

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

package "EAGER\n(हमेशा लोडेड)" 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(मांग पर)" as lazy_strat {
    [Méthodologies] as meth
    [Archives sessions] as sessions
}

package "LAZY — Graphify\n(लक्षित क्वेरी)" as lazy_graph {
    [graph.json] as gj
    [Queries\n(query/path/explain)] as queries
}

package "Pipeline PlantUML\n(स्वचालित रूप से बनाया)" as puml {
    [generateKnowledgeGraphDiagram] as kgTask
    [generateDiagramDocs] as ddTask
    [Diagrammes PNG] as diagrams
}

Agent --> eager : सत्र की शुरुआत में पढ़ा
Agent ..> lazy_strat : यदि प्रकार पहचाना जाता है तो चार्ज किया जाता है
Agent ..> lazy_graph : यदि संरचनात्मक आवश्यकता
kgTask --> diagrams : निश्चयवादी
ddTask --> diagrams : के माध्यम से LLM

note right of gr
Knowledge Graph का सारांश
ईश्वर नोड्स + समुदाय
ECOSYSTEM_OVERVIEW को बदलें
(225 लाइनें → 50 लाइनें)
end note

@enduml

दो प्रणालियों का संयोजन पूरक है:

  • रणनीति कब और कैसे को प्रबंधित करती है— शासन, वर्कफ़्लो, संग्रहण

  • Graphify QUOI और OÙ को प्रबंधित करता है— कोड संरचना, संबंध, लक्षित प्रश्न

_ सत्र रणनीति प्रबंधित करती हैजब et le कैसे(शासन, वर्कफ़्लो, सीमाएँ), Graphify इसे प्रबंधित करता हैक्या et le कहाँ(कोड की संरचना, संबंध, लक्षित क्वेरी). PlantUML पाइपलाइन इसे प्रबंधित करती हैक्या के साथ?(निर्धारित आरेख, संस्करणित, हमेशा अद्यतन) _

स्थापना : 5 मिनट की चेकलिस्ट

# चरण आदेश

1

Graphify इंस्टॉल करें

uv tool install graphifyy

2

अपवादों को कॉन्फ़िगर करें

बनाना`.graphifyignore`

3

Knowledge Graph निकालें

graphify . --no-viz

4

डायग्राम्स बनाएँ

./gradlew generateKnowledgeGraphDiagram

5

परिणामों को कमिट करें

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/

जाल और निवारण उपाय

जाल विवरण शमन

बहुत घना ग्राफ

एक बड़ा प्रोजेक्ट सैकड़ों अपठनीय नोड्स उत्पन्न करता है

उपयोग करना`-Pplantuml.kg.maxNodes=30`और समुदाय द्वारा फ़िल्टर

बहुत व्यापक अपवाद

बहुत सारी फ़ाइलों में`.graphifyignore`ग्राफ़ का मूल्य कम करता है

सिर्फ credentials और build को बाहर रखना शुरू करें

तीरों की दिशा

किनारों INFERRED की दिशा अस्पष्ट हो सकती है

फ़िल्टर द्वारा`-Pplantuml.kg.edgeTypes=EXTRACTED`केवल कुछ संबंधों के लिए

अप्रचलित ग्राफ़

कोड बदलता है लेकिन ग्राफ़ को पुनः नहीं बनाया जाता

उपयोग करना`graphify . --update`नियमित रूप से या git हुक`graphify hook install`

संशोधित लागत

इन्क्रीमेंटल अपडेट लगभग निःशुल्क हैं (ट्री‑सिटर स्थानीय)

केवल दस्तावेज़ (.adoc) वे LLM टोकन की खपत करते हैं

अंत में हमें क्या प्राप्त होता है

@startuml
skinparam backgroundColor #FEFEFE

rectangle "पहले" as avant {
    card "हाथ से बनाए गए आरेख\nसदैव अप्रचलित\nकोई उन्हें अद्यतन नहीं करता" as av1 #FDEDEC
}

rectangle "बाद" as apres {
    card "स्वचालित रूप से उत्पन्न आरेख\nकोड के साथ हमेशा अद्यतित\nGit में संस्करणित\nनियतात्मक और पुनरुत्पादनीय" as ap1 #E8F8E8
}

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

@enduml

वास्तविक लाभ :

लाभ विवरण

हमेशा अद्यतन दस्तावेज़

डायग्राम वर्तमान कोड को दर्शाते हैं, एक मैनुअल स्नैपशॉट नहीं

शून्य रखरखाव प्रयास

डायग्राम प्रत्येक बिल्ड पर पुन: बनते हैं

तकनीकी ऋण में कमी

अब डायग्राम को मैन्युअली बनाए रखने की आवश्यकता नहीं है

नए के लिए दृश्य संदर्भ

एक नया डेवलपर आर्किटेक्चर को देखकर समझता है

Fine-tuning संभाव्य

जोड़े (उप-ग्राफ़ → आरेख) एआई प्रशिक्षण के उदाहरण हैं

स्वचालित सत्यापन

`PlantumlService.validateSyntax()`प्रत्येक उत्पन्न आरेख की जाँच करता है

तेज़ ओनबोर्डिंग

5 आरेख = वास्तुकला का पूर्ण दृश्य

_ जिसके पास एक _pourquoi है, वह सभी comment को सह सकता है। __

क्यों pourquoi : हमेशा अप-टू-डेट डायग्राम। कैसे comment : Gradle पाइपलाइन में दो कमांड।

लिंक

संबंधित लेख