You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -54,9 +54,9 @@ HTTP POST /dispatch/api/v1/mail/send
54
54
│
55
55
▼
56
56
┌───────────────────────────────────┐
57
-
│ 5-Stage Validation │
57
+
│ 7-Stage Gateway Pipeline │
58
58
│ │
59
-
│ 1 JSON-Parse + Struct-Tags │
59
+
│ 1 JSON-Decode + Struct-Validier.│
60
60
│ (validator, MIME-Whitelist, │
61
61
│ Größenlimits) │
62
62
│ │
@@ -74,18 +74,15 @@ HTTP POST /dispatch/api/v1/mail/send
74
74
│ 5 Spam-Dedup (SHA-256) │
75
75
│ appTag|subject|recip|size │
76
76
│ NATS KV spam (60s TTL) │
77
+
│ │
78
+
│ 6 Anhang-Upload │
79
+
│ decode base64 → Object Store │
80
+
│ Fehler → HTTP 503 │
81
+
│ │
82
+
│ 7 NATS Publish → DISPATCH_MAILS │
83
+
│ Fehler → HTTP 503 │
84
+
│ Erfolg → HTTP 202 │
77
85
└───────────────────────────────────┘
78
-
│
79
-
▼
80
-
Attachments → NATS Object Store
81
-
(key: {traceID}/{index}, Content gecleart)
82
-
│
83
-
▼
84
-
NATS Publish → DISPATCH_MAILS
85
-
(MailRequestDO: traceID, sender, ObjectKeys, ...)
86
-
│
87
-
▼
88
-
HTTP 202 Accepted
89
86
```
90
87
91
88
```
@@ -240,6 +237,7 @@ devbox run lint # golangci-lint
240
237
devbox run coverage-html # HTML-Coverage-Report → coverage.html
241
238
devbox run mutate # Mutations-Tests (gremlins) auf Core-Packages
242
239
devbox run metrics # Coverage + Mutation in einem Lauf
240
+
devbox run sonar # Coverage erzeugen + SonarQube-Scan
243
241
```
244
242
245
243
Der MS Graph Developer Proxy (`ghcr.io/dotnet/dev-proxy:latest`) mockt alle genutzten Graph-Endpunkte. Konfiguration in `dev-proxy/devproxyrc.json`, Mock-Antworten in `dev-proxy/mocks.json`.
Mutation-Tests laufen mit [gremlins](https://github.com/go-gremlins/gremlins) (`go tool gremlins unleash`) auf den Packages `internal/gateway`, `internal/quota`, `internal/spam`, `internal/worker`, `internal/pii` und `internal/hash`. Die Schwellwerte sind in [`.gremlins.yaml`](.gremlins.yaml) hinterlegt.
170
+
**Coverage pro Package:**
171
+
172
+
| Package | Coverage |
173
+
|---------|---------|
174
+
|`internal/config`| 96 % |
175
+
|`internal/domain`| 100 % |
176
+
|`internal/gateway`| 95 % |
177
+
|`internal/hash`| 100 % |
178
+
|`internal/msgraph`| 88 % |
179
+
|`internal/pii`| 100 % |
180
+
|`internal/quota`| 92 % |
181
+
|`internal/sender`| 95 % |
182
+
|`internal/spam`| 88 % |
183
+
|`internal/worker`| 84 % |
184
+
185
+
Mutation-Tests laufen mit [gremlins](https://github.com/go-gremlins/gremlins) (`go tool gremlins unleash`) auf den Packages `internal/gateway`, `internal/quota`, `internal/spam`, `internal/worker`, `internal/pii`, `internal/hash` und `internal/msgraph`. Die Schwellwerte sind in [`.gremlins.yaml`](.gremlins.yaml) hinterlegt.
186
+
187
+
Statische Code-Analyse via [SonarQube](http://10.27.27.202:9000/dashboard?id=dispatch). Token wird aus `.env` geladen (`SONAR_TOKEN=sqp_...`), nie im Repository gespeichert.
0 commit comments