5.5 KiB
5.5 KiB
Diagram generation quality checklist
This checklist distills the research used to improve generated SAP BTP diagrams.
General architecture diagram quality
- A diagram should stand alone: title, scope, notation, and acronyms must be understandable without a long narration. Source: https://c4model.com/diagrams/notation
- Avoid ambiguous boxes and lines: element purpose, technology/protocol, and relationship intent should be visible. Source: https://c4model.com/introduction
- Every meaningful relationship should be directional and labelled with a specific intent or protocol where possible. Source: https://c4model.com/diagrams/notation
- Keep abstraction level consistent; mixing overview and implementation details makes diagrams hard to read. Source: https://c4model.com/introduction
SAP-specific quality
- Use the SAP BTP starter kit, official templates, and shape libraries instead of starting from blank XML. Source: https://architecture.learning.sap.com/docs/community/diagrams
- Keep icon sizes, text formatting, and line styles consistent; do not invent custom arrows. Source: https://architecture.learning.sap.com/docs/community/diagrams
- Use the BTP service icon version with the grey background circle. Source: https://sap.github.io/btp-solution-diagrams/docs/btp_guideline/diagr_comp/icons/
- Preserve SAP area colors and 16 px corner radius; use accent colors sparingly. Source: https://sap.github.io/btp-solution-diagrams/docs/btp_guideline/diagr_comp/areas/
- Use connector semantics consistently: trust is usually pink, authentication green, authorization indigo, and firewalls/network barriers thick grey. Source: https://sap.github.io/btp-solution-diagrams/docs/btp_guideline/diagr_comp/lines_connectors/
- Do not downscale whole diagrams to fit; SAP's text sizes and line styles are tuned for the target medium. Source: https://sap.github.io/btp-solution-diagrams/docs/solution_diagr_intro/big_picture/
Implementation consequences
select_reference.pyprefers explicit reference families such asRA0001, preserves explicit L0/L1/L2 level hints, and reads curatedtemplate-metadata.jsonaliases/tags so generic labels likePage-1do not dominate selection.- Generic Agentic AI + Joule prompts should anchor on
ac_RA0029_AgenticAI_root.drawio; use the Embodied AI template only for explicit embodied/robotic/physical-agent scenarios. eval_corpus.py createprovides a direct description-to-diagram path for smoke tests and examples.- Preserve SAP Architecture Center reference-canvas structure, including white background, SAP footer/reference id/QR where present, network dividers, and inline pill notation. Do not add a dark dashboard background or a bottom legend band to templates that do not already have one.
eval_corpus.py run --exclude-target-templatenow reports the nearest visual fallback templates computed from SAP fingerprints. These hints keep leave-one-out evaluation focused on visual fidelity when the exact target template is intentionally unavailable. Use--no-style-neighbor-hintsfor a pure semantic selector test.- Overnight runs classify failures into
near-missandceiling-limited. A ceiling-limited case means the chosen alternate SAP template is structurally too far from the target; add a closer sibling template or improve geometry-aware generation instead of spending more model attempts. - Use the default
--retry-margin 8for long local runs. With--min-score 90, it retries only cases that already score 82+ and stops early on low-ceiling cases. - Use
references/external-test-corpus.mdfor the second-stage external SAP run. The olderSAP/sap-btp-reference-architecturesdiagrams are useful stress cases because they cover legacy and methodology-driven layouts that are not all visually close to the bundled templates. - The Ollama prompt now asks for protocols/flow semantics, target-audience consistency, and conservative template label replacements.
- Model label edits do not rewrite reserved legend/notation labels such as
Access,Authentication,Authorization,Trust, orDeployment. - Unguarded model replacements are limited to title/service labels or near-typo corrections, reducing semantic drift.
- Scoring normalizes known SAP upstream typos such as
Adminstrator,Provisoning, andPlaforms, so corrected output is not penalized. - Per-attempt
target-compare.jsonandbest-corpus-compare.jsonfiles explain why a candidate did or did not match the target. - Ollama runs use
/api/generatewith a JSON schema by default, temperature0, and CLI fallback if the local API is unavailable. This follows Ollama's structured-output guidance and keeps long runs machine-consumable. - Retry attempts now receive compact score feedback from the previous attempt: validator counts, weak fingerprint dimensions, target diffs, and rejected label replacements. This makes second/third attempts useful for near-miss cases while leaving low-ceiling template gaps for human/template review.
- Use
--from-run <run-dir> --case-class near-missfor focused retry runs. Re-running the full corpus after a stable plateau wastes time on ceiling-limited cases whose alternate template is structurally too far from the target. - Use
--case-id <substring>for manual smoke tests against one architecture family, for example--case-id ra0024for Joule/IAM or--case-id agenticaifor Agentic AI. - See
references/improvement-options.mdfor the researched option ranking and why direct XML generation, generic autolayout, and fine-tuning are not the best next moves for SAP-style fidelity.