ai-flow-dev 2.7.0 โ 2.8.1
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/LICENSE +21 -21
- package/README.md +573 -570
- package/package.json +74 -74
- package/prompts/backend/flow-build-phase-0.md +535 -535
- package/prompts/backend/flow-build-phase-1.md +626 -626
- package/prompts/backend/flow-build-phase-10.md +340 -340
- package/prompts/backend/flow-build-phase-2.md +573 -573
- package/prompts/backend/flow-build-phase-3.md +834 -834
- package/prompts/backend/flow-build-phase-4.md +554 -554
- package/prompts/backend/flow-build-phase-5.md +703 -703
- package/prompts/backend/flow-build-phase-6.md +524 -524
- package/prompts/backend/flow-build-phase-7.md +1001 -1001
- package/prompts/backend/flow-build-phase-8.md +1407 -1407
- package/prompts/backend/flow-build-phase-9.md +477 -477
- package/prompts/backend/flow-build.md +137 -137
- package/prompts/backend/flow-check-review.md +656 -20
- package/prompts/backend/flow-check-test.md +526 -14
- package/prompts/backend/flow-check.md +717 -67
- package/prompts/backend/flow-commit.md +88 -119
- package/prompts/backend/flow-docs-sync.md +354 -354
- package/prompts/backend/flow-finish.md +919 -0
- package/prompts/backend/flow-release.md +949 -0
- package/prompts/backend/flow-work-feature.md +61 -61
- package/prompts/backend/flow-work-fix.md +46 -46
- package/prompts/backend/flow-work-refactor.md +48 -48
- package/prompts/backend/flow-work-resume.md +34 -34
- package/prompts/backend/flow-work.md +1098 -1286
- package/prompts/desktop/flow-build-phase-0.md +359 -359
- package/prompts/desktop/flow-build-phase-1.md +295 -295
- package/prompts/desktop/flow-build-phase-10.md +357 -357
- package/prompts/desktop/flow-build-phase-2.md +282 -282
- package/prompts/desktop/flow-build-phase-3.md +291 -291
- package/prompts/desktop/flow-build-phase-4.md +308 -308
- package/prompts/desktop/flow-build-phase-5.md +269 -269
- package/prompts/desktop/flow-build-phase-6.md +350 -350
- package/prompts/desktop/flow-build-phase-7.md +297 -297
- package/prompts/desktop/flow-build-phase-8.md +541 -541
- package/prompts/desktop/flow-build-phase-9.md +439 -439
- package/prompts/desktop/flow-build.md +156 -156
- package/prompts/desktop/flow-check-review.md +656 -20
- package/prompts/desktop/flow-check-test.md +526 -14
- package/prompts/desktop/flow-check.md +717 -67
- package/prompts/desktop/flow-commit.md +88 -119
- package/prompts/desktop/flow-docs-sync.md +354 -354
- package/prompts/desktop/flow-finish.md +919 -0
- package/prompts/desktop/flow-release.md +662 -0
- package/prompts/desktop/flow-work-feature.md +61 -61
- package/prompts/desktop/flow-work-fix.md +46 -46
- package/prompts/desktop/flow-work-refactor.md +48 -48
- package/prompts/desktop/flow-work-resume.md +34 -34
- package/prompts/desktop/flow-work.md +1202 -1390
- package/prompts/frontend/flow-build-phase-0.md +425 -425
- package/prompts/frontend/flow-build-phase-1.md +626 -626
- package/prompts/frontend/flow-build-phase-10.md +33 -33
- package/prompts/frontend/flow-build-phase-2.md +573 -573
- package/prompts/frontend/flow-build-phase-3.md +782 -782
- package/prompts/frontend/flow-build-phase-4.md +554 -554
- package/prompts/frontend/flow-build-phase-5.md +703 -703
- package/prompts/frontend/flow-build-phase-6.md +524 -524
- package/prompts/frontend/flow-build-phase-7.md +1001 -1001
- package/prompts/frontend/flow-build-phase-8.md +872 -872
- package/prompts/frontend/flow-build-phase-9.md +94 -94
- package/prompts/frontend/flow-build.md +137 -137
- package/prompts/frontend/flow-check-review.md +656 -20
- package/prompts/frontend/flow-check-test.md +526 -14
- package/prompts/frontend/flow-check.md +717 -67
- package/prompts/frontend/flow-commit.md +88 -119
- package/prompts/frontend/flow-docs-sync.md +550 -550
- package/prompts/frontend/flow-finish.md +919 -0
- package/prompts/frontend/flow-release.md +519 -0
- package/prompts/frontend/flow-work-api.md +1547 -0
- package/prompts/frontend/flow-work-feature.md +61 -61
- package/prompts/frontend/flow-work-fix.md +38 -38
- package/prompts/frontend/flow-work-refactor.md +48 -48
- package/prompts/frontend/flow-work-resume.md +34 -34
- package/prompts/frontend/flow-work.md +1595 -1320
- package/prompts/mobile/flow-build-phase-0.md +425 -425
- package/prompts/mobile/flow-build-phase-1.md +626 -626
- package/prompts/mobile/flow-build-phase-10.md +32 -32
- package/prompts/mobile/flow-build-phase-2.md +573 -573
- package/prompts/mobile/flow-build-phase-3.md +782 -782
- package/prompts/mobile/flow-build-phase-4.md +554 -554
- package/prompts/mobile/flow-build-phase-5.md +703 -703
- package/prompts/mobile/flow-build-phase-6.md +524 -524
- package/prompts/mobile/flow-build-phase-7.md +1001 -1001
- package/prompts/mobile/flow-build-phase-8.md +888 -888
- package/prompts/mobile/flow-build-phase-9.md +90 -90
- package/prompts/mobile/flow-build.md +135 -135
- package/prompts/mobile/flow-check-review.md +656 -20
- package/prompts/mobile/flow-check-test.md +526 -14
- package/prompts/mobile/flow-check.md +717 -67
- package/prompts/mobile/flow-commit.md +88 -119
- package/prompts/mobile/flow-docs-sync.md +620 -620
- package/prompts/mobile/flow-finish.md +919 -0
- package/prompts/mobile/flow-release.md +751 -0
- package/prompts/mobile/flow-work-api.md +1500 -0
- package/prompts/mobile/flow-work-feature.md +61 -61
- package/prompts/mobile/flow-work-fix.md +46 -46
- package/prompts/mobile/flow-work-refactor.md +48 -48
- package/prompts/mobile/flow-work-resume.md +34 -34
- package/prompts/mobile/flow-work.md +1605 -1329
- package/prompts/shared/mermaid-guidelines.md +102 -102
- package/prompts/shared/scope-levels.md +114 -114
- package/prompts/shared/smart-skip-preflight.md +214 -214
- package/prompts/shared/story-points.md +55 -55
- package/prompts/shared/task-format.md +74 -74
- package/prompts/shared/task-summary-template.md +277 -277
- package/templates/AGENT.template.md +443 -443
- package/templates/backend/.clauderules.template +112 -112
- package/templates/backend/.cursorrules.template +102 -102
- package/templates/backend/README.template.md +2 -2
- package/templates/backend/ai-instructions.template.md +2 -2
- package/templates/backend/copilot-instructions.template.md +2 -2
- package/templates/backend/docs/api.template.md +320 -320
- package/templates/backend/docs/business-flows.template.md +97 -97
- package/templates/backend/docs/code-standards.template.md +2 -2
- package/templates/backend/docs/contributing.template.md +3 -3
- package/templates/backend/docs/data-model.template.md +520 -520
- package/templates/backend/docs/testing.template.md +2 -2
- package/templates/backend/project-brief.template.md +2 -2
- package/templates/backend/specs/configuration.template.md +2 -2
- package/templates/backend/specs/security.template.md +2 -2
- package/templates/desktop/.clauderules.template +112 -112
- package/templates/desktop/.cursorrules.template +102 -102
- package/templates/desktop/README.template.md +170 -170
- package/templates/desktop/ai-instructions.template.md +366 -366
- package/templates/desktop/copilot-instructions.template.md +140 -140
- package/templates/desktop/docs/docs/api.template.md +320 -320
- package/templates/desktop/docs/docs/architecture.template.md +724 -724
- package/templates/desktop/docs/docs/business-flows.template.md +102 -102
- package/templates/desktop/docs/docs/code-standards.template.md +792 -792
- package/templates/desktop/docs/docs/contributing.template.md +149 -149
- package/templates/desktop/docs/docs/data-model.template.md +520 -520
- package/templates/desktop/docs/docs/operations.template.md +720 -720
- package/templates/desktop/docs/docs/testing.template.md +722 -722
- package/templates/desktop/project-brief.template.md +150 -150
- package/templates/desktop/specs/specs/configuration.template.md +121 -121
- package/templates/desktop/specs/specs/security.template.md +392 -392
- package/templates/frontend/README.template.md +2 -2
- package/templates/frontend/ai-instructions.template.md +2 -2
- package/templates/frontend/docs/api-integration.template.md +362 -362
- package/templates/frontend/docs/components.template.md +2 -2
- package/templates/frontend/docs/error-handling.template.md +360 -360
- package/templates/frontend/docs/operations.template.md +107 -107
- package/templates/frontend/docs/performance.template.md +124 -124
- package/templates/frontend/docs/pwa.template.md +119 -119
- package/templates/frontend/docs/state-management.template.md +2 -2
- package/templates/frontend/docs/styling.template.md +2 -2
- package/templates/frontend/docs/testing.template.md +2 -2
- package/templates/frontend/project-brief.template.md +2 -2
- package/templates/frontend/specs/accessibility.template.md +95 -95
- package/templates/frontend/specs/configuration.template.md +2 -2
- package/templates/frontend/specs/security.template.md +175 -175
- package/templates/fullstack/README.template.md +252 -252
- package/templates/fullstack/ai-instructions.template.md +444 -444
- package/templates/fullstack/project-brief.template.md +157 -157
- package/templates/fullstack/specs/configuration.template.md +340 -340
- package/templates/mobile/README.template.md +167 -167
- package/templates/mobile/ai-instructions.template.md +196 -196
- package/templates/mobile/docs/app-store.template.md +135 -135
- package/templates/mobile/docs/architecture.template.md +63 -63
- package/templates/mobile/docs/native-features.template.md +94 -94
- package/templates/mobile/docs/navigation.template.md +59 -59
- package/templates/mobile/docs/offline-strategy.template.md +65 -65
- package/templates/mobile/docs/permissions.template.md +56 -56
- package/templates/mobile/docs/state-management.template.md +85 -85
- package/templates/mobile/docs/testing.template.md +109 -109
- package/templates/mobile/project-brief.template.md +69 -69
- package/templates/mobile/specs/build-configuration.template.md +91 -91
- package/templates/mobile/specs/deployment.template.md +92 -92
- package/templates/work.template.md +61 -47
|
@@ -1,520 +1,520 @@
|
|
|
1
|
-
# Data Model
|
|
2
|
-
|
|
3
|
-
> Structured view of the entities, relationships, and data contracts that power {{PROJECT_NAME}}
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## ๐ Overview
|
|
8
|
-
|
|
9
|
-
**Database Type:** {{DATABASE_TYPE}}
|
|
10
|
-
|
|
11
|
-
**Primary Storage Layer:** {{DATABASE_PRIMARY_STORAGE}}
|
|
12
|
-
|
|
13
|
-
**Secondary Storage / Caches:** {{DATABASE_SECONDARY_STORAGE}}
|
|
14
|
-
|
|
15
|
-
**Data Access Layer:** {{DATA_ACCESS_LAYER}}
|
|
16
|
-
|
|
17
|
-
## **Data Ownership:** {{DATA_OWNERSHIP}}
|
|
18
|
-
|
|
19
|
-
## ๐ Entity Catalog
|
|
20
|
-
|
|
21
|
-
{{#EACH ENTITIES}}
|
|
22
|
-
|
|
23
|
-
### {{NAME}}
|
|
24
|
-
|
|
25
|
-
**Purpose:** {{PURPOSE}}
|
|
26
|
-
|
|
27
|
-
**Table / Collection:** `{{TABLE_NAME}}`
|
|
28
|
-
|
|
29
|
-
**Primary Key:** {{PRIMARY_KEY}}
|
|
30
|
-
|
|
31
|
-
**Description:** {{DESCRIPTION}}
|
|
32
|
-
|
|
33
|
-
#### Attributes
|
|
34
|
-
|
|
35
|
-
| Field | Type | Nullable | Default | Description |
|
|
36
|
-
| ----- | ---- | -------- | ------- | ----------- |
|
|
37
|
-
|
|
38
|
-
{{#EACH ATTRIBUTES}}
|
|
39
|
-
| {{FIELD}} | {{TYPE}} | {{NULLABLE}} | {{DEFAULT}} | {{DESCRIPTION}} |
|
|
40
|
-
{{/EACH}}
|
|
41
|
-
|
|
42
|
-
#### Validation Rules
|
|
43
|
-
|
|
44
|
-
{{#IF VALIDATION_RULES}}
|
|
45
|
-
{{#EACH VALIDATION_RULES}}
|
|
46
|
-
|
|
47
|
-
- {{RULE_DESCRIPTION}}
|
|
48
|
-
{{/EACH}}
|
|
49
|
-
{{ELSE}}
|
|
50
|
-
- No additional validation rules defined.
|
|
51
|
-
{{/IF}}
|
|
52
|
-
|
|
53
|
-
#### Derived Fields
|
|
54
|
-
|
|
55
|
-
{{#IF DERIVED_FIELDS}}
|
|
56
|
-
| Field | Source | Logic |
|
|
57
|
-
|-------|--------|-------|
|
|
58
|
-
{{#EACH DERIVED_FIELDS}}
|
|
59
|
-
| {{FIELD}} | {{SOURCE}} | {{LOGIC}} |
|
|
60
|
-
{{/EACH}}
|
|
61
|
-
{{ELSE}}
|
|
62
|
-
|
|
63
|
-
- No derived fields defined.
|
|
64
|
-
{{/IF}}
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
{{/EACH}}
|
|
69
|
-
|
|
70
|
-
## ๐ Relationships & Contracts
|
|
71
|
-
|
|
72
|
-
### Cardinality Map
|
|
73
|
-
|
|
74
|
-
{{#EACH RELATIONSHIPS}}
|
|
75
|
-
|
|
76
|
-
- **{{FROM_ENTITY}} โ {{TO_ENTITY}}**: {{TYPE}}
|
|
77
|
-
- Join Condition: `{{JOIN_CONDITION}}`
|
|
78
|
-
- Ownership: {{OWNERSHIP_MODEL}}
|
|
79
|
-
- Cascade Rules: {{CASCADE_RULES}}
|
|
80
|
-
{{/EACH}}
|
|
81
|
-
|
|
82
|
-
### Integrity Constraints
|
|
83
|
-
|
|
84
|
-
{{#EACH INTEGRITY_CONSTRAINTS}}
|
|
85
|
-
|
|
86
|
-
- **{{NAME}}**: {{DESCRIPTION}}
|
|
87
|
-
- Enforced By: {{ENFORCED_BY}}
|
|
88
|
-
- Failure Handling: {{FAILURE_HANDLING}}
|
|
89
|
-
{{/EACH}}
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## ๐ Database Indexes
|
|
94
|
-
|
|
95
|
-
### Index Strategy
|
|
96
|
-
|
|
97
|
-
{{#IF INDEXES_DEFINED}}
|
|
98
|
-
{{#EACH INDEX}}
|
|
99
|
-
|
|
100
|
-
#### {{INDEX_NAME}}
|
|
101
|
-
|
|
102
|
-
**Table:** `{{TABLE_NAME}}`
|
|
103
|
-
|
|
104
|
-
**Columns:** {{INDEX_COLUMNS}}
|
|
105
|
-
|
|
106
|
-
**Type:** {{INDEX_TYPE}} ({{#IF UNIQUE}}Unique{{ELSE}}Non-unique{{/IF}})
|
|
107
|
-
|
|
108
|
-
**Purpose:** {{INDEX_PURPOSE}}
|
|
109
|
-
|
|
110
|
-
**Query Patterns:** {{INDEX_QUERY_PATTERNS}}
|
|
111
|
-
|
|
112
|
-
{{/EACH}}
|
|
113
|
-
|
|
114
|
-
{{ELSE}}
|
|
115
|
-
|
|
116
|
-
- No indexes explicitly defined yet. Indexes will be created based on query patterns and foreign keys.
|
|
117
|
-
{{/IF}}
|
|
118
|
-
|
|
119
|
-
### Index Guidelines
|
|
120
|
-
|
|
121
|
-
- โ
Index all foreign keys
|
|
122
|
-
- โ
Index frequently queried columns
|
|
123
|
-
- โ
Index columns used in WHERE, JOIN, ORDER BY clauses
|
|
124
|
-
- โ
Consider composite indexes for multi-column queries
|
|
125
|
-
- โ Don't over-index (each index slows writes)
|
|
126
|
-
- โ Don't index low-cardinality columns (unless frequently filtered)
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
## ๐ Transaction Management
|
|
131
|
-
|
|
132
|
-
### Transaction Isolation Level
|
|
133
|
-
|
|
134
|
-
**Default Level:** {{TRANSACTION_ISOLATION_LEVEL}}
|
|
135
|
-
|
|
136
|
-
**Supported Levels:**
|
|
137
|
-
{{#EACH ISOLATION_LEVEL}}
|
|
138
|
-
|
|
139
|
-
- **{{LEVEL_NAME}}**: {{LEVEL_DESCRIPTION}}
|
|
140
|
-
{{/EACH}}
|
|
141
|
-
|
|
142
|
-
### Transaction Strategy
|
|
143
|
-
|
|
144
|
-
**When to use transactions:**
|
|
145
|
-
|
|
146
|
-
- โ
Multi-step operations that must succeed or fail together
|
|
147
|
-
- โ
Updates affecting multiple tables
|
|
148
|
-
- โ
Operations requiring consistency guarantees
|
|
149
|
-
- โ Single-row operations (usually handled by database)
|
|
150
|
-
|
|
151
|
-
**Transaction Patterns:**
|
|
152
|
-
|
|
153
|
-
{{#IF TRANSACTION_PATTERNS}}
|
|
154
|
-
{{#EACH TRANSACTION_PATTERN}}
|
|
155
|
-
|
|
156
|
-
#### {{PATTERN_NAME}}
|
|
157
|
-
|
|
158
|
-
**Use Case:** {{PATTERN_USE_CASE}}
|
|
159
|
-
|
|
160
|
-
**Implementation:**
|
|
161
|
-
|
|
162
|
-
```{{LANGUAGE}}
|
|
163
|
-
{{PATTERN_EXAMPLE}}
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
**Consistency Guarantees:** {{CONSISTENCY_GUARANTEES}}
|
|
167
|
-
|
|
168
|
-
{{/EACH}}
|
|
169
|
-
{{ELSE}}
|
|
170
|
-
|
|
171
|
-
- Transaction patterns to be defined based on business requirements.
|
|
172
|
-
{{/IF}}
|
|
173
|
-
|
|
174
|
-
### Transaction Boundaries (Atomic Operations)
|
|
175
|
-
|
|
176
|
-
{{#IF TRANSACTION_BOUNDARIES}}
|
|
177
|
-
{{#EACH TRANSACTION_BOUNDARY}}
|
|
178
|
-
|
|
179
|
-
#### {{OPERATION_NAME}}
|
|
180
|
-
|
|
181
|
-
**Description:** {{DESCRIPTION}}
|
|
182
|
-
|
|
183
|
-
**Steps (all or nothing):**
|
|
184
|
-
{{#EACH STEP}}
|
|
185
|
-
{{STEP_NUMBER}}. {{STEP_DESCRIPTION}} {{#IF IN_TRANSACTION}}โ
In transaction{{ELSE}}โก Outside (async){{/IF}}
|
|
186
|
-
{{/EACH}}
|
|
187
|
-
|
|
188
|
-
**Rollback Trigger:** {{ROLLBACK_TRIGGER}}
|
|
189
|
-
|
|
190
|
-
**Compensating Actions:** {{COMPENSATING_ACTIONS}}
|
|
191
|
-
|
|
192
|
-
{{/EACH}}
|
|
193
|
-
{{ELSE}}
|
|
194
|
-
|
|
195
|
-
- No explicit transaction boundaries defined. Individual operations are atomic by default.
|
|
196
|
-
{{/IF}}
|
|
197
|
-
|
|
198
|
-
### Consistency Model
|
|
199
|
-
|
|
200
|
-
**Consistency Strategy:** {{CONSISTENCY_STRATEGY}}
|
|
201
|
-
|
|
202
|
-
{{#IF EVENTUAL_CONSISTENCY}}
|
|
203
|
-
**Eventual Consistency:**
|
|
204
|
-
|
|
205
|
-
- Acceptable delay: {{CONSISTENCY_DELAY}}
|
|
206
|
-
- Replication lag tolerance: {{REPLICATION_LAG}}
|
|
207
|
-
- Conflict resolution: {{CONFLICT_RESOLUTION}}
|
|
208
|
-
{{/IF}}
|
|
209
|
-
|
|
210
|
-
{{#IF STRONG_CONSISTENCY}}
|
|
211
|
-
**Strong Consistency:**
|
|
212
|
-
|
|
213
|
-
- All reads see latest writes
|
|
214
|
-
- Synchronous replication required
|
|
215
|
-
- Higher latency, lower throughput
|
|
216
|
-
{{/IF}}
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## ๐ง Schema Migrations
|
|
221
|
-
|
|
222
|
-
### Migration Tool
|
|
223
|
-
|
|
224
|
-
**Tool:** {{MIGRATION_TOOL}}
|
|
225
|
-
|
|
226
|
-
{{#IF PRISMA_MIGRATE}}
|
|
227
|
-
**Prisma Migrate:**
|
|
228
|
-
|
|
229
|
-
- Location: `prisma/migrations/`
|
|
230
|
-
- Generate migration: `npx prisma migrate dev --name migration_name`
|
|
231
|
-
- Apply migration: `npx prisma migrate deploy`
|
|
232
|
-
{{/IF}}
|
|
233
|
-
|
|
234
|
-
{{#IF TYPEORM_MIGRATIONS}}
|
|
235
|
-
**TypeORM Migrations:**
|
|
236
|
-
|
|
237
|
-
- Location: `src/migrations/`
|
|
238
|
-
- Generate migration: `npm run migration:generate -- -n MigrationName`
|
|
239
|
-
- Run migration: `npm run migration:run`
|
|
240
|
-
- Revert migration: `npm run migration:revert`
|
|
241
|
-
{{/IF}}
|
|
242
|
-
|
|
243
|
-
{{#IF ALEMBIC}}
|
|
244
|
-
**Alembic (Python):**
|
|
245
|
-
|
|
246
|
-
- Location: `alembic/versions/`
|
|
247
|
-
- Generate migration: `alembic revision --autogenerate -m "migration_name"`
|
|
248
|
-
- Apply migration: `alembic upgrade head`
|
|
249
|
-
- Rollback: `alembic downgrade -1`
|
|
250
|
-
{{/IF}}
|
|
251
|
-
|
|
252
|
-
### Migration Strategy
|
|
253
|
-
|
|
254
|
-
**Versioning:** {{MIGRATION_VERSIONING}}
|
|
255
|
-
|
|
256
|
-
**Rollback Strategy:** {{MIGRATION_ROLLBACK_STRATEGY}}
|
|
257
|
-
|
|
258
|
-
**Zero-Downtime Migrations:** {{#IF ZERO_DOWNTIME_MIGRATIONS}}Yes{{ELSE}}No{{/IF}}
|
|
259
|
-
|
|
260
|
-
{{#IF ZERO_DOWNTIME_MIGRATIONS}}
|
|
261
|
-
**Zero-Downtime Approach:**
|
|
262
|
-
{{#EACH ZERO_DOWNTIME_STEP}}
|
|
263
|
-
{{STEP_NUMBER}}. {{STEP_DESCRIPTION}}
|
|
264
|
-
{{/EACH}}
|
|
265
|
-
{{/IF}}
|
|
266
|
-
|
|
267
|
-
### Migration Guidelines
|
|
268
|
-
|
|
269
|
-
- โ
Always review generated migrations before applying
|
|
270
|
-
- โ
Test migrations on staging before production
|
|
271
|
-
- โ
Keep migrations small and focused
|
|
272
|
-
- โ
Never edit applied migrations (create new ones)
|
|
273
|
-
- โ
Document breaking changes
|
|
274
|
-
- โ Don't run migrations manually in production
|
|
275
|
-
- โ Don't mix data migrations with schema migrations
|
|
276
|
-
|
|
277
|
-
### Migration History
|
|
278
|
-
|
|
279
|
-
{{#IF MIGRATION_HISTORY}}
|
|
280
|
-
| Version | Description | Applied | Rollback Available |
|
|
281
|
-
|---------|-------------|---------|-------------------|
|
|
282
|
-
{{#EACH MIGRATION}}
|
|
283
|
-
| {{VERSION}} | {{DESCRIPTION}} | {{APPLIED_DATE}} | {{#IF ROLLBACK_AVAILABLE}}Yes{{ELSE}}No{{/IF}} |
|
|
284
|
-
{{/EACH}}
|
|
285
|
-
{{ELSE}}
|
|
286
|
-
|
|
287
|
-
- Migration history will be tracked by the migration tool.
|
|
288
|
-
{{/IF}}
|
|
289
|
-
|
|
290
|
-
---
|
|
291
|
-
|
|
292
|
-
## ๐งฉ Domain Logic & Aggregates
|
|
293
|
-
|
|
294
|
-
### Aggregate Roots
|
|
295
|
-
|
|
296
|
-
{{#EACH AGGREGATE_ROOTS}}
|
|
297
|
-
|
|
298
|
-
#### {{NAME}}
|
|
299
|
-
|
|
300
|
-
**Bounded Context:** {{CONTEXT}}
|
|
301
|
-
|
|
302
|
-
**Responsibilities:** {{RESPONSIBILITIES}}
|
|
303
|
-
|
|
304
|
-
**Entities Included:** {{ENTITIES_INCLUDED}}
|
|
305
|
-
|
|
306
|
-
**Consistency Rules:** {{CONSISTENCY_RULES}}
|
|
307
|
-
|
|
308
|
-
{{/EACH}}
|
|
309
|
-
|
|
310
|
-
### Domain Events
|
|
311
|
-
|
|
312
|
-
{{#IF DOMAIN_EVENTS}}
|
|
313
|
-
| Event | Trigger | Payload | Consumers |
|
|
314
|
-
|-------|---------|---------|-----------|
|
|
315
|
-
{{#EACH DOMAIN_EVENTS}}
|
|
316
|
-
| {{NAME}} | {{TRIGGER}} | {{PAYLOAD}} | {{CONSUMERS}} |
|
|
317
|
-
{{/EACH}}
|
|
318
|
-
{{ELSE}}
|
|
319
|
-
|
|
320
|
-
- No domain events defined.
|
|
321
|
-
{{/IF}}
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## ๏ฟฝ๏ธ Soft Delete & Data Lifecycle
|
|
326
|
-
|
|
327
|
-
### Deletion Strategy
|
|
328
|
-
|
|
329
|
-
**Soft Delete Field:** `{{SOFT_DELETE_FIELD}}` ({{SOFT_DELETE_TYPE}})
|
|
330
|
-
|
|
331
|
-
**Default Query Behavior:** {{SOFT_DELETE_QUERY_DEFAULT}}
|
|
332
|
-
|
|
333
|
-
### Entity Deletion Rules
|
|
334
|
-
|
|
335
|
-
| Entity | Delete Type | Field | Cleanup Policy |
|
|
336
|
-
| ------ | ----------- | ----- | -------------- |
|
|
337
|
-
|
|
338
|
-
{{#EACH ENTITY_DELETE_RULE}}
|
|
339
|
-
| {{ENTITY}} | {{DELETE_TYPE}} | {{FIELD}} | {{CLEANUP_POLICY}} |
|
|
340
|
-
{{/EACH}}
|
|
341
|
-
|
|
342
|
-
### Permanent Cleanup Schedule
|
|
343
|
-
|
|
344
|
-
**Policy:** {{CLEANUP_POLICY}}
|
|
345
|
-
**Schedule:** {{CLEANUP_SCHEDULE}}
|
|
346
|
-
**Retention Period:** {{RETENTION_DAYS}} days
|
|
347
|
-
|
|
348
|
-
### Cascade Delete Behavior
|
|
349
|
-
|
|
350
|
-
{{#EACH CASCADE_DELETE}}
|
|
351
|
-
|
|
352
|
-
- **{{PARENT_ENTITY}}** โ **{{CHILD_ENTITY}}**: {{BEHAVIOR}}
|
|
353
|
-
{{/EACH}}
|
|
354
|
-
|
|
355
|
-
---
|
|
356
|
-
|
|
357
|
-
## ๐ State Machines
|
|
358
|
-
|
|
359
|
-
{{#IF STATE_MACHINES}}
|
|
360
|
-
{{#EACH STATE_MACHINE}}
|
|
361
|
-
|
|
362
|
-
### {{ENTITY_NAME}} State Machine
|
|
363
|
-
|
|
364
|
-
**States:** {{STATES}}
|
|
365
|
-
|
|
366
|
-
**Initial State:** {{INITIAL_STATE}}
|
|
367
|
-
|
|
368
|
-
**Terminal States:** {{TERMINAL_STATES}}
|
|
369
|
-
|
|
370
|
-
```mermaid
|
|
371
|
-
stateDiagram-v2
|
|
372
|
-
{{STATE_DIAGRAM}}
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
#### Valid Transitions
|
|
376
|
-
|
|
377
|
-
| From | To | Action | Guards | Side Effects |
|
|
378
|
-
| ---- | --- | ------ | ------ | ------------ |
|
|
379
|
-
|
|
380
|
-
{{#EACH TRANSITION}}
|
|
381
|
-
| {{FROM}} | {{TO}} | {{ACTION}} | {{GUARDS}} | {{SIDE_EFFECTS}} |
|
|
382
|
-
{{/EACH}}
|
|
383
|
-
|
|
384
|
-
#### Invalid Transitions (Explicitly Forbidden)
|
|
385
|
-
|
|
386
|
-
{{#EACH INVALID_TRANSITION}}
|
|
387
|
-
|
|
388
|
-
- `{{FROM}}` โ `{{TO}}`: {{REASON}}
|
|
389
|
-
{{/EACH}}
|
|
390
|
-
|
|
391
|
-
{{/EACH}}
|
|
392
|
-
{{ELSE}}
|
|
393
|
-
|
|
394
|
-
- No state machines defined. Entities use simple status fields without formal transition rules.
|
|
395
|
-
{{/IF}}
|
|
396
|
-
|
|
397
|
-
---
|
|
398
|
-
|
|
399
|
-
## ๏ฟฝ๐ฆ Serialization Contracts
|
|
400
|
-
|
|
401
|
-
### API Representations
|
|
402
|
-
|
|
403
|
-
{{#EACH API_CONTRACTS}}
|
|
404
|
-
|
|
405
|
-
#### {{NAME}}
|
|
406
|
-
|
|
407
|
-
**Endpoint:** `{{ENDPOINT}}`
|
|
408
|
-
|
|
409
|
-
**Method:** {{METHOD}}
|
|
410
|
-
|
|
411
|
-
**Request Schema:**
|
|
412
|
-
|
|
413
|
-
```json
|
|
414
|
-
{{REQUEST_SCHEMA}}
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
**Response Schema:**
|
|
418
|
-
|
|
419
|
-
```json
|
|
420
|
-
{{RESPONSE_SCHEMA}}
|
|
421
|
-
```
|
|
422
|
-
|
|
423
|
-
## **Notes:** {{NOTES}}
|
|
424
|
-
|
|
425
|
-
{{/EACH}}
|
|
426
|
-
|
|
427
|
-
### Message Queue Payloads
|
|
428
|
-
|
|
429
|
-
{{#IF MESSAGE_PAYLOADS}}
|
|
430
|
-
{{#EACH MESSAGE_PAYLOADS}}
|
|
431
|
-
|
|
432
|
-
- **{{TOPIC}}**
|
|
433
|
-
- Producer: {{PRODUCER}}
|
|
434
|
-
- Consumers: {{CONSUMERS}}
|
|
435
|
-
- Schema:
|
|
436
|
-
`json
|
|
437
|
-
{{SCHEMA}}
|
|
438
|
-
`
|
|
439
|
-
{{/EACH}}
|
|
440
|
-
{{ELSE}}
|
|
441
|
-
- No asynchronous payloads defined.
|
|
442
|
-
{{/IF}}
|
|
443
|
-
|
|
444
|
-
---
|
|
445
|
-
|
|
446
|
-
## ๐๏ธ Reference Data & Seed Values
|
|
447
|
-
|
|
448
|
-
{{#IF REFERENCE_DATA}}
|
|
449
|
-
| Name | Source | Format | Refresh Strategy |
|
|
450
|
-
|------|--------|--------|------------------|
|
|
451
|
-
{{#EACH REFERENCE_DATA}}
|
|
452
|
-
| {{NAME}} | {{SOURCE}} | {{FORMAT}} | {{REFRESH_STRATEGY}} |
|
|
453
|
-
{{/EACH}}
|
|
454
|
-
{{ELSE}}
|
|
455
|
-
|
|
456
|
-
- No reference datasets recorded.
|
|
457
|
-
{{/IF}}
|
|
458
|
-
|
|
459
|
-
---
|
|
460
|
-
|
|
461
|
-
## ๐ Data Governance
|
|
462
|
-
|
|
463
|
-
**Data Sensitivity Classification:** {{DATA_SENSITIVITY}}
|
|
464
|
-
|
|
465
|
-
**PII Handling:** {{PII_HANDLING}}
|
|
466
|
-
|
|
467
|
-
**Audit Strategy:** {{AUDIT_STRATEGY}}
|
|
468
|
-
|
|
469
|
-
**Retention Policy:** {{RETENTION_POLICY}}
|
|
470
|
-
|
|
471
|
-
## **Compliance Scope:** {{COMPLIANCE_SCOPE}}
|
|
472
|
-
|
|
473
|
-
## ๐งช Testing & Quality Gates
|
|
474
|
-
|
|
475
|
-
### Test Coverage by Entity
|
|
476
|
-
|
|
477
|
-
{{#IF TEST_COVERAGE}}
|
|
478
|
-
| Entity | Unit Tests | Integration Tests | Notes |
|
|
479
|
-
|--------|------------|-------------------|-------|
|
|
480
|
-
{{#EACH TEST_COVERAGE}}
|
|
481
|
-
| {{ENTITY}} | {{UNIT_TESTS}} | {{INTEGRATION_TESTS}} | {{NOTES}} |
|
|
482
|
-
{{/EACH}}
|
|
483
|
-
{{ELSE}}
|
|
484
|
-
|
|
485
|
-
- Test coverage not yet documented.
|
|
486
|
-
{{/IF}}
|
|
487
|
-
|
|
488
|
-
### Fixtures & Factories
|
|
489
|
-
|
|
490
|
-
{{#IF FIXTURE_DETAILS}}
|
|
491
|
-
|
|
492
|
-
- Location: `{{FIXTURE_LOCATION}}`
|
|
493
|
-
- Generation Tooling: {{GENERATION_TOOLING}}
|
|
494
|
-
- TTL / Reset Strategy: {{RESET_STRATEGY}}
|
|
495
|
-
{{ELSE}}
|
|
496
|
-
- Fixtures and factories to be defined.
|
|
497
|
-
{{/IF}}
|
|
498
|
-
|
|
499
|
-
---
|
|
500
|
-
|
|
501
|
-
## ๐ Future Enhancements
|
|
502
|
-
|
|
503
|
-
{{#IF ROADMAP_ITEMS}}
|
|
504
|
-
{{#EACH ROADMAP_ITEMS}}
|
|
505
|
-
|
|
506
|
-
- **{{TITLE}}**: {{DESCRIPTION}}
|
|
507
|
-
- Priority: {{PRIORITY}}
|
|
508
|
-
- Target Release: {{TARGET_RELEASE}}
|
|
509
|
-
{{/EACH}}
|
|
510
|
-
{{ELSE}}
|
|
511
|
-
- No future enhancements planned yet.
|
|
512
|
-
{{/IF}}
|
|
513
|
-
|
|
514
|
-
---
|
|
515
|
-
|
|
516
|
-
**Document Version:** 1.0
|
|
517
|
-
|
|
518
|
-
**Last Updated:** {{GENERATION_DATE}}
|
|
519
|
-
|
|
520
|
-
**Generated by:** AI Flow v1.0.0
|
|
1
|
+
# Data Model
|
|
2
|
+
|
|
3
|
+
> Structured view of the entities, relationships, and data contracts that power {{PROJECT_NAME}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ๐ Overview
|
|
8
|
+
|
|
9
|
+
**Database Type:** {{DATABASE_TYPE}}
|
|
10
|
+
|
|
11
|
+
**Primary Storage Layer:** {{DATABASE_PRIMARY_STORAGE}}
|
|
12
|
+
|
|
13
|
+
**Secondary Storage / Caches:** {{DATABASE_SECONDARY_STORAGE}}
|
|
14
|
+
|
|
15
|
+
**Data Access Layer:** {{DATA_ACCESS_LAYER}}
|
|
16
|
+
|
|
17
|
+
## **Data Ownership:** {{DATA_OWNERSHIP}}
|
|
18
|
+
|
|
19
|
+
## ๐ Entity Catalog
|
|
20
|
+
|
|
21
|
+
{{#EACH ENTITIES}}
|
|
22
|
+
|
|
23
|
+
### {{NAME}}
|
|
24
|
+
|
|
25
|
+
**Purpose:** {{PURPOSE}}
|
|
26
|
+
|
|
27
|
+
**Table / Collection:** `{{TABLE_NAME}}`
|
|
28
|
+
|
|
29
|
+
**Primary Key:** {{PRIMARY_KEY}}
|
|
30
|
+
|
|
31
|
+
**Description:** {{DESCRIPTION}}
|
|
32
|
+
|
|
33
|
+
#### Attributes
|
|
34
|
+
|
|
35
|
+
| Field | Type | Nullable | Default | Description |
|
|
36
|
+
| ----- | ---- | -------- | ------- | ----------- |
|
|
37
|
+
|
|
38
|
+
{{#EACH ATTRIBUTES}}
|
|
39
|
+
| {{FIELD}} | {{TYPE}} | {{NULLABLE}} | {{DEFAULT}} | {{DESCRIPTION}} |
|
|
40
|
+
{{/EACH}}
|
|
41
|
+
|
|
42
|
+
#### Validation Rules
|
|
43
|
+
|
|
44
|
+
{{#IF VALIDATION_RULES}}
|
|
45
|
+
{{#EACH VALIDATION_RULES}}
|
|
46
|
+
|
|
47
|
+
- {{RULE_DESCRIPTION}}
|
|
48
|
+
{{/EACH}}
|
|
49
|
+
{{ELSE}}
|
|
50
|
+
- No additional validation rules defined.
|
|
51
|
+
{{/IF}}
|
|
52
|
+
|
|
53
|
+
#### Derived Fields
|
|
54
|
+
|
|
55
|
+
{{#IF DERIVED_FIELDS}}
|
|
56
|
+
| Field | Source | Logic |
|
|
57
|
+
|-------|--------|-------|
|
|
58
|
+
{{#EACH DERIVED_FIELDS}}
|
|
59
|
+
| {{FIELD}} | {{SOURCE}} | {{LOGIC}} |
|
|
60
|
+
{{/EACH}}
|
|
61
|
+
{{ELSE}}
|
|
62
|
+
|
|
63
|
+
- No derived fields defined.
|
|
64
|
+
{{/IF}}
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
{{/EACH}}
|
|
69
|
+
|
|
70
|
+
## ๐ Relationships & Contracts
|
|
71
|
+
|
|
72
|
+
### Cardinality Map
|
|
73
|
+
|
|
74
|
+
{{#EACH RELATIONSHIPS}}
|
|
75
|
+
|
|
76
|
+
- **{{FROM_ENTITY}} โ {{TO_ENTITY}}**: {{TYPE}}
|
|
77
|
+
- Join Condition: `{{JOIN_CONDITION}}`
|
|
78
|
+
- Ownership: {{OWNERSHIP_MODEL}}
|
|
79
|
+
- Cascade Rules: {{CASCADE_RULES}}
|
|
80
|
+
{{/EACH}}
|
|
81
|
+
|
|
82
|
+
### Integrity Constraints
|
|
83
|
+
|
|
84
|
+
{{#EACH INTEGRITY_CONSTRAINTS}}
|
|
85
|
+
|
|
86
|
+
- **{{NAME}}**: {{DESCRIPTION}}
|
|
87
|
+
- Enforced By: {{ENFORCED_BY}}
|
|
88
|
+
- Failure Handling: {{FAILURE_HANDLING}}
|
|
89
|
+
{{/EACH}}
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## ๐ Database Indexes
|
|
94
|
+
|
|
95
|
+
### Index Strategy
|
|
96
|
+
|
|
97
|
+
{{#IF INDEXES_DEFINED}}
|
|
98
|
+
{{#EACH INDEX}}
|
|
99
|
+
|
|
100
|
+
#### {{INDEX_NAME}}
|
|
101
|
+
|
|
102
|
+
**Table:** `{{TABLE_NAME}}`
|
|
103
|
+
|
|
104
|
+
**Columns:** {{INDEX_COLUMNS}}
|
|
105
|
+
|
|
106
|
+
**Type:** {{INDEX_TYPE}} ({{#IF UNIQUE}}Unique{{ELSE}}Non-unique{{/IF}})
|
|
107
|
+
|
|
108
|
+
**Purpose:** {{INDEX_PURPOSE}}
|
|
109
|
+
|
|
110
|
+
**Query Patterns:** {{INDEX_QUERY_PATTERNS}}
|
|
111
|
+
|
|
112
|
+
{{/EACH}}
|
|
113
|
+
|
|
114
|
+
{{ELSE}}
|
|
115
|
+
|
|
116
|
+
- No indexes explicitly defined yet. Indexes will be created based on query patterns and foreign keys.
|
|
117
|
+
{{/IF}}
|
|
118
|
+
|
|
119
|
+
### Index Guidelines
|
|
120
|
+
|
|
121
|
+
- โ
Index all foreign keys
|
|
122
|
+
- โ
Index frequently queried columns
|
|
123
|
+
- โ
Index columns used in WHERE, JOIN, ORDER BY clauses
|
|
124
|
+
- โ
Consider composite indexes for multi-column queries
|
|
125
|
+
- โ Don't over-index (each index slows writes)
|
|
126
|
+
- โ Don't index low-cardinality columns (unless frequently filtered)
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## ๐ Transaction Management
|
|
131
|
+
|
|
132
|
+
### Transaction Isolation Level
|
|
133
|
+
|
|
134
|
+
**Default Level:** {{TRANSACTION_ISOLATION_LEVEL}}
|
|
135
|
+
|
|
136
|
+
**Supported Levels:**
|
|
137
|
+
{{#EACH ISOLATION_LEVEL}}
|
|
138
|
+
|
|
139
|
+
- **{{LEVEL_NAME}}**: {{LEVEL_DESCRIPTION}}
|
|
140
|
+
{{/EACH}}
|
|
141
|
+
|
|
142
|
+
### Transaction Strategy
|
|
143
|
+
|
|
144
|
+
**When to use transactions:**
|
|
145
|
+
|
|
146
|
+
- โ
Multi-step operations that must succeed or fail together
|
|
147
|
+
- โ
Updates affecting multiple tables
|
|
148
|
+
- โ
Operations requiring consistency guarantees
|
|
149
|
+
- โ Single-row operations (usually handled by database)
|
|
150
|
+
|
|
151
|
+
**Transaction Patterns:**
|
|
152
|
+
|
|
153
|
+
{{#IF TRANSACTION_PATTERNS}}
|
|
154
|
+
{{#EACH TRANSACTION_PATTERN}}
|
|
155
|
+
|
|
156
|
+
#### {{PATTERN_NAME}}
|
|
157
|
+
|
|
158
|
+
**Use Case:** {{PATTERN_USE_CASE}}
|
|
159
|
+
|
|
160
|
+
**Implementation:**
|
|
161
|
+
|
|
162
|
+
```{{LANGUAGE}}
|
|
163
|
+
{{PATTERN_EXAMPLE}}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Consistency Guarantees:** {{CONSISTENCY_GUARANTEES}}
|
|
167
|
+
|
|
168
|
+
{{/EACH}}
|
|
169
|
+
{{ELSE}}
|
|
170
|
+
|
|
171
|
+
- Transaction patterns to be defined based on business requirements.
|
|
172
|
+
{{/IF}}
|
|
173
|
+
|
|
174
|
+
### Transaction Boundaries (Atomic Operations)
|
|
175
|
+
|
|
176
|
+
{{#IF TRANSACTION_BOUNDARIES}}
|
|
177
|
+
{{#EACH TRANSACTION_BOUNDARY}}
|
|
178
|
+
|
|
179
|
+
#### {{OPERATION_NAME}}
|
|
180
|
+
|
|
181
|
+
**Description:** {{DESCRIPTION}}
|
|
182
|
+
|
|
183
|
+
**Steps (all or nothing):**
|
|
184
|
+
{{#EACH STEP}}
|
|
185
|
+
{{STEP_NUMBER}}. {{STEP_DESCRIPTION}} {{#IF IN_TRANSACTION}}โ
In transaction{{ELSE}}โก Outside (async){{/IF}}
|
|
186
|
+
{{/EACH}}
|
|
187
|
+
|
|
188
|
+
**Rollback Trigger:** {{ROLLBACK_TRIGGER}}
|
|
189
|
+
|
|
190
|
+
**Compensating Actions:** {{COMPENSATING_ACTIONS}}
|
|
191
|
+
|
|
192
|
+
{{/EACH}}
|
|
193
|
+
{{ELSE}}
|
|
194
|
+
|
|
195
|
+
- No explicit transaction boundaries defined. Individual operations are atomic by default.
|
|
196
|
+
{{/IF}}
|
|
197
|
+
|
|
198
|
+
### Consistency Model
|
|
199
|
+
|
|
200
|
+
**Consistency Strategy:** {{CONSISTENCY_STRATEGY}}
|
|
201
|
+
|
|
202
|
+
{{#IF EVENTUAL_CONSISTENCY}}
|
|
203
|
+
**Eventual Consistency:**
|
|
204
|
+
|
|
205
|
+
- Acceptable delay: {{CONSISTENCY_DELAY}}
|
|
206
|
+
- Replication lag tolerance: {{REPLICATION_LAG}}
|
|
207
|
+
- Conflict resolution: {{CONFLICT_RESOLUTION}}
|
|
208
|
+
{{/IF}}
|
|
209
|
+
|
|
210
|
+
{{#IF STRONG_CONSISTENCY}}
|
|
211
|
+
**Strong Consistency:**
|
|
212
|
+
|
|
213
|
+
- All reads see latest writes
|
|
214
|
+
- Synchronous replication required
|
|
215
|
+
- Higher latency, lower throughput
|
|
216
|
+
{{/IF}}
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## ๐ง Schema Migrations
|
|
221
|
+
|
|
222
|
+
### Migration Tool
|
|
223
|
+
|
|
224
|
+
**Tool:** {{MIGRATION_TOOL}}
|
|
225
|
+
|
|
226
|
+
{{#IF PRISMA_MIGRATE}}
|
|
227
|
+
**Prisma Migrate:**
|
|
228
|
+
|
|
229
|
+
- Location: `prisma/migrations/`
|
|
230
|
+
- Generate migration: `npx prisma migrate dev --name migration_name`
|
|
231
|
+
- Apply migration: `npx prisma migrate deploy`
|
|
232
|
+
{{/IF}}
|
|
233
|
+
|
|
234
|
+
{{#IF TYPEORM_MIGRATIONS}}
|
|
235
|
+
**TypeORM Migrations:**
|
|
236
|
+
|
|
237
|
+
- Location: `src/migrations/`
|
|
238
|
+
- Generate migration: `npm run migration:generate -- -n MigrationName`
|
|
239
|
+
- Run migration: `npm run migration:run`
|
|
240
|
+
- Revert migration: `npm run migration:revert`
|
|
241
|
+
{{/IF}}
|
|
242
|
+
|
|
243
|
+
{{#IF ALEMBIC}}
|
|
244
|
+
**Alembic (Python):**
|
|
245
|
+
|
|
246
|
+
- Location: `alembic/versions/`
|
|
247
|
+
- Generate migration: `alembic revision --autogenerate -m "migration_name"`
|
|
248
|
+
- Apply migration: `alembic upgrade head`
|
|
249
|
+
- Rollback: `alembic downgrade -1`
|
|
250
|
+
{{/IF}}
|
|
251
|
+
|
|
252
|
+
### Migration Strategy
|
|
253
|
+
|
|
254
|
+
**Versioning:** {{MIGRATION_VERSIONING}}
|
|
255
|
+
|
|
256
|
+
**Rollback Strategy:** {{MIGRATION_ROLLBACK_STRATEGY}}
|
|
257
|
+
|
|
258
|
+
**Zero-Downtime Migrations:** {{#IF ZERO_DOWNTIME_MIGRATIONS}}Yes{{ELSE}}No{{/IF}}
|
|
259
|
+
|
|
260
|
+
{{#IF ZERO_DOWNTIME_MIGRATIONS}}
|
|
261
|
+
**Zero-Downtime Approach:**
|
|
262
|
+
{{#EACH ZERO_DOWNTIME_STEP}}
|
|
263
|
+
{{STEP_NUMBER}}. {{STEP_DESCRIPTION}}
|
|
264
|
+
{{/EACH}}
|
|
265
|
+
{{/IF}}
|
|
266
|
+
|
|
267
|
+
### Migration Guidelines
|
|
268
|
+
|
|
269
|
+
- โ
Always review generated migrations before applying
|
|
270
|
+
- โ
Test migrations on staging before production
|
|
271
|
+
- โ
Keep migrations small and focused
|
|
272
|
+
- โ
Never edit applied migrations (create new ones)
|
|
273
|
+
- โ
Document breaking changes
|
|
274
|
+
- โ Don't run migrations manually in production
|
|
275
|
+
- โ Don't mix data migrations with schema migrations
|
|
276
|
+
|
|
277
|
+
### Migration History
|
|
278
|
+
|
|
279
|
+
{{#IF MIGRATION_HISTORY}}
|
|
280
|
+
| Version | Description | Applied | Rollback Available |
|
|
281
|
+
|---------|-------------|---------|-------------------|
|
|
282
|
+
{{#EACH MIGRATION}}
|
|
283
|
+
| {{VERSION}} | {{DESCRIPTION}} | {{APPLIED_DATE}} | {{#IF ROLLBACK_AVAILABLE}}Yes{{ELSE}}No{{/IF}} |
|
|
284
|
+
{{/EACH}}
|
|
285
|
+
{{ELSE}}
|
|
286
|
+
|
|
287
|
+
- Migration history will be tracked by the migration tool.
|
|
288
|
+
{{/IF}}
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## ๐งฉ Domain Logic & Aggregates
|
|
293
|
+
|
|
294
|
+
### Aggregate Roots
|
|
295
|
+
|
|
296
|
+
{{#EACH AGGREGATE_ROOTS}}
|
|
297
|
+
|
|
298
|
+
#### {{NAME}}
|
|
299
|
+
|
|
300
|
+
**Bounded Context:** {{CONTEXT}}
|
|
301
|
+
|
|
302
|
+
**Responsibilities:** {{RESPONSIBILITIES}}
|
|
303
|
+
|
|
304
|
+
**Entities Included:** {{ENTITIES_INCLUDED}}
|
|
305
|
+
|
|
306
|
+
**Consistency Rules:** {{CONSISTENCY_RULES}}
|
|
307
|
+
|
|
308
|
+
{{/EACH}}
|
|
309
|
+
|
|
310
|
+
### Domain Events
|
|
311
|
+
|
|
312
|
+
{{#IF DOMAIN_EVENTS}}
|
|
313
|
+
| Event | Trigger | Payload | Consumers |
|
|
314
|
+
|-------|---------|---------|-----------|
|
|
315
|
+
{{#EACH DOMAIN_EVENTS}}
|
|
316
|
+
| {{NAME}} | {{TRIGGER}} | {{PAYLOAD}} | {{CONSUMERS}} |
|
|
317
|
+
{{/EACH}}
|
|
318
|
+
{{ELSE}}
|
|
319
|
+
|
|
320
|
+
- No domain events defined.
|
|
321
|
+
{{/IF}}
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## ๏ฟฝ๏ธ Soft Delete & Data Lifecycle
|
|
326
|
+
|
|
327
|
+
### Deletion Strategy
|
|
328
|
+
|
|
329
|
+
**Soft Delete Field:** `{{SOFT_DELETE_FIELD}}` ({{SOFT_DELETE_TYPE}})
|
|
330
|
+
|
|
331
|
+
**Default Query Behavior:** {{SOFT_DELETE_QUERY_DEFAULT}}
|
|
332
|
+
|
|
333
|
+
### Entity Deletion Rules
|
|
334
|
+
|
|
335
|
+
| Entity | Delete Type | Field | Cleanup Policy |
|
|
336
|
+
| ------ | ----------- | ----- | -------------- |
|
|
337
|
+
|
|
338
|
+
{{#EACH ENTITY_DELETE_RULE}}
|
|
339
|
+
| {{ENTITY}} | {{DELETE_TYPE}} | {{FIELD}} | {{CLEANUP_POLICY}} |
|
|
340
|
+
{{/EACH}}
|
|
341
|
+
|
|
342
|
+
### Permanent Cleanup Schedule
|
|
343
|
+
|
|
344
|
+
**Policy:** {{CLEANUP_POLICY}}
|
|
345
|
+
**Schedule:** {{CLEANUP_SCHEDULE}}
|
|
346
|
+
**Retention Period:** {{RETENTION_DAYS}} days
|
|
347
|
+
|
|
348
|
+
### Cascade Delete Behavior
|
|
349
|
+
|
|
350
|
+
{{#EACH CASCADE_DELETE}}
|
|
351
|
+
|
|
352
|
+
- **{{PARENT_ENTITY}}** โ **{{CHILD_ENTITY}}**: {{BEHAVIOR}}
|
|
353
|
+
{{/EACH}}
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## ๐ State Machines
|
|
358
|
+
|
|
359
|
+
{{#IF STATE_MACHINES}}
|
|
360
|
+
{{#EACH STATE_MACHINE}}
|
|
361
|
+
|
|
362
|
+
### {{ENTITY_NAME}} State Machine
|
|
363
|
+
|
|
364
|
+
**States:** {{STATES}}
|
|
365
|
+
|
|
366
|
+
**Initial State:** {{INITIAL_STATE}}
|
|
367
|
+
|
|
368
|
+
**Terminal States:** {{TERMINAL_STATES}}
|
|
369
|
+
|
|
370
|
+
```mermaid
|
|
371
|
+
stateDiagram-v2
|
|
372
|
+
{{STATE_DIAGRAM}}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
#### Valid Transitions
|
|
376
|
+
|
|
377
|
+
| From | To | Action | Guards | Side Effects |
|
|
378
|
+
| ---- | --- | ------ | ------ | ------------ |
|
|
379
|
+
|
|
380
|
+
{{#EACH TRANSITION}}
|
|
381
|
+
| {{FROM}} | {{TO}} | {{ACTION}} | {{GUARDS}} | {{SIDE_EFFECTS}} |
|
|
382
|
+
{{/EACH}}
|
|
383
|
+
|
|
384
|
+
#### Invalid Transitions (Explicitly Forbidden)
|
|
385
|
+
|
|
386
|
+
{{#EACH INVALID_TRANSITION}}
|
|
387
|
+
|
|
388
|
+
- `{{FROM}}` โ `{{TO}}`: {{REASON}}
|
|
389
|
+
{{/EACH}}
|
|
390
|
+
|
|
391
|
+
{{/EACH}}
|
|
392
|
+
{{ELSE}}
|
|
393
|
+
|
|
394
|
+
- No state machines defined. Entities use simple status fields without formal transition rules.
|
|
395
|
+
{{/IF}}
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## ๏ฟฝ๐ฆ Serialization Contracts
|
|
400
|
+
|
|
401
|
+
### API Representations
|
|
402
|
+
|
|
403
|
+
{{#EACH API_CONTRACTS}}
|
|
404
|
+
|
|
405
|
+
#### {{NAME}}
|
|
406
|
+
|
|
407
|
+
**Endpoint:** `{{ENDPOINT}}`
|
|
408
|
+
|
|
409
|
+
**Method:** {{METHOD}}
|
|
410
|
+
|
|
411
|
+
**Request Schema:**
|
|
412
|
+
|
|
413
|
+
```json
|
|
414
|
+
{{REQUEST_SCHEMA}}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
**Response Schema:**
|
|
418
|
+
|
|
419
|
+
```json
|
|
420
|
+
{{RESPONSE_SCHEMA}}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## **Notes:** {{NOTES}}
|
|
424
|
+
|
|
425
|
+
{{/EACH}}
|
|
426
|
+
|
|
427
|
+
### Message Queue Payloads
|
|
428
|
+
|
|
429
|
+
{{#IF MESSAGE_PAYLOADS}}
|
|
430
|
+
{{#EACH MESSAGE_PAYLOADS}}
|
|
431
|
+
|
|
432
|
+
- **{{TOPIC}}**
|
|
433
|
+
- Producer: {{PRODUCER}}
|
|
434
|
+
- Consumers: {{CONSUMERS}}
|
|
435
|
+
- Schema:
|
|
436
|
+
`json
|
|
437
|
+
{{SCHEMA}}
|
|
438
|
+
`
|
|
439
|
+
{{/EACH}}
|
|
440
|
+
{{ELSE}}
|
|
441
|
+
- No asynchronous payloads defined.
|
|
442
|
+
{{/IF}}
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## ๐๏ธ Reference Data & Seed Values
|
|
447
|
+
|
|
448
|
+
{{#IF REFERENCE_DATA}}
|
|
449
|
+
| Name | Source | Format | Refresh Strategy |
|
|
450
|
+
|------|--------|--------|------------------|
|
|
451
|
+
{{#EACH REFERENCE_DATA}}
|
|
452
|
+
| {{NAME}} | {{SOURCE}} | {{FORMAT}} | {{REFRESH_STRATEGY}} |
|
|
453
|
+
{{/EACH}}
|
|
454
|
+
{{ELSE}}
|
|
455
|
+
|
|
456
|
+
- No reference datasets recorded.
|
|
457
|
+
{{/IF}}
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## ๐ Data Governance
|
|
462
|
+
|
|
463
|
+
**Data Sensitivity Classification:** {{DATA_SENSITIVITY}}
|
|
464
|
+
|
|
465
|
+
**PII Handling:** {{PII_HANDLING}}
|
|
466
|
+
|
|
467
|
+
**Audit Strategy:** {{AUDIT_STRATEGY}}
|
|
468
|
+
|
|
469
|
+
**Retention Policy:** {{RETENTION_POLICY}}
|
|
470
|
+
|
|
471
|
+
## **Compliance Scope:** {{COMPLIANCE_SCOPE}}
|
|
472
|
+
|
|
473
|
+
## ๐งช Testing & Quality Gates
|
|
474
|
+
|
|
475
|
+
### Test Coverage by Entity
|
|
476
|
+
|
|
477
|
+
{{#IF TEST_COVERAGE}}
|
|
478
|
+
| Entity | Unit Tests | Integration Tests | Notes |
|
|
479
|
+
|--------|------------|-------------------|-------|
|
|
480
|
+
{{#EACH TEST_COVERAGE}}
|
|
481
|
+
| {{ENTITY}} | {{UNIT_TESTS}} | {{INTEGRATION_TESTS}} | {{NOTES}} |
|
|
482
|
+
{{/EACH}}
|
|
483
|
+
{{ELSE}}
|
|
484
|
+
|
|
485
|
+
- Test coverage not yet documented.
|
|
486
|
+
{{/IF}}
|
|
487
|
+
|
|
488
|
+
### Fixtures & Factories
|
|
489
|
+
|
|
490
|
+
{{#IF FIXTURE_DETAILS}}
|
|
491
|
+
|
|
492
|
+
- Location: `{{FIXTURE_LOCATION}}`
|
|
493
|
+
- Generation Tooling: {{GENERATION_TOOLING}}
|
|
494
|
+
- TTL / Reset Strategy: {{RESET_STRATEGY}}
|
|
495
|
+
{{ELSE}}
|
|
496
|
+
- Fixtures and factories to be defined.
|
|
497
|
+
{{/IF}}
|
|
498
|
+
|
|
499
|
+
---
|
|
500
|
+
|
|
501
|
+
## ๐ Future Enhancements
|
|
502
|
+
|
|
503
|
+
{{#IF ROADMAP_ITEMS}}
|
|
504
|
+
{{#EACH ROADMAP_ITEMS}}
|
|
505
|
+
|
|
506
|
+
- **{{TITLE}}**: {{DESCRIPTION}}
|
|
507
|
+
- Priority: {{PRIORITY}}
|
|
508
|
+
- Target Release: {{TARGET_RELEASE}}
|
|
509
|
+
{{/EACH}}
|
|
510
|
+
{{ELSE}}
|
|
511
|
+
- No future enhancements planned yet.
|
|
512
|
+
{{/IF}}
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
**Document Version:** 1.0
|
|
517
|
+
|
|
518
|
+
**Last Updated:** {{GENERATION_DATE}}
|
|
519
|
+
|
|
520
|
+
**Generated by:** AI Flow v1.0.0
|