sad-mcp 2.2.2 → 2.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -31,7 +31,7 @@ The shared files prepended to this prompt define the layout recipes, model shape
|
|
|
31
31
|
8. **UC labels describe actions WITH the information system, not physical real-world actions.** See §3 for the full rule and verb list.
|
|
32
32
|
9. **Every system-time / cron actor association MUST carry a timing label** (e.g., "פעם ביום", "כל 5 דקות"). See §2 and §8 for rendering.
|
|
33
33
|
10. **No "send-only" use cases.** If a UC's entire behavior is sending a message / notification / alert / email / SMS, it is not a UC — it is a step inside the UC that *decided* to send it. See §3.
|
|
34
|
-
11. **All narrative UC documentation must be in Hebrew.** Description, preconditions, postconditions, every scenario flow-step text and extension text, user stories (role / want / so), assumptions, and open questions must all
|
|
34
|
+
11. **All narrative UC documentation must be in Hebrew.** Description, preconditions, postconditions, every scenario flow-step text and extension text, user stories (`role` / `want` / `so` fields), assumptions, and open questions must all be written in Hebrew. User stories are rendered as "בתור [role], אני רוצה [want], כדי ש[so]" — write the field values in Hebrew accordingly. Identifier strings (`id`, `primaryActor: 'customer'`) stay ASCII. The validator (§12) rejects narrative fields that contain zero Hebrew characters.
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -162,20 +162,28 @@ UC documentation: [uc-id]
|
|
|
162
162
|
- ___________________
|
|
163
163
|
|
|
164
164
|
scenarios:
|
|
165
|
-
- id: sc-happy, name: "מסלול מרכזי
|
|
165
|
+
- id: sc-happy, name: "מסלול מרכזי"
|
|
166
166
|
flow:
|
|
167
167
|
1. [actor:primaryActor] ___________________
|
|
168
168
|
2. [system] ___________________
|
|
169
169
|
3. [include:uc-xxx] ___________________ (only if §4.2 gate passed)
|
|
170
170
|
4. [actor:secondary] ___________________
|
|
171
|
-
extensions:
|
|
172
|
-
2a.
|
|
173
|
-
4a.
|
|
174
|
-
|
|
171
|
+
extensions: (error/exception handling — one per step where failure is realistic)
|
|
172
|
+
2a. אם ___________ — המערכת ___________ (e.g. wrong input, not found, timeout)
|
|
173
|
+
4a. אם ___________ — המערכת ___________
|
|
174
|
+
|
|
175
|
+
Additional scenarios — add one when the SAME GOAL is achieved via a meaningfully different PATH or TRIGGER.
|
|
176
|
+
Rule: same "what", different "how" or different starting condition → new scenario.
|
|
177
|
+
Examples: "רישום רגיל" vs "רישום מאוחר עם קנס"; "תשלום בכרטיס" vs "תשלום בקופון".
|
|
178
|
+
Do NOT add a scenario just for a different error outcome — that belongs in extensions of the main scenario.
|
|
179
|
+
|
|
180
|
+
- id: sc-alt-1, name: "מסלול חלופי: ___"
|
|
181
|
+
flow: ...
|
|
182
|
+
extensions: ...
|
|
175
183
|
|
|
176
184
|
userStories: (as many as the UC warrants — one per distinct stakeholder need; not a fixed number)
|
|
177
|
-
-
|
|
178
|
-
-
|
|
185
|
+
- בתור [תפקיד], אני רוצה [מה], כדי ש[למה].
|
|
186
|
+
- בתור [תפקיד שונה או אותו תפקיד עם מטרה שונה], אני רוצה [...], כדי ש[...].
|
|
179
187
|
- ... (keep adding until every user-facing goal tied to this UC is represented)
|
|
180
188
|
|
|
181
189
|
wireframe?: (optional — only where the UC benefits from a UI mock; see §WF)
|
|
@@ -235,6 +243,35 @@ endpoint = { x: cx + rx * Math.cos(angle), y: cy + ry * Math.sin(angle) };
|
|
|
235
243
|
|
|
236
244
|
**No legend.** Do not add a legend bar to the diagram.
|
|
237
245
|
|
|
246
|
+
### «include» / «extend» arrow template
|
|
247
|
+
|
|
248
|
+
Define markers once in `<defs>` using `<polyline>` (NOT `<polygon>` — polygon closes the triangle, producing a double-headed appearance):
|
|
249
|
+
|
|
250
|
+
```svg
|
|
251
|
+
<defs>
|
|
252
|
+
<marker id="arrow-include" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
253
|
+
<polyline points="0 0, 9 3.5, 0 7" fill="none" stroke="#7c3aed" stroke-width="1.2"/>
|
|
254
|
+
</marker>
|
|
255
|
+
<marker id="arrow-extend" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
256
|
+
<polyline points="0 0, 9 3.5, 0 7" fill="none" stroke="#7c3aed" stroke-width="1.2"/>
|
|
257
|
+
</marker>
|
|
258
|
+
</defs>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
For each «include»/«extend» line, add a `<text>` with `data-label-for="{from-id} {to-id}"` — `fixLayout` reads this and repositions the label to the line midpoint automatically:
|
|
262
|
+
|
|
263
|
+
```svg
|
|
264
|
+
<line data-conn-from="uc-a" data-conn-to="uc-b"
|
|
265
|
+
x1="0" y1="0" x2="0" y2="0"
|
|
266
|
+
stroke="#7c3aed" stroke-width="1.6" stroke-dasharray="6 4"
|
|
267
|
+
marker-end="url(#arrow-include)"/>
|
|
268
|
+
<text data-label-for="uc-a uc-b" x="0" y="0"
|
|
269
|
+
text-anchor="middle" font-size="9.5" fill="#7c3aed"
|
|
270
|
+
font-family="'IBM Plex Mono',monospace">«include»</text>
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Never write `«include target»` or any annotation inside a UC ellipse group.**
|
|
274
|
+
|
|
238
275
|
---
|
|
239
276
|
|
|
240
277
|
## 6. Layout
|
|
@@ -541,8 +578,8 @@ const useCaseDocs = {
|
|
|
541
578
|
}
|
|
542
579
|
],
|
|
543
580
|
userStories: [
|
|
544
|
-
{ role: 'לקוח', want: 'להזמין מוצר במהירות', so: 'שאקבל אותו תוך 48
|
|
545
|
-
],
|
|
581
|
+
{ role: 'לקוח', want: 'להזמין מוצר במהירות', so: 'שאקבל אותו תוך 48 שעות' }
|
|
582
|
+
], // rendered as: "בתור לקוח, אני רוצה להזמין מוצר במהירות, כדי ששאקבל אותו תוך 48 שעות"
|
|
546
583
|
wireframe: '' // optional per §WF
|
|
547
584
|
}
|
|
548
585
|
// ... one entry per UC
|