speccrew 0.7.9 → 0.7.10

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.
@@ -48,15 +48,15 @@ source-path: {sourcePath}
48
48
 
49
49
  | Area | Element | Type | Description | Interaction | Source Link |
50
50
  |------|---------|------|-------------|-------------|-------------|
51
- | Filter Area | Keyword | Input | {Fuzzy search product name/code} | Enter to trigger query | [Source](../../{sourcePath}) |
52
- | Filter Area | Status Dropdown | Dropdown | {Filter product status} | Change triggers query | [Source](../../{sourcePath}) |
53
- | Filter Area | Query Button | Button | {Execute query} | Click to refresh list | [Source](../../{sourcePath}) |
54
- | List Area | Edit Link | Link | {Open edit page} | Click to navigate | [Source](../../{sourcePath}) |
55
- | List Area | Delete Link | Link | {Delete record} | Click to confirm deletion | [Source](../../{sourcePath}) |
51
+ | Filter Area | Keyword | Input | {Fuzzy search product name/code} | Enter to trigger query | [Source](../../../../../../{sourcePath}) |
52
+ | Filter Area | Status Dropdown | Dropdown | {Filter product status} | Change triggers query | [Source](../../../../../../{sourcePath}) |
53
+ | Filter Area | Query Button | Button | {Execute query} | Click to refresh list | [Source](../../../../../../{sourcePath}) |
54
+ | List Area | Edit Link | Link | {Open edit page} | Click to navigate | [Source](../../../../../../{sourcePath}) |
55
+ | List Area | Delete Link | Link | {Delete record} | Click to confirm deletion | [Source](../../../../../../{sourcePath}) |
56
56
 
57
57
  **External References:**
58
58
  - Edit page: Navigate to [Edit Page](./edit.md) (external page, not drawn here)
59
- - Delete confirmation: Uses [DeleteConfirm Component](../../components/DeleteConfirm.md) (shared component)
59
+ - Delete confirmation: Uses [DeleteConfirm Component](../../../../../../components/DeleteConfirm.md) (shared component)
60
60
 
61
61
  <!-- AI-NOTE: DO NOT draw prototypes for external components/modals defined in other files -->
62
62
  <!-- AI-NOTE: Only document embedded modals that are defined within the same source file -->
@@ -91,16 +91,16 @@ graph TB
91
91
 
92
92
  | Step | Business Operation | Trigger | Source |
93
93
  |------|-------------------|---------|--------|
94
- | 1 | Initialize page state | Page mount | [Source](../../{sourcePath}) |
95
- | 2 | Parse URL parameters | Route change | [Source](../../{sourcePath}) |
96
- | 3 | Load initial data | After params parsed | [Source](../../{sourcePath}) |
97
- | 4 | Render page | Data loaded | [Source](../../{sourcePath}) |
94
+ | 1 | Initialize page state | Page mount | [Source](../../../../../../{sourcePath}) |
95
+ | 2 | Parse URL parameters | Route change | [Source](../../../../../../{sourcePath}) |
96
+ | 3 | Load initial data | After params parsed | [Source](../../../../../../{sourcePath}) |
97
+ | 4 | Render page | Data loaded | [Source](../../../../../../{sourcePath}) |
98
98
 
99
99
  **Referenced Items:**
100
100
  | Name | Type | Main Function | Document Path |
101
101
  |------|------|---------------|---------------|
102
- | getList | API | Fetch data list | [API Doc](../../apis/getList.md) |
103
- | formatParams | Shared Method | Format query parameters | [Method Doc](../../utils/formatParams.md) |
102
+ | getList | API | Fetch data list | [API Doc](../../../../../../apis/getList.md) |
103
+ | formatParams | Shared Method | Format query parameters | [Method Doc](../../../../../../utils/formatParams.md) |
104
104
 
105
105
  ### 3.2 Component Event Flows
106
106
 
@@ -125,17 +125,17 @@ graph TB
125
125
 
126
126
  | Step | Business Operation | Trigger | Source |
127
127
  |------|-------------------|---------|--------|
128
- | 1 | Validate input | onClick | [Source](../../{sourcePath}) |
129
- | 2 | Prepare query params | Validation passed | [Source](../../{sourcePath}) |
130
- | 3 | Call API | Params ready | [Source](../../{sourcePath}) |
131
- | 4 | Handle response | API returned | [Source](../../{sourcePath}) |
132
- | 5 | Update UI | Data processed | [Source](../../{sourcePath}) |
128
+ | 1 | Validate input | onClick | [Source](../../../../../../{sourcePath}) |
129
+ | 2 | Prepare query params | Validation passed | [Source](../../../../../../{sourcePath}) |
130
+ | 3 | Call API | Params ready | [Source](../../../../../../{sourcePath}) |
131
+ | 4 | Handle response | API returned | [Source](../../../../../../{sourcePath}) |
132
+ | 5 | Update UI | Data processed | [Source](../../../../../../{sourcePath}) |
133
133
 
134
134
  **Referenced Items:**
135
135
  | Name | Type | Main Function | Document Path |
136
136
  |------|------|---------------|---------------|
137
- | queryData | API | Search with filters | [API Doc](../../apis/queryData.md) |
138
- | buildQuery | Shared Method | Build query object | [Method Doc](../../utils/buildQuery.md) |
137
+ | queryData | API | Search with filters | [API Doc](../../../../../../apis/queryData.md) |
138
+ | buildQuery | Shared Method | Build query object | [Method Doc](../../../../../../utils/buildQuery.md) |
139
139
 
140
140
  #### 3.2.2 {Event Name: e.g., Dropdown onChange}
141
141
 
@@ -151,9 +151,9 @@ graph TB
151
151
 
152
152
  | Step | Business Operation | Trigger | Source |
153
153
  |------|-------------------|---------|--------|
154
- | 1 | Check selected value | onChange | [Source](../../{sourcePath}) |
155
- | 2 | Load/Clear sub-options | Based on value | [Source](../../{sourcePath}) |
156
- | 3 | Update UI | Options ready | [Source](../../{sourcePath}) |
154
+ | 1 | Check selected value | onChange | [Source](../../../../../../{sourcePath}) |
155
+ | 2 | Load/Clear sub-options | Based on value | [Source](../../../../../../{sourcePath}) |
156
+ | 3 | Update UI | Options ready | [Source](../../../../../../{sourcePath}) |
157
157
 
158
158
  ### 3.3 Timer/WebSocket Flows (if applicable)
159
159
 
@@ -175,14 +175,14 @@ graph TB
175
175
 
176
176
  | Step | Business Operation | Trigger | Source |
177
177
  |------|-------------------|---------|--------|
178
- | 1 | Check page state | Timer interval | [Source](../../{sourcePath}) |
179
- | 2 | Refresh data | Page is active | [Source](../../{sourcePath}) |
180
- | 3 | Update UI | Data received | [Source](../../{sourcePath}) |
178
+ | 1 | Check page state | Timer interval | [Source](../../../../../../{sourcePath}) |
179
+ | 2 | Refresh data | Page is active | [Source](../../../../../../{sourcePath}) |
180
+ | 3 | Update UI | Data received | [Source](../../../../../../{sourcePath}) |
181
181
 
182
182
  **Referenced Items:**
183
183
  | Name | Type | Main Function | Document Path |
184
184
  |------|------|---------------|---------------|
185
- | getLatest | API | Get latest data | [API Doc](../../apis/getLatest.md) |
185
+ | getLatest | API | Get latest data | [API Doc](../../../../../../apis/getLatest.md) |
186
186
 
187
187
  ### 3.4 Page Close/Cleanup Flow (if applicable)
188
188
 
@@ -200,9 +200,9 @@ graph TB
200
200
 
201
201
  | Step | Business Operation | Trigger | Source |
202
202
  |------|-------------------|---------|--------|
203
- | 1 | Clear timers | beforeUnmount | [Source](../../{sourcePath}) |
204
- | 2 | Save page state | Cleanup start | [Source](../../{sourcePath}) |
205
- | 3 | Cleanup resources | State saved | [Source](../../{sourcePath}) |
203
+ | 1 | Clear timers | beforeUnmount | [Source](../../../../../../{sourcePath}) |
204
+ | 2 | Save page state | Cleanup start | [Source](../../../../../../{sourcePath}) |
205
+ | 3 | Cleanup resources | State saved | [Source](../../../../../../{sourcePath}) |
206
206
 
207
207
  ## 4. Data Field Definition
208
208
 
@@ -213,15 +213,15 @@ graph TB
213
213
 
214
214
  | Field Name | Field Type | Description | Source |
215
215
  |------------|------------|-------------|--------|
216
- | {Field 1} | String/Number/Boolean/Array/Object | {Description} | [Source](../../{sourcePath}) |
217
- | {Field 2} | String | {Description} | [Source](../../{sourcePath}) |
216
+ | {Field 1} | String/Number/Boolean/Array/Object | {Description} | [Source](../../../../../../{sourcePath}) |
217
+ | {Field 2} | String | {Description} | [Source](../../../../../../{sourcePath}) |
218
218
 
219
219
  ### 4.2 Form Fields (if applicable)
220
220
 
221
221
  | Field Name | Field Type | Validation Rules | Default Value | Source |
222
222
  |------------|------------|------------------|---------------|--------|
223
- | {Form Field 1} | String | {Required, length 1-100} | - | [Source](../../{sourcePath}) |
224
- | {Form Field 2} | Number | {≥0} | 0 | [Source](../../{sourcePath}) |
223
+ | {Form Field 1} | String | {Required, length 1-100} | - | [Source](../../../../../../{sourcePath}) |
224
+ | {Form Field 2} | Number | {≥0} | 0 | [Source](../../../../../../{sourcePath}) |
225
225
 
226
226
 
227
227
  ## 5. References
@@ -234,19 +234,19 @@ graph TB
234
234
 
235
235
  | API Name | Type | Main Function | Source | Document Path |
236
236
  |----------|------|---------------|--------|---------------|
237
- | {API Name} | Query/Mutation | {Brief description} | [Source](../../{apiSourcePath}) | [API Doc](../../apis/{api-name}.md) |
237
+ | {API Name} | Query/Mutation | {Brief description} | [Source](../../../../../../{apiSourcePath}) | [API Doc](../../../../../../apis/{api-name}.md) |
238
238
 
239
239
  ### 5.2 Frontend Shared Methods
240
240
 
241
241
  | Method Name | Type | Main Function | Source | Document Path |
242
242
  |-------------|------|---------------|--------|---------------|
243
- | {Method Name} | Utils/Helpers | {Brief description} | [Source](../../{methodSourcePath}) | [Method Doc](../../utils/{method-name}.md) |
243
+ | {Method Name} | Utils/Helpers | {Brief description} | [Source](../../../../../../{methodSourcePath}) | [Method Doc](../../../../../../utils/{method-name}.md) |
244
244
 
245
245
  ### 5.3 Shared Components
246
246
 
247
247
  | Component Name | Type | Main Function | Source | Document Path |
248
248
  |----------------|------|---------------|--------|---------------|
249
- | {Component Name} | UI Component | {Brief description} | [Source](../../{componentSourcePath}) | [Component Doc](../../components/{component-name}.md) |
249
+ | {Component Name} | UI Component | {Brief description} | [Source](../../../../../../{componentSourcePath}) | [Component Doc](../../../../../../components/{component-name}.md) |
250
250
 
251
251
  ### 5.4 Other Pages (This Page References)
252
252
 
@@ -256,7 +256,7 @@ graph TB
256
256
 
257
257
  | Page Name | Relation Type | Description | Source | Document Path |
258
258
  |-----------|---------------|-------------|--------|---------------|
259
- | {Page Name} | Navigate/Embed | {Relation description} | [Source](../../{pageSourcePath}) | [Page Doc](../{page-path}.md) |
259
+ | {Page Name} | Navigate/Embed | {Relation description} | [Source](../../../../../../{pageSourcePath}) | [Page Doc](../{page-path}.md) |
260
260
 
261
261
  ### 5.5 Referenced By (Other Pages Reference This Page)
262
262
 
@@ -265,7 +265,7 @@ graph TB
265
265
 
266
266
  | Page Name | Function Description | Source Path | Document Path |
267
267
  |-----------|---------------------|-------------|---------------|
268
- | {Referencing Page Name} | {e.g., "Click order ID to navigate to this detail page"} | {source-path} | [Page Doc](../{page-path}.md) |
268
+ | {Referencing Page Name} | {e.g., "Click order ID to navigate to this detail page"} | {source-path} | [Page Doc](../../../../../../{page-path}.md) |
269
269
 
270
270
 
271
271
  ## 6. Business Rule Constraints
@@ -276,20 +276,20 @@ graph TB
276
276
 
277
277
  | Operation | Permission Requirement | No Permission Handling | Source |
278
278
  |-----------|----------------------|----------------------|--------|
279
- | Add/Edit/Delete | Have {role name} role or {permission code} permission | Hide operation button, show "No permission" when clicked | [Source](../../{sourcePath}) |
280
- | View sensitive fields | Have {data permission} scope | Display sensitive fields as "***" | [Source](../../{sourcePath}) |
279
+ | Add/Edit/Delete | Have {role name} role or {permission code} permission | Hide operation button, show "No permission" when clicked | [Source](../../../../../../{sourcePath}) |
280
+ | View sensitive fields | Have {data permission} scope | Display sensitive fields as "***" | [Source](../../../../../../{sourcePath}) |
281
281
 
282
282
  ### 6.2 Business Logic Rules
283
283
 
284
- 1. **{Rule 1}**: {e.g., Product code generation rule is "SP+YYMMDD+6 random digits"} | [Source](../../{sourcePath})
285
- 2. **{Rule 2}**: {e.g., When stock is 0, product status automatically changes to "Off-shelf"} | [Source](../../{sourcePath})
284
+ 1. **{Rule 1}**: {e.g., Product code generation rule is "SP+YYMMDD+6 random digits"} | [Source](../../../../../../{sourcePath})
285
+ 2. **{Rule 2}**: {e.g., When stock is 0, product status automatically changes to "Off-shelf"} | [Source](../../../../../../{sourcePath})
286
286
 
287
287
  ### 6.3 Validation Rules
288
288
 
289
289
  | Validation Scenario | Validation Rule | Prompt Message | Validation Timing | Source |
290
290
  |--------------------|-----------------|----------------|-------------------|--------|
291
- | Form submission | Product name cannot be empty | Please enter product name | Frontend blur + Backend submit | [Source](../../{sourcePath}) |
292
- | Form submission | Product code format error (must start with SP) | Product code must start with SP, please check | Backend submit | [Source](../../{sourcePath}) |
291
+ | Form submission | Product name cannot be empty | Please enter product name | Frontend blur + Backend submit | [Source](../../../../../../{sourcePath}) |
292
+ | Form submission | Product code format error (must start with SP) | Product code must start with SP, please check | Backend submit | [Source](../../../../../../{sourcePath}) |
293
293
 
294
294
 
295
295
  ## 7. Notes and Additional Information
@@ -319,6 +319,6 @@ graph TB
319
319
  **Related Module Document:** [Module Overview Document](../{{module-name}}-overview.md)
320
320
 
321
321
  **Section Source**
322
- - [{FeatureFile}.vue](../../{sourcePath})
323
- - [{StoreFile}.ts](../../{store-path})
324
- - [{ComponentFile}.vue](../../{component-path})
322
+ - [{FeatureFile}.vue](../../../../../../{sourcePath})
323
+ - [{StoreFile}.ts](../../../../../../{store-path})
324
+ - [{ComponentFile}.vue](../../../../../../{component-path})
@@ -376,7 +376,15 @@
376
376
  <block type="checkpoint" id="CP7" name="marker-written" desc="Marker file written">
377
377
  <field name="verify" value="file.exists(${completed_dir}/${markerName}.done.json)"/>
378
378
  </block>
379
-
379
+
380
+ <!-- ==================== MANDATORY GRAPH WRITE RULE ==================== -->
381
+ <block type="rule" id="R-GRAPH" level="mandatory" desc="Graph data write is MANDATORY">
382
+ <field name="text">MANDATORY: You MUST execute ALL graph write blocks (B32a through B32h) before proceeding to O1.</field>
383
+ <field name="text">Graph data (nodes + edges) MUST be appended to knowledges/bizs/graph/nodes.json and edges.json.</field>
384
+ <field name="text">DO NOT skip graph write. DO NOT jump directly to O1 output block.</field>
385
+ <field name="text">If graph directory does not exist, create it first.</field>
386
+ </block>
387
+
380
388
  <!-- Step 7b: Construct and Append Graph Data -->
381
389
  <!-- Construct Graph Nodes from UI Analysis -->
382
390
  <block type="task" id="B32a" action="analyze" desc="Construct page node">
@@ -556,6 +564,7 @@ console.log('Edges appended:', newEdges.length);
556
564
  <field name="message" value="Successfully analyzed ${fileName} feature from ${sourcePath}"/>
557
565
  <field name="platformType" from="${platform_type}"/>
558
566
  <field name="module" from="${module}"/>
567
+ <field name="graph_status" value="nodes and edges written to knowledges/bizs/graph/"/>
559
568
  </block>
560
569
 
561
570
  <!-- ==================== ERROR HANDLING ==================== -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccrew",
3
- "version": "0.7.9",
3
+ "version": "0.7.10",
4
4
  "description": "Spec-Driven Development toolkit for AI-powered IDEs",
5
5
  "author": "charlesmu99",
6
6
  "repository": {