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.
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-FASTAPI.md +23 -23
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-JAVA.md +23 -23
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-NET.md +23 -23
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE.md +23 -23
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/workflow.agentflow.xml +9 -5
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-DESKTOP.md +46 -46
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-ELECTRON.md +51 -51
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MINIAPP.md +48 -48
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MOBILE.md +42 -42
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI.md +47 -47
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/workflow.agentflow.xml +10 -1
- package/package.json +1 -1
package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI.md
CHANGED
|
@@ -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](
|
|
52
|
-
| Filter Area | Status Dropdown | Dropdown | {Filter product status} | Change triggers query | [Source](
|
|
53
|
-
| Filter Area | Query Button | Button | {Execute query} | Click to refresh list | [Source](
|
|
54
|
-
| List Area | Edit Link | Link | {Open edit page} | Click to navigate | [Source](
|
|
55
|
-
| List Area | Delete Link | Link | {Delete record} | Click to confirm deletion | [Source](
|
|
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](
|
|
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](
|
|
95
|
-
| 2 | Parse URL parameters | Route change | [Source](
|
|
96
|
-
| 3 | Load initial data | After params parsed | [Source](
|
|
97
|
-
| 4 | Render page | Data loaded | [Source](
|
|
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](
|
|
103
|
-
| formatParams | Shared Method | Format query parameters | [Method Doc](
|
|
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](
|
|
129
|
-
| 2 | Prepare query params | Validation passed | [Source](
|
|
130
|
-
| 3 | Call API | Params ready | [Source](
|
|
131
|
-
| 4 | Handle response | API returned | [Source](
|
|
132
|
-
| 5 | Update UI | Data processed | [Source](
|
|
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](
|
|
138
|
-
| buildQuery | Shared Method | Build query object | [Method Doc](
|
|
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](
|
|
155
|
-
| 2 | Load/Clear sub-options | Based on value | [Source](
|
|
156
|
-
| 3 | Update UI | Options ready | [Source](
|
|
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](
|
|
179
|
-
| 2 | Refresh data | Page is active | [Source](
|
|
180
|
-
| 3 | Update UI | Data received | [Source](
|
|
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](
|
|
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](
|
|
204
|
-
| 2 | Save page state | Cleanup start | [Source](
|
|
205
|
-
| 3 | Cleanup resources | State saved | [Source](
|
|
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](
|
|
217
|
-
| {Field 2} | String | {Description} | [Source](
|
|
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](
|
|
224
|
-
| {Form Field 2} | Number | {≥0} | 0 | [Source](
|
|
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](
|
|
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](
|
|
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](
|
|
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](
|
|
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](
|
|
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](
|
|
280
|
-
| View sensitive fields | Have {data permission} scope | Display sensitive fields as "***" | [Source](
|
|
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](
|
|
285
|
-
2. **{Rule 2}**: {e.g., When stock is 0, product status automatically changes to "Off-shelf"} | [Source](
|
|
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](
|
|
292
|
-
| Form submission | Product code format error (must start with SP) | Product code must start with SP, please check | Backend submit | [Source](
|
|
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](
|
|
323
|
-
- [{StoreFile}.ts](
|
|
324
|
-
- [{ComponentFile}.vue](
|
|
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 ==================== -->
|