@comfanion/workflow 3.0.0
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/README.md +185 -0
- package/bin/cli.js +406 -0
- package/package.json +50 -0
- package/src/build-info.json +16 -0
- package/src/opencode/ARCHITECTURE.md +255 -0
- package/src/opencode/FLOW.yaml +900 -0
- package/src/opencode/agents/analyst.md +141 -0
- package/src/opencode/agents/architect.md +177 -0
- package/src/opencode/agents/change-manager.md +263 -0
- package/src/opencode/agents/dev.md +171 -0
- package/src/opencode/agents/module-docs.md +628 -0
- package/src/opencode/agents/pm.md +157 -0
- package/src/opencode/agents/researcher.md +254 -0
- package/src/opencode/agents/sm.md +184 -0
- package/src/opencode/agents/workflow-orchestrator.md +249 -0
- package/src/opencode/checklists/architecture-checklist.md +166 -0
- package/src/opencode/checklists/code-review-checklist.md +151 -0
- package/src/opencode/checklists/prd-checklist.md +140 -0
- package/src/opencode/checklists/requirements-checklist.md +86 -0
- package/src/opencode/checklists/story-checklist.md +137 -0
- package/src/opencode/commands/architecture.md +68 -0
- package/src/opencode/commands/archive.md +146 -0
- package/src/opencode/commands/change.md +169 -0
- package/src/opencode/commands/clarify.md +132 -0
- package/src/opencode/commands/code-review.md +96 -0
- package/src/opencode/commands/coding-standards.md +102 -0
- package/src/opencode/commands/dev-story.md +80 -0
- package/src/opencode/commands/diagram.md +152 -0
- package/src/opencode/commands/epics.md +52 -0
- package/src/opencode/commands/help.md +139 -0
- package/src/opencode/commands/jira-sync.md +58 -0
- package/src/opencode/commands/module-docs.md +158 -0
- package/src/opencode/commands/prd.md +63 -0
- package/src/opencode/commands/quick.md +166 -0
- package/src/opencode/commands/requirements.md +49 -0
- package/src/opencode/commands/research.md +113 -0
- package/src/opencode/commands/sprint-plan.md +59 -0
- package/src/opencode/commands/stories.md +61 -0
- package/src/opencode/commands/validate.md +84 -0
- package/src/opencode/commands/workflow-status.md +150 -0
- package/src/opencode/config.yaml +223 -0
- package/src/opencode/opencode.json +36 -0
- package/src/opencode/skills/acceptance-criteria/SKILL.md +212 -0
- package/src/opencode/skills/adr-writing/SKILL.md +241 -0
- package/src/opencode/skills/architecture-design/SKILL.md +183 -0
- package/src/opencode/skills/architecture-validation/SKILL.md +199 -0
- package/src/opencode/skills/archiving/SKILL.md +191 -0
- package/src/opencode/skills/changelog/SKILL.md +280 -0
- package/src/opencode/skills/code-review/SKILL.md +193 -0
- package/src/opencode/skills/coding-standards/SKILL.md +430 -0
- package/src/opencode/skills/diagram-creation/SKILL.md +273 -0
- package/src/opencode/skills/doc-todo/SKILL.md +325 -0
- package/src/opencode/skills/epic-writing/SKILL.md +291 -0
- package/src/opencode/skills/jira-integration/SKILL.md +560 -0
- package/src/opencode/skills/methodologies/SKILL.md +376 -0
- package/src/opencode/skills/module-documentation/SKILL.md +214 -0
- package/src/opencode/skills/prd-validation/SKILL.md +164 -0
- package/src/opencode/skills/prd-writing/SKILL.md +104 -0
- package/src/opencode/skills/requirements-gathering/SKILL.md +132 -0
- package/src/opencode/skills/requirements-validation/SKILL.md +141 -0
- package/src/opencode/skills/research-methodology/SKILL.md +140 -0
- package/src/opencode/skills/sprint-planning/SKILL.md +217 -0
- package/src/opencode/skills/story-writing/SKILL.md +574 -0
- package/src/opencode/skills/test-design/SKILL.md +313 -0
- package/src/opencode/skills/translation/SKILL.md +411 -0
- package/src/opencode/templates/CHANGELOG.md +82 -0
- package/src/opencode/templates/adr-template.md +115 -0
- package/src/opencode/templates/architecture-template.md +362 -0
- package/src/opencode/templates/change-proposal-template.md +186 -0
- package/src/opencode/templates/epic-template.md +151 -0
- package/src/opencode/templates/git-workflow-template.md +384 -0
- package/src/opencode/templates/integration-tests-template.md +265 -0
- package/src/opencode/templates/jira-cache-template.yaml +103 -0
- package/src/opencode/templates/module-index-template.md +139 -0
- package/src/opencode/templates/module-test-cases-template.md +230 -0
- package/src/opencode/templates/prd-acceptance-criteria-template.md +124 -0
- package/src/opencode/templates/prd-template.md +479 -0
- package/src/opencode/templates/requirements-template.md +132 -0
- package/src/opencode/templates/sprint-status-template.yaml +84 -0
- package/src/opencode/templates/story-template.md +437 -0
- package/src/opencode/templates/testing-standards-template.md +359 -0
- package/src/opencode/workflows/dev-story/instructions.md +529 -0
- package/src/repo-structure/.gitattributes +64 -0
- package/src/repo-structure/CONTRIBUTING.md +182 -0
- package/src/repo-structure/README.md +77 -0
- package/src/repo-structure/docs/README.md +62 -0
- package/src/repo-structure/docs/api/README.md +43 -0
- package/src/repo-structure/docs/architecture/README.md +36 -0
- package/src/repo-structure/docs/architecture/adr/README.md +53 -0
- package/src/repo-structure/docs/architecture/diagrams/README.md +59 -0
- package/src/repo-structure/docs/coding-standards/README.md +52 -0
- package/src/repo-structure/docs/confluence/README.md +43 -0
- package/src/repo-structure/docs/requirements/README.md +28 -0
- package/src/repo-structure/docs/sprint-artifacts/README.md +76 -0
- package/src/repo-structure/docs/sprint-artifacts/backlog/README.md +24 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# Architecture Integration Tests
|
|
2
|
+
|
|
3
|
+
**Architecture Version:** [X.Y]
|
|
4
|
+
**Date:** [YYYY-MM-DD]
|
|
5
|
+
**Author:** [Name]
|
|
6
|
+
**Status:** Draft | Review | Approved
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
This document defines integration test specifications for module contracts,
|
|
13
|
+
API boundaries, and cross-cutting concerns as defined in the Architecture document.
|
|
14
|
+
|
|
15
|
+
**Reference:** @docs/architecture.md
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. Module Contract Tests
|
|
20
|
+
|
|
21
|
+
### 1.1 [Module A] ↔ [Module B] Contract
|
|
22
|
+
|
|
23
|
+
**Integration Type:** API | Event | Database
|
|
24
|
+
**Architecture Reference:** Section X.Y
|
|
25
|
+
|
|
26
|
+
#### Contract Definition
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
producer: module-a
|
|
30
|
+
consumer: module-b
|
|
31
|
+
contract_type: REST API | Kafka Event | Shared Schema
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
#### Test Scenarios
|
|
35
|
+
|
|
36
|
+
| Test ID | Scenario | Input | Expected Output | Priority |
|
|
37
|
+
|---------|----------|-------|-----------------|----------|
|
|
38
|
+
| INT-001 | Happy path | Valid request | 200 OK + response | P0 |
|
|
39
|
+
| INT-002 | Invalid input | Malformed request | 400 Bad Request | P0 |
|
|
40
|
+
| INT-003 | Not found | Non-existent ID | 404 Not Found | P1 |
|
|
41
|
+
| INT-004 | Timeout handling | Slow response | Retry + fallback | P1 |
|
|
42
|
+
|
|
43
|
+
#### Contract Schema
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
// Request
|
|
47
|
+
{
|
|
48
|
+
"id": "uuid",
|
|
49
|
+
"data": {}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Response
|
|
53
|
+
{
|
|
54
|
+
"status": "success|error",
|
|
55
|
+
"data": {}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### 1.2 [Module C] ↔ [External System] Contract
|
|
62
|
+
|
|
63
|
+
**Integration Type:** External API
|
|
64
|
+
**Architecture Reference:** Section X.Y
|
|
65
|
+
|
|
66
|
+
#### Test Scenarios
|
|
67
|
+
|
|
68
|
+
| Test ID | Scenario | Input | Expected Output | Priority |
|
|
69
|
+
|---------|----------|-------|-----------------|----------|
|
|
70
|
+
| INT-010 | External API call | Valid payload | External response | P0 |
|
|
71
|
+
| INT-011 | External unavailable | Any request | Circuit breaker | P0 |
|
|
72
|
+
| INT-012 | Rate limit hit | Many requests | Backoff + retry | P1 |
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 2. Event-Driven Integration Tests
|
|
77
|
+
|
|
78
|
+
### 2.1 Event: [event.name]
|
|
79
|
+
|
|
80
|
+
**Producer:** [module-name]
|
|
81
|
+
**Consumers:** [consumer-1], [consumer-2]
|
|
82
|
+
**Architecture Reference:** Section X.Y
|
|
83
|
+
|
|
84
|
+
#### Event Schema
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"event_type": "order.created",
|
|
89
|
+
"version": "1.0",
|
|
90
|
+
"timestamp": "ISO8601",
|
|
91
|
+
"payload": {
|
|
92
|
+
"order_id": "uuid",
|
|
93
|
+
"customer_id": "uuid"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
#### Test Scenarios
|
|
99
|
+
|
|
100
|
+
| Test ID | Scenario | Setup | Action | Verification | Priority |
|
|
101
|
+
|---------|----------|-------|--------|--------------|----------|
|
|
102
|
+
| EVT-001 | Event published | Order created | Publish event | Event in Kafka topic | P0 |
|
|
103
|
+
| EVT-002 | Consumer processes | Event published | Consumer runs | State updated | P0 |
|
|
104
|
+
| EVT-003 | Idempotent processing | Duplicate event | Consumer runs | No duplicate state | P0 |
|
|
105
|
+
| EVT-004 | Dead letter handling | Invalid event | Consumer fails | Event in DLQ | P1 |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 3. Database Integration Tests
|
|
110
|
+
|
|
111
|
+
### 3.1 [Module] Repository Tests
|
|
112
|
+
|
|
113
|
+
**Database:** PostgreSQL
|
|
114
|
+
**Tables:** [table1], [table2]
|
|
115
|
+
**Architecture Reference:** Section X.Y
|
|
116
|
+
|
|
117
|
+
#### Test Scenarios
|
|
118
|
+
|
|
119
|
+
| Test ID | Scenario | Setup | Operation | Verification | Priority |
|
|
120
|
+
|---------|----------|-------|-----------|--------------|----------|
|
|
121
|
+
| DB-001 | Create entity | Empty DB | Insert | Entity persisted | P0 |
|
|
122
|
+
| DB-002 | Read entity | Entity exists | Select | Correct data returned | P0 |
|
|
123
|
+
| DB-003 | Update entity | Entity exists | Update | Changes persisted | P0 |
|
|
124
|
+
| DB-004 | Delete entity | Entity exists | Delete | Entity removed | P0 |
|
|
125
|
+
| DB-005 | Optimistic lock | Concurrent update | Update | Version conflict | P0 |
|
|
126
|
+
| DB-006 | Transaction rollback | Partial failure | Multi-insert | All rolled back | P0 |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 4. API Boundary Tests
|
|
131
|
+
|
|
132
|
+
### 4.1 [Service] HTTP API
|
|
133
|
+
|
|
134
|
+
**Base URL:** /api/v1/[resource]
|
|
135
|
+
**Architecture Reference:** Section X.Y
|
|
136
|
+
|
|
137
|
+
#### Endpoint Tests
|
|
138
|
+
|
|
139
|
+
| Test ID | Method | Endpoint | Request | Expected | Priority |
|
|
140
|
+
|---------|--------|----------|---------|----------|----------|
|
|
141
|
+
| API-001 | POST | /resource | Valid body | 201 Created | P0 |
|
|
142
|
+
| API-002 | GET | /resource/{id} | Valid ID | 200 + entity | P0 |
|
|
143
|
+
| API-003 | PUT | /resource/{id} | Valid update | 200 + updated | P0 |
|
|
144
|
+
| API-004 | DELETE | /resource/{id} | Valid ID | 204 No Content | P0 |
|
|
145
|
+
| API-005 | POST | /resource | Invalid body | 400 + errors | P0 |
|
|
146
|
+
| API-006 | GET | /resource/{id} | Unknown ID | 404 Not Found | P0 |
|
|
147
|
+
| API-007 | ANY | /resource | No auth | 401 Unauthorized | P0 |
|
|
148
|
+
| API-008 | ANY | /resource | Wrong role | 403 Forbidden | P1 |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 5. Cross-Cutting Concerns
|
|
153
|
+
|
|
154
|
+
### 5.1 Authentication & Authorization
|
|
155
|
+
|
|
156
|
+
| Test ID | Scenario | Setup | Action | Expected | Priority |
|
|
157
|
+
|---------|----------|-------|--------|----------|----------|
|
|
158
|
+
| AUTH-001 | Valid JWT | Valid token | API call | 200 OK | P0 |
|
|
159
|
+
| AUTH-002 | Expired JWT | Expired token | API call | 401 Unauthorized | P0 |
|
|
160
|
+
| AUTH-003 | Invalid JWT | Malformed token | API call | 401 Unauthorized | P0 |
|
|
161
|
+
| AUTH-004 | Role check | User without role | Protected endpoint | 403 Forbidden | P0 |
|
|
162
|
+
|
|
163
|
+
### 5.2 Observability
|
|
164
|
+
|
|
165
|
+
| Test ID | Scenario | Action | Verification | Priority |
|
|
166
|
+
|---------|----------|--------|--------------|----------|
|
|
167
|
+
| OBS-001 | Request logging | API call | Log entry created | P1 |
|
|
168
|
+
| OBS-002 | Error logging | Error occurs | Error logged with context | P0 |
|
|
169
|
+
| OBS-003 | Trace propagation | Cross-service call | Trace ID preserved | P1 |
|
|
170
|
+
| OBS-004 | Metrics export | API calls | Metrics in Prometheus | P1 |
|
|
171
|
+
|
|
172
|
+
### 5.3 Error Handling
|
|
173
|
+
|
|
174
|
+
| Test ID | Scenario | Trigger | Expected Response | Priority |
|
|
175
|
+
|---------|----------|---------|-------------------|----------|
|
|
176
|
+
| ERR-001 | Validation error | Invalid input | 400 + structured error | P0 |
|
|
177
|
+
| ERR-002 | Business error | Domain violation | 422 + error code | P0 |
|
|
178
|
+
| ERR-003 | Not found | Unknown resource | 404 + message | P0 |
|
|
179
|
+
| ERR-004 | Internal error | Unexpected failure | 500 + correlation ID | P0 |
|
|
180
|
+
| ERR-005 | Service unavailable | Dependency down | 503 + retry-after | P1 |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 6. NFR Verification Tests
|
|
185
|
+
|
|
186
|
+
### 6.1 Performance Tests
|
|
187
|
+
|
|
188
|
+
**Tool:** k6
|
|
189
|
+
**Environment:** Staging
|
|
190
|
+
|
|
191
|
+
| Test ID | NFR ID | Scenario | Target | Duration | Priority |
|
|
192
|
+
|---------|--------|----------|--------|----------|----------|
|
|
193
|
+
| PERF-001 | NFR-001 | API response time | p95 < 200ms | 10 min | P0 |
|
|
194
|
+
| PERF-002 | NFR-002 | Throughput | > 1000 RPS | 10 min | P0 |
|
|
195
|
+
| PERF-003 | NFR-003 | Concurrent users | 500 users | 30 min | P1 |
|
|
196
|
+
|
|
197
|
+
### 6.2 Reliability Tests
|
|
198
|
+
|
|
199
|
+
| Test ID | NFR ID | Scenario | Recovery Time | Priority |
|
|
200
|
+
|---------|--------|----------|---------------|----------|
|
|
201
|
+
| REL-001 | NFR-010 | Service restart | < 30 sec | P0 |
|
|
202
|
+
| REL-002 | NFR-011 | Database failover | < 60 sec | P0 |
|
|
203
|
+
| REL-003 | NFR-012 | Kafka partition leader change | No message loss | P0 |
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 7. Test Environment
|
|
208
|
+
|
|
209
|
+
### 7.1 Testcontainers Setup
|
|
210
|
+
|
|
211
|
+
```go
|
|
212
|
+
// Example testcontainers configuration
|
|
213
|
+
containers:
|
|
214
|
+
postgres:
|
|
215
|
+
image: postgres:17
|
|
216
|
+
ports: [5432]
|
|
217
|
+
env:
|
|
218
|
+
POSTGRES_DB: test_db
|
|
219
|
+
POSTGRES_USER: test
|
|
220
|
+
POSTGRES_PASSWORD: test
|
|
221
|
+
|
|
222
|
+
kafka:
|
|
223
|
+
image: confluentinc/cp-kafka:7.x
|
|
224
|
+
ports: [9092]
|
|
225
|
+
|
|
226
|
+
redis:
|
|
227
|
+
image: redis:7
|
|
228
|
+
ports: [6379]
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### 7.2 Test Data
|
|
232
|
+
|
|
233
|
+
| Dataset | Description | Location |
|
|
234
|
+
|---------|-------------|----------|
|
|
235
|
+
| seed_data.sql | Initial test data | tests/fixtures/ |
|
|
236
|
+
| events.json | Sample Kafka events | tests/fixtures/ |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Coverage Matrix
|
|
241
|
+
|
|
242
|
+
| Module | Contract Tests | Event Tests | API Tests | DB Tests | Total |
|
|
243
|
+
|--------|---------------|-------------|-----------|----------|-------|
|
|
244
|
+
| Catalog | 5 | 3 | 8 | 6 | 22 |
|
|
245
|
+
| Orders | 4 | 5 | 10 | 8 | 27 |
|
|
246
|
+
| Inventory | 3 | 4 | 6 | 5 | 18 |
|
|
247
|
+
| **Total** | 12 | 12 | 24 | 19 | 67 |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Sign-off
|
|
252
|
+
|
|
253
|
+
| Role | Name | Date | Signature |
|
|
254
|
+
|------|------|------|-----------|
|
|
255
|
+
| Architect | | | |
|
|
256
|
+
| Tech Lead | | | |
|
|
257
|
+
| QA Lead | | | |
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Revision History
|
|
262
|
+
|
|
263
|
+
| Version | Date | Author | Changes |
|
|
264
|
+
|---------|------|--------|---------|
|
|
265
|
+
| 0.1 | YYYY-MM-DD | [Name] | Initial draft |
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Jira Cache File
|
|
2
|
+
# Auto-generated and maintained by SM agent
|
|
3
|
+
# Manual edits will be overwritten on next sync
|
|
4
|
+
|
|
5
|
+
metadata:
|
|
6
|
+
project_key: "{{project_key}}"
|
|
7
|
+
last_sync: "{{timestamp}}"
|
|
8
|
+
cache_ttl_minutes: 30
|
|
9
|
+
total_items: 0
|
|
10
|
+
|
|
11
|
+
# Project configuration
|
|
12
|
+
project:
|
|
13
|
+
key: "{{project_key}}"
|
|
14
|
+
name: "{{project_name}}"
|
|
15
|
+
url: "{{jira_base_url}}/browse/{{project_key}}"
|
|
16
|
+
|
|
17
|
+
# Available issue types
|
|
18
|
+
issue_types:
|
|
19
|
+
- name: "Epic"
|
|
20
|
+
id: "10000"
|
|
21
|
+
- name: "Story"
|
|
22
|
+
id: "10001"
|
|
23
|
+
- name: "Task"
|
|
24
|
+
id: "10002"
|
|
25
|
+
- name: "Bug"
|
|
26
|
+
id: "10003"
|
|
27
|
+
|
|
28
|
+
# Available statuses
|
|
29
|
+
statuses:
|
|
30
|
+
- name: "Backlog"
|
|
31
|
+
id: "10000"
|
|
32
|
+
category: "backlog"
|
|
33
|
+
- name: "In Progress"
|
|
34
|
+
id: "10001"
|
|
35
|
+
category: "in_progress"
|
|
36
|
+
- name: "In Review"
|
|
37
|
+
id: "10002"
|
|
38
|
+
category: "review"
|
|
39
|
+
- name: "QA"
|
|
40
|
+
id: "10003"
|
|
41
|
+
category: "qa"
|
|
42
|
+
- name: "Done"
|
|
43
|
+
id: "10004"
|
|
44
|
+
category: "done"
|
|
45
|
+
|
|
46
|
+
# Status workflow validated
|
|
47
|
+
workflow_valid: true
|
|
48
|
+
missing_statuses: []
|
|
49
|
+
|
|
50
|
+
# Active sprints
|
|
51
|
+
sprints:
|
|
52
|
+
- id: "{{sprint_id}}"
|
|
53
|
+
name: "Sprint {{sprint_number}}"
|
|
54
|
+
state: "active" # active | future | closed
|
|
55
|
+
start_date: "{{start_date}}"
|
|
56
|
+
end_date: "{{end_date}}"
|
|
57
|
+
goal: "{{sprint_goal}}"
|
|
58
|
+
|
|
59
|
+
# Epics in project
|
|
60
|
+
epics:
|
|
61
|
+
- key: "PROJ-E01"
|
|
62
|
+
summary: "{{epic_title}}"
|
|
63
|
+
status: "In Progress"
|
|
64
|
+
url: "{{jira_base_url}}/browse/PROJ-E01"
|
|
65
|
+
local_doc: "docs/sprint-artifacts/sprint-1/epic-01.md"
|
|
66
|
+
stories:
|
|
67
|
+
- key: "PROJ-S01"
|
|
68
|
+
summary: "{{story_title}}"
|
|
69
|
+
status: "In Progress"
|
|
70
|
+
url: "{{jira_base_url}}/browse/PROJ-S01"
|
|
71
|
+
local_doc: "docs/sprint-artifacts/sprint-1/stories/story-01.md"
|
|
72
|
+
branch: "feature/PROJ-S01-story-title"
|
|
73
|
+
tasks:
|
|
74
|
+
- key: "PROJ-T01"
|
|
75
|
+
summary: "{{task_title}}"
|
|
76
|
+
status: "Done"
|
|
77
|
+
assignee: "{{user}}"
|
|
78
|
+
|
|
79
|
+
# Quick lookup maps (for fast access)
|
|
80
|
+
lookup:
|
|
81
|
+
by_key:
|
|
82
|
+
"PROJ-E01":
|
|
83
|
+
type: "epic"
|
|
84
|
+
index: 0
|
|
85
|
+
"PROJ-S01":
|
|
86
|
+
type: "story"
|
|
87
|
+
epic_key: "PROJ-E01"
|
|
88
|
+
index: 0
|
|
89
|
+
by_local_doc:
|
|
90
|
+
"docs/sprint-artifacts/sprint-1/epic-01.md": "PROJ-E01"
|
|
91
|
+
"docs/sprint-artifacts/sprint-1/stories/story-01.md": "PROJ-S01"
|
|
92
|
+
by_status:
|
|
93
|
+
backlog: []
|
|
94
|
+
in_progress: ["PROJ-S01"]
|
|
95
|
+
review: []
|
|
96
|
+
qa: []
|
|
97
|
+
done: ["PROJ-T01"]
|
|
98
|
+
|
|
99
|
+
# Pending sync queue (local changes not yet synced)
|
|
100
|
+
pending_sync:
|
|
101
|
+
create: []
|
|
102
|
+
update: []
|
|
103
|
+
transition: []
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# [Module Name]
|
|
2
|
+
|
|
3
|
+
**Domain:** [Bounded Context]
|
|
4
|
+
**Owner:** [Team/Person]
|
|
5
|
+
**Status:** Planning | Development | Production
|
|
6
|
+
**Last Updated:** YYYY-MM-DD
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
[2-3 sentences: What this module does and why it exists]
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Quick Links
|
|
17
|
+
|
|
18
|
+
| Document | Description |
|
|
19
|
+
|----------|-------------|
|
|
20
|
+
| [Architecture](./architecture.md) | Module design and structure |
|
|
21
|
+
| [PRD](./prd.md) | Module requirements |
|
|
22
|
+
| [Data Model](./data-model.md) | Database schema |
|
|
23
|
+
| [Domain](./domain.md) | Domain model (DDD) |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Subdirectories
|
|
28
|
+
|
|
29
|
+
| Directory | Contents | Status |
|
|
30
|
+
|-----------|----------|--------|
|
|
31
|
+
| [api/](./api/) | OpenAPI specs | Active |
|
|
32
|
+
| [events/](./events/) | Event schemas | Active |
|
|
33
|
+
| [scenarios/](./scenarios/) | Use case scenarios | Active |
|
|
34
|
+
| [flows/](./flows/) | Flow diagrams | Active |
|
|
35
|
+
| [integrations/](./integrations/) | External integrations | - |
|
|
36
|
+
| [decisions/](./decisions/) | Module ADRs | - |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Key Responsibilities
|
|
41
|
+
|
|
42
|
+
- [Responsibility 1]
|
|
43
|
+
- [Responsibility 2]
|
|
44
|
+
- [Responsibility 3]
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Dependencies
|
|
49
|
+
|
|
50
|
+
### Depends On
|
|
51
|
+
|
|
52
|
+
| Module | Type | Purpose |
|
|
53
|
+
|--------|------|---------|
|
|
54
|
+
| [Module A](../module-a/) | Sync (HTTP) | Get user data |
|
|
55
|
+
| [Module B](../module-b/) | Async (Event) | React to events |
|
|
56
|
+
|
|
57
|
+
### Depended By
|
|
58
|
+
|
|
59
|
+
| Module | Type | Purpose |
|
|
60
|
+
|--------|------|---------|
|
|
61
|
+
| [Module C](../module-c/) | Sync (HTTP) | Fetch our data |
|
|
62
|
+
| [Module D](../module-d/) | Async (Event) | Consumes our events |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Key Metrics
|
|
67
|
+
|
|
68
|
+
| Metric | Target | Current |
|
|
69
|
+
|--------|--------|---------|
|
|
70
|
+
| Latency (p95) | < 100ms | - |
|
|
71
|
+
| Availability | 99.9% | - |
|
|
72
|
+
| Error Rate | < 0.1% | - |
|
|
73
|
+
| Throughput | > 500 RPS | - |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## API Summary
|
|
78
|
+
|
|
79
|
+
| Method | Endpoint | Description |
|
|
80
|
+
|--------|----------|-------------|
|
|
81
|
+
| POST | `/api/v1/[resource]` | Create |
|
|
82
|
+
| GET | `/api/v1/[resource]/{id}` | Get by ID |
|
|
83
|
+
| PUT | `/api/v1/[resource]/{id}` | Update |
|
|
84
|
+
| GET | `/api/v1/[resource]` | List |
|
|
85
|
+
|
|
86
|
+
Full API: [api/](./api/)
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Events Summary
|
|
91
|
+
|
|
92
|
+
### Published
|
|
93
|
+
|
|
94
|
+
| Event | Topic | Description |
|
|
95
|
+
|-------|-------|-------------|
|
|
96
|
+
| [Event]Created | [topic] | When created |
|
|
97
|
+
| [Event]Updated | [topic] | When updated |
|
|
98
|
+
|
|
99
|
+
### Consumed
|
|
100
|
+
|
|
101
|
+
| Event | Topic | Source |
|
|
102
|
+
|-------|-------|--------|
|
|
103
|
+
| [Other]Created | [topic] | [Module] |
|
|
104
|
+
|
|
105
|
+
Full events: [events/](./events/)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Quick Start
|
|
110
|
+
|
|
111
|
+
### Local Development
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Prerequisites
|
|
115
|
+
# - Go 1.21+
|
|
116
|
+
# - PostgreSQL 15+
|
|
117
|
+
# - Docker
|
|
118
|
+
|
|
119
|
+
# Run locally
|
|
120
|
+
cd src/services/[module]
|
|
121
|
+
go run cmd/api/main.go
|
|
122
|
+
|
|
123
|
+
# Run tests
|
|
124
|
+
go test ./...
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Environment Variables
|
|
128
|
+
|
|
129
|
+
| Variable | Description | Required |
|
|
130
|
+
|----------|-------------|----------|
|
|
131
|
+
| `DATABASE_URL` | PostgreSQL connection | Yes |
|
|
132
|
+
| `KAFKA_BROKERS` | Kafka broker list | Yes |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Related
|
|
137
|
+
|
|
138
|
+
- [System Architecture](../../architecture.md)
|
|
139
|
+
- [Database Overview](../../architecture-db.md)
|