speccrew 0.7.8 → 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-dispatch/SKILL.md +8 -1
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/workflow.agentflow.xml +8 -1
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/SKILL.md +2 -2
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/workflow.agentflow.xml +1 -1
- 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/.speccrew/skills/speccrew-pm-knowledge-detector/workflow.agentflow.xml +1 -1
- package/package.json +1 -1
|
@@ -68,22 +68,22 @@ source-path: {sourcePath}
|
|
|
68
68
|
|
|
69
69
|
| Area | Element | Type | Description | Interaction | Source Link |
|
|
70
70
|
|------|---------|------|-------------|-------------|-------------|
|
|
71
|
-
| Nav Bar | Back Button | Button | {Return to previous screen} | Tap to navigate back | [Source](
|
|
72
|
-
| Nav Bar | Title | Label | {Screen title} | - | [Source](
|
|
73
|
-
| Nav Bar | More Menu | Button | {Show action sheet} | Tap to show options | [Source](
|
|
74
|
-
| Content | List Item | Cell | {Display data item} | Tap to view detail | [Source](
|
|
75
|
-
| Content | Pull Refresh | Gesture | {Pull down to refresh} | Pull down gesture | [Source](
|
|
76
|
-
| FAB | Action Button | Button | {Primary action} | Tap to create/add | [Source](
|
|
71
|
+
| Nav Bar | Back Button | Button | {Return to previous screen} | Tap to navigate back | [Source](../../../../../../{sourcePath}) |
|
|
72
|
+
| Nav Bar | Title | Label | {Screen title} | - | [Source](../../../../../../{sourcePath}) |
|
|
73
|
+
| Nav Bar | More Menu | Button | {Show action sheet} | Tap to show options | [Source](../../../../../../{sourcePath}) |
|
|
74
|
+
| Content | List Item | Cell | {Display data item} | Tap to view detail | [Source](../../../../../../{sourcePath}) |
|
|
75
|
+
| Content | Pull Refresh | Gesture | {Pull down to refresh} | Pull down gesture | [Source](../../../../../../{sourcePath}) |
|
|
76
|
+
| FAB | Action Button | Button | {Primary action} | Tap to create/add | [Source](../../../../../../{sourcePath}) |
|
|
77
77
|
|
|
78
78
|
**Mobile-Specific Interactions:**
|
|
79
79
|
|
|
80
80
|
| Gesture | Action | Description | Source |
|
|
81
81
|
|---------|--------|-------------|--------|
|
|
82
|
-
| Tap | Select item | Navigate to detail | [Source](
|
|
83
|
-
| Long Press | Context menu | Show action sheet | [Source](
|
|
84
|
-
| Swipe Left | Delete/Reveal | Show delete/edit actions | [Source](
|
|
85
|
-
| Pull Down | Refresh | Reload data | [Source](
|
|
86
|
-
| Infinite Scroll | Load more | Pagination | [Source](
|
|
82
|
+
| Tap | Select item | Navigate to detail | [Source](../../../../../../{sourcePath}) |
|
|
83
|
+
| Long Press | Context menu | Show action sheet | [Source](../../../../../../{sourcePath}) |
|
|
84
|
+
| Swipe Left | Delete/Reveal | Show delete/edit actions | [Source](../../../../../../{sourcePath}) |
|
|
85
|
+
| Pull Down | Refresh | Reload data | [Source](../../../../../../{sourcePath}) |
|
|
86
|
+
| Infinite Scroll | Load more | Pagination | [Source](../../../../../../{sourcePath}) |
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
@@ -112,10 +112,10 @@ graph TB
|
|
|
112
112
|
|
|
113
113
|
| Step | Business Operation | Trigger | Source |
|
|
114
114
|
|------|-------------------|---------|--------|
|
|
115
|
-
| 1 | Initialize ViewModel | viewDidLoad/onCreate | [Source](
|
|
116
|
-
| 2 | Check authentication | After init | [Source](
|
|
117
|
-
| 3 | Load data | Auth passed | [Source](
|
|
118
|
-
| 4 | Render UI | Data loaded | [Source](
|
|
115
|
+
| 1 | Initialize ViewModel | viewDidLoad/onCreate | [Source](../../../../../../{sourcePath}) |
|
|
116
|
+
| 2 | Check authentication | After init | [Source](../../../../../../{sourcePath}) |
|
|
117
|
+
| 3 | Load data | Auth passed | [Source](../../../../../../{sourcePath}) |
|
|
118
|
+
| 4 | Render UI | Data loaded | [Source](../../../../../../{sourcePath}) |
|
|
119
119
|
|
|
120
120
|
### 3.2 User Interaction Flows
|
|
121
121
|
|
|
@@ -136,9 +136,9 @@ graph TB
|
|
|
136
136
|
|
|
137
137
|
| Step | Business Operation | Trigger | Source |
|
|
138
138
|
|------|-------------------|---------|--------|
|
|
139
|
-
| 1 | Detect tap | onTap | [Source](
|
|
140
|
-
| 2 | Check item type | Tap detected | [Source](
|
|
141
|
-
| 3 | Navigate or show actions | Based on type | [Source](
|
|
139
|
+
| 1 | Detect tap | onTap | [Source](../../../../../../{sourcePath}) |
|
|
140
|
+
| 2 | Check item type | Tap detected | [Source](../../../../../../{sourcePath}) |
|
|
141
|
+
| 3 | Navigate or show actions | Based on type | [Source](../../../../../../{sourcePath}) |
|
|
142
142
|
|
|
143
143
|
#### 3.2.2 {Event Name: e.g., Pull to Refresh}
|
|
144
144
|
|
|
@@ -170,12 +170,12 @@ graph TB
|
|
|
170
170
|
|
|
171
171
|
| Event | Platform | Handler | Purpose | Source |
|
|
172
172
|
|-------|----------|---------|---------|--------|
|
|
173
|
-
| Create | iOS | viewDidLoad | Initial setup | [Source](
|
|
174
|
-
| Create | Android | onCreate | Initial setup | [Source](
|
|
175
|
-
| Appear | iOS | viewWillAppear | Prepare data | [Source](
|
|
176
|
-
| Appear | Android | onStart | Prepare data | [Source](
|
|
177
|
-
| Destroy | iOS | deinit | Cleanup | [Source](
|
|
178
|
-
| Destroy | Android | onDestroy | Cleanup | [Source](
|
|
173
|
+
| Create | iOS | viewDidLoad | Initial setup | [Source](../../../../../../{sourcePath}) |
|
|
174
|
+
| Create | Android | onCreate | Initial setup | [Source](../../../../../../{sourcePath}) |
|
|
175
|
+
| Appear | iOS | viewWillAppear | Prepare data | [Source](../../../../../../{sourcePath}) |
|
|
176
|
+
| Appear | Android | onStart | Prepare data | [Source](../../../../../../{sourcePath}) |
|
|
177
|
+
| Destroy | iOS | deinit | Cleanup | [Source](../../../../../../{sourcePath}) |
|
|
178
|
+
| Destroy | Android | onDestroy | Cleanup | [Source](../../../../../../{sourcePath}) |
|
|
179
179
|
|
|
180
180
|
---
|
|
181
181
|
|
|
@@ -185,16 +185,16 @@ graph TB
|
|
|
185
185
|
|
|
186
186
|
| Field Name | Field Type | Description | Platform | Source |
|
|
187
187
|
|------------|------------|-------------|----------|--------|
|
|
188
|
-
| {Field 1} | String/Int/Boolean | {Description} | iOS/Android | [Source](
|
|
189
|
-
| {isLoading} | Boolean | {Loading state} | iOS/Android | [Source](
|
|
190
|
-
| {dataList} | Array | {List data source} | iOS/Android | [Source](
|
|
188
|
+
| {Field 1} | String/Int/Boolean | {Description} | iOS/Android | [Source](../../../../../../{sourcePath}) |
|
|
189
|
+
| {isLoading} | Boolean | {Loading state} | iOS/Android | [Source](../../../../../../{sourcePath}) |
|
|
190
|
+
| {dataList} | Array | {List data source} | iOS/Android | [Source](../../../../../../{sourcePath}) |
|
|
191
191
|
|
|
192
192
|
### 4.2 Form Fields (if applicable)
|
|
193
193
|
|
|
194
194
|
| Field Name | Field Type | Validation | Input Type | Source |
|
|
195
195
|
|------------|------------|------------|------------|--------|
|
|
196
|
-
| {Field 1} | String | {Required} | TextField/EditText | [Source](
|
|
197
|
-
| {Field 2} | String | {Email format} | Keyboard: Email | [Source](
|
|
196
|
+
| {Field 1} | String | {Required} | TextField/EditText | [Source](../../../../../../{sourcePath}) |
|
|
197
|
+
| {Field 2} | String | {Email format} | Keyboard: Email | [Source](../../../../../../{sourcePath}) |
|
|
198
198
|
|
|
199
199
|
---
|
|
200
200
|
|
|
@@ -204,26 +204,26 @@ graph TB
|
|
|
204
204
|
|
|
205
205
|
| API Name | Type | Main Function | Source | Document Path |
|
|
206
206
|
|----------|------|---------------|--------|---------------|
|
|
207
|
-
| {API Name} | Query/Mutation | {Brief description} | [Source](
|
|
207
|
+
| {API Name} | Query/Mutation | {Brief description} | [Source](../../../../../../{apiSourcePath}) | [API Doc](../../../../../../apis/{api-name}.md) |
|
|
208
208
|
|
|
209
209
|
### 5.2 Native Components/Views
|
|
210
210
|
|
|
211
211
|
| Component | Platform | Type | Main Function | Source | Document Path |
|
|
212
212
|
|-----------|----------|------|---------------|--------|---------------|
|
|
213
|
-
| {UITableView/RecyclerView} | iOS/Android | List | {Display scrollable list} | [Source](
|
|
214
|
-
| {UICollectionView} | iOS | Grid | {Display grid layout} | [Source](
|
|
213
|
+
| {UITableView/RecyclerView} | iOS/Android | List | {Display scrollable list} | [Source](../../../../../../{componentSourcePath}) | [Component Doc](../../../../../../components/{component-name}.md) |
|
|
214
|
+
| {UICollectionView} | iOS | Grid | {Display grid layout} | [Source](../../../../../../{componentSourcePath}) | [Component Doc](../../../../../../components/{component-name}.md) |
|
|
215
215
|
|
|
216
216
|
### 5.3 Other Screens
|
|
217
217
|
|
|
218
218
|
| Screen Name | Relation Type | Description | Source | Document Path |
|
|
219
219
|
|-------------|---------------|-------------|--------|---------------|
|
|
220
|
-
| {Screen Name} | Push/Modal | {Navigation description} | [Source](
|
|
220
|
+
| {Screen Name} | Push/Modal | {Navigation description} | [Source](../../../../../../{screenSourcePath}) | [Screen Doc](../{screen-path}.md) |
|
|
221
221
|
|
|
222
222
|
### 5.4 Referenced By
|
|
223
223
|
|
|
224
224
|
| Screen Name | Function Description | Source Path | Document Path |
|
|
225
225
|
|-------------|---------------------|-------------|---------------|
|
|
226
|
-
| {Referencing Screen} | {e.g., "Tap item to navigate to this screen"} | {source-path} | [Screen Doc](
|
|
226
|
+
| {Referencing Screen} | {e.g., "Tap item to navigate to this screen"} | {source-path} | [Screen Doc](../../../../../../{screen-path}.md) |
|
|
227
227
|
|
|
228
228
|
---
|
|
229
229
|
|
|
@@ -233,20 +233,20 @@ graph TB
|
|
|
233
233
|
|
|
234
234
|
| Operation | Permission Requirement | No Permission Handling | Source |
|
|
235
235
|
|-----------|----------------------|----------------------|--------|
|
|
236
|
-
| View screen | {Authentication required} | Navigate to login | [Source](
|
|
237
|
-
| Perform action | {Role/Permission required} | Hide button / Show alert | [Source](
|
|
236
|
+
| View screen | {Authentication required} | Navigate to login | [Source](../../../../../../{sourcePath}) |
|
|
237
|
+
| Perform action | {Role/Permission required} | Hide button / Show alert | [Source](../../../../../../{sourcePath}) |
|
|
238
238
|
|
|
239
239
|
### 6.2 Mobile-Specific Rules
|
|
240
240
|
|
|
241
|
-
1. **Offline Support**: {e.g., Cache data for offline viewing} | [Source](
|
|
242
|
-
2. **Network Detection**: {e.g., Show offline banner when no connection} | [Source](
|
|
243
|
-
3. **Loading States**: {e.g., Show skeleton screens during load} | [Source](
|
|
241
|
+
1. **Offline Support**: {e.g., Cache data for offline viewing} | [Source](../../../../../../{sourcePath})
|
|
242
|
+
2. **Network Detection**: {e.g., Show offline banner when no connection} | [Source](../../../../../../{sourcePath})
|
|
243
|
+
3. **Loading States**: {e.g., Show skeleton screens during load} | [Source](../../../../../../{sourcePath})
|
|
244
244
|
|
|
245
245
|
### 6.3 Validation Rules
|
|
246
246
|
|
|
247
247
|
| Scenario | Rule | Error Handling | Source |
|
|
248
248
|
|----------|------|----------------|--------|
|
|
249
|
-
| Form input | {Validation rule} | Show inline error / Toast | [Source](
|
|
249
|
+
| Form input | {Validation rule} | Show inline error / Toast | [Source](../../../../../../{sourcePath}) |
|
|
250
250
|
|
|
251
251
|
---
|
|
252
252
|
|
|
@@ -277,5 +277,5 @@ graph TB
|
|
|
277
277
|
**Related Module Document:** [Module Overview Document](../{{module-name}}-overview.md)
|
|
278
278
|
|
|
279
279
|
**Section Source**
|
|
280
|
-
- [{ViewController}.swift/{Activity}.kt](
|
|
281
|
-
- [{ViewModel}.swift/{ViewModel}.kt](
|
|
280
|
+
- [{ViewController}.swift/{Activity}.kt](../../../../../../{sourcePath})
|
|
281
|
+
- [{ViewModel}.swift/{ViewModel}.kt](../../../../../../{viewModelPath})
|
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 ==================== -->
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
============================================================ -->
|
|
7
7
|
<block type="input" id="I1" desc="Workflow input parameters">
|
|
8
8
|
<field name="workspace_path" required="true" type="string" desc="Absolute path to speccrew workspace"/>
|
|
9
|
-
<field name="sync_state_bizs_dir" required="true" type="string" desc="Absolute path to sync-state/knowledge-bizs
|
|
9
|
+
<field name="sync_state_bizs_dir" required="true" type="string" desc="Absolute path to knowledges/base/sync-state/knowledge-bizs/ (✓ correct: .../knowledges/base/sync-state/knowledge-bizs/ | ✗ wrong: .../knowledges/bizs/sync-state/knowledge-bizs/)"/>
|
|
10
10
|
<field name="configs_dir" required="true" type="string" desc="Absolute path to docs/configs directory"/>
|
|
11
11
|
<field name="language" required="true" type="string" desc="Language code for output content"/>
|
|
12
12
|
</block>
|