feat(docs): docs viewer, API reference generator, markdown rendering
- Add YAML frontmatter (title/order/category) to 13 docs/*.md files
- Add services/docs_service.py: mtime-cache, frontmatter parsing w/ fallback,
bleach sanitize, path traversal protection
- Add routes/docs.py: GET /api/docs, GET /api/docs/<slug>, GET /api/docs/api-reference
- Register docs_bp in app.py
- Add frontend /docs + /docs/[slug] routes (sidebar nav + markdown render)
- Add frontend/src/types/docs.ts interfaces
- Add link from /help page to /docs viewer
- Add scripts/validate_docs.py: frontmatter + broken link validation
- Add elemes.sh docs-validate command
Endpoints documented in API reference: /quiz-attempts/<lesson>,
/sessions, /bab/<folder>, /compile/sessions, /lesson/<slug>.json + all 30 routes
2026-08-17 11:29:43 +07:00
|
|
|
---
|
|
|
|
|
title: Flowchart Interaktif
|
|
|
|
|
order: 10
|
|
|
|
|
category: flowchart
|
|
|
|
|
---
|
2026-08-08 11:57:08 +07:00
|
|
|
# 10. Flowchart Interaktif
|
|
|
|
|
|
|
|
|
|
Blok `` ```flowchart `` di materi markdown membuat flowchart interaktif dengan evaluasi frontend.
|
|
|
|
|
|
|
|
|
|
## Format
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
```flowchart
|
|
|
|
|
start → [Kondisi A?] → ya → [Aksi 1] → end
|
|
|
|
|
↓ tidak
|
|
|
|
|
[Aksi 2] → end
|
|
|
|
|
```
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Fitur
|
|
|
|
|
|
|
|
|
|
- **Node & edge** — node dengan label, edge dengan arah
|
|
|
|
|
- **Obstacle-aware orthogonal routing** — routing edge menghindari obstacle
|
|
|
|
|
- **Readonly mode** — flowchart hanya bisa dilihat, tidak diedit
|
|
|
|
|
- **Evaluasi frontend** — evaluasi struktur flowchart (JSON) di sisi klien
|
|
|
|
|
|
|
|
|
|
## Evaluasi
|
|
|
|
|
|
|
|
|
|
Flowchart dievaluasi oleh frontend:
|
|
|
|
|
1. Parse JSON flowchart data
|
|
|
|
|
2. Verifikasi struktur: node ada, edge valid, tidak ada siklus (jika tidak diizinkan)
|
|
|
|
|
3. Render visual dengan routing orthogonal
|
|
|
|
|
|
|
|
|
|
## Contoh
|
|
|
|
|
|
|
|
|
|
Lihat `examples/content/flowchart.md` untuk contoh flowchart dengan evaluasi.
|