91 lines
3.2 KiB
Markdown
91 lines
3.2 KiB
Markdown
# Αναφορά Σύνταξης SOP
|
|
|
|
Οι ορισμοί SOP φορτώνονται από υποκαταλόγους κάτω από το `sops_dir` (προεπιλογή: `<workspace>/sops`).
|
|
|
|
## 1. Διάταξη Καταλόγου
|
|
|
|
```text
|
|
<workspace>/sops/
|
|
deploy-prod/
|
|
SOP.toml
|
|
SOP.md
|
|
```
|
|
|
|
Κάθε SOP πρέπει να έχει `SOP.toml`. Το `SOP.md` είναι προαιρετικό, αλλά εκτελέσεις χωρίς αναλυμένα βήματα θα αποτύχουν κατά την επικύρωση.
|
|
|
|
## 2. `SOP.toml`
|
|
|
|
```toml
|
|
[sop]
|
|
name = "deploy-prod"
|
|
description = "Deploy service to production"
|
|
version = "1.0.0"
|
|
priority = "high" # low | normal | high | critical
|
|
execution_mode = "supervised" # auto | supervised | step_by_step | priority_based
|
|
cooldown_secs = 300
|
|
max_concurrent = 1
|
|
|
|
[[triggers]]
|
|
type = "webhook"
|
|
path = "/sop/deploy"
|
|
|
|
[[triggers]]
|
|
type = "manual"
|
|
|
|
[[triggers]]
|
|
type = "mqtt"
|
|
topic = "ops/deploy"
|
|
condition = "$.env == \"prod\""
|
|
```
|
|
|
|
## 3. Μορφή Βημάτων `SOP.md`
|
|
|
|
Τα βήματα αναλύονται από την ενότητα `## Steps`.
|
|
|
|
```md
|
|
## Steps
|
|
|
|
1. **Preflight** — Check service health and release window.
|
|
- tools: http_request
|
|
|
|
2. **Deploy** — Run deployment command.
|
|
- tools: shell
|
|
- requires_confirmation: true
|
|
```
|
|
|
|
Συμπεριφορά parser:
|
|
|
|
- Αριθμημένα στοιχεία (`1.`, `2.`, ...) ορίζουν τη σειρά βημάτων.
|
|
- Κεφαλαίο έντονο κείμενο (`**Τίτλος**`) γίνεται τίτλος βήματος.
|
|
- `- tools:` αντιστοιχίζεται σε `suggested_tools`.
|
|
- `- requires_confirmation: true` επιβάλλει έγκριση για αυτό το βήμα.
|
|
|
|
## 4. Τύποι Trigger
|
|
|
|
| Τύπος | Πεδία | Σημειώσεις |
|
|
|---|---|---|
|
|
| `manual` | κανένα | Ενεργοποιείται από το εργαλείο `sop_execute` (όχι από CLI `zeroclaw sop run`). |
|
|
| `webhook` | `path` | Ακριβής αντιστοίχιση με μονοπάτι αιτήματος (`/sop/...` ή `/webhook`). |
|
|
| `mqtt` | `topic`, προαιρετικό `condition` | Το MQTT topic υποστηρίζει wildcards `+` και `#`. |
|
|
| `cron` | `expression` | Υποστηρίζει 5, 6 ή 7 πεδία (τα 5-πεδία λαμβάνουν δευτερόλεπτα εσωτερικά). |
|
|
| `peripheral` | `board`, `signal`, προαιρετικό `condition` | Αντιστοιχεί `"{board}/{signal}"`. |
|
|
|
|
## 5. Σύνταξη Condition
|
|
|
|
Το `condition` αξιολογείται fail-closed (μη έγκυρη συνθήκη/payload => καμία αντιστοίχιση).
|
|
|
|
- Συγκρίσεις JSON path: `$.value > 85`, `$.status == "critical"`
|
|
- Άμεσες αριθμητικές συγκρίσεις: `> 0` (χρήσιμο για απλά payloads)
|
|
- Τελεστές: `>=`, `<=`, `!=`, `>`, `<`, `==`
|
|
|
|
## 6. Επικύρωση
|
|
|
|
Χρησιμοποιήστε:
|
|
|
|
```bash
|
|
zeroclaw sop validate
|
|
zeroclaw sop validate <name>
|
|
```
|
|
|
|
Η επικύρωση προειδοποιεί για κενά ονόματα/περιγραφές, απόντα triggers, απόντα βήματα και κενά στην αρίθμηση βημάτων.
|