Establish product language contract, user journey with dual growth engines, ERD/OpenAPI/Go boundaries, and H5 routes (/profile, /portrait, /relation, /membership) before P1 implementation. Co-authored-by: Cursor <cursoragent@cursor.com>
1.4 KiB
1.4 KiB
Architecture
Go 包边界(冻结):architecture/go-services.md
Domain / ERD:domain/domain-map.md · domain/erd.md
Allowed call graph
UI (user-h5 / mini-program)
→ packages/sdk
→ API Handler
→ Service
→ Repository
→ Database
Forbidden
- Handler → Database (skip Service/Repository)
- UI → Database
- UI direct
fetchto raw URLs (must use@yuxingu/sdkorsrc/apithin wrapper) - Service importing Handler
- Circular package imports
- Giant
utils/commondump packages
Monorepo map
| Path | Role |
|---|---|
apps/api |
Only backend |
apps/user-h5 |
Primary client (Vue3+TS) |
apps/mini-program |
Scaffold only until tasked |
apps/admin-h5 |
Deferred |
packages/sdk |
Multi-platform HTTP client |
packages/types |
Shared TS types |
packages/utils |
Pure helpers |
packages/ui |
Design tokens |
Root HTML / server.py |
Legacy — do not extend |
Feature flow (mandatory when adding a feature)
API route + handler
→ service
→ repository (if persistence)
→ migration (if schema change)
→ SDK / types update
→ UI page or component
→ test for money/scoring/auth paths
→ OpenAPI touch if public API changed
→ self-review
Missing migration or skipping service layer = incomplete.