원클릭으로
business-rules
All business rules, state machines, scoring, regulations, and domain constraints for SE104_VLEAGUE
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
All business rules, state machines, scoring, regulations, and domain constraints for SE104_VLEAGUE
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | Business Rules |
| description | All business rules, state machines, scoring, regulations, and domain constraints for SE104_VLEAGUE |
Stored in the regulations table, keyed by seasonId. Managed via RegulationModule.
| Key | Default | Type | Purpose |
|---|---|---|---|
MIN_AGE | 16 | number | Minimum player age |
MAX_AGE | 40 | number | Maximum player age |
MIN_ROSTER | 15 | number | Minimum team roster size |
MAX_ROSTER | 22 | number | Maximum team roster size |
MAX_FOREIGN_PLAYERS | 3 | number | Foreign player limit per team |
WIN_POINTS | 3 | number | Points awarded for a win |
DRAW_POINTS | 1 | number | Points awarded for a draw |
LOSS_POINTS | 0 | number | Points awarded for a loss |
MAX_GOAL_TIME | 96 | number | Maximum allowed goal minute |
Cross-module helper exported from RegulationModule:
regulationHelper.getNumericValue(seasonId, 'MAX_ROSTER', 22);
// Lookup chain: DB → defaults → hardcoded fallback
Used by: RegistrationModule (age), RosterModule (roster/foreign limits), MatchModule (goal time).
| Result | Points |
|---|---|
| Win | 3 (configurable via WIN_POINTS) |
| Draw | 1 (configurable via DRAW_POINTS) |
| Loss | 0 (configurable via LOSS_POINTS) |
Only APPROVED season teams are shown in standings. Non-approved teams excluded.
DRAFT → PUBLISHED → LOCKED → FINISHED
DRAFT → POSTPONED
PUBLISHED → POSTPONED
POSTPONED → DRAFT
Validation rules:
UPCOMING → IN_PROGRESS → COMPLETED
IN_PROGRESS at a timeREGISTERED → APPROVED
REGISTERED → REJECTED
REGISTERED → WITHDRAWN
| Type | Scoring | Description |
|---|---|---|
GOAL | +1 for scoring team | Regular goal |
OWN_GOAL | +1 for opposing team | Own goal — points awarded to OTHER team |
PENALTY | +1 for scoring team | Penalty goal (counts as regular goal for scoring) |
PENALTY_MISS | No score change | Missed/saved penalty |
YELLOW_CARD | — | Yellow card |
RED_CARD | — | Red card |
SUBSTITUTION | — | Player substitution (requires relatedPlayerId for sub-in player) |
When events are added or removed:
homeScore / awayScore are automatically recalculated from eventsminute must not exceed MAX_GOAL_TIME regulation (default: 96)| Rule | Source | Default |
|---|---|---|
| Minimum age | MIN_AGE regulation | 16 |
| Maximum age | MAX_AGE regulation | 40 |
| Max roster size | MAX_ROSTER regulation | 22 |
| Min roster size | MIN_ROSTER regulation | 15 |
| Foreign player limit | MAX_FOREIGN_PLAYERS regulation | 3 |
| Jersey number uniqueness | Enforced per active team roster | — |
| Exclusive team membership | Player can only belong to one team at a time | — |
| Soft removal | leftAt timestamp set (not deleted) | — |
POST /api/players/import accepts CSV file (max 2MB)teamId for automatic roster assignment| Resource | ADMIN | TEAM_MANAGER | REFEREE | SUPERVISOR | PUBLIC |
|---|---|---|---|---|---|
| Teams (CRUD) | ✅ | Read only | Read only | Read only | Read only |
| Players (CRUD) | ✅ | Create/Edit own | Read only | Read only | Read only |
| Stadiums | ✅ | Read only | Read only | Read only | Read only |
| Seasons | ✅ | Read only | Read only | Read only | Read only |
| Schedule | ✅ Generate/Publish | Read only | Read only | Read only | Read only |
| Matches (edit) | ✅ | Read only | Add/Remove events | Read only | Read only |
| Match status | ✅ | — | — | — | — |
| Roster | ✅ | ✅ Own team | Read only | Read only | Read only |
| Regulations | ✅ | Read only | Read only | Read only | Read only |
| Users | ✅ | — | — | — | — |
| Standings | Read | Read | Read | Read | Read |
| Upload | ✅ | ✅ | — | — | — |
GOAL + PENALTY events per playerrelatedPlayerId), cards| Password | Role | |
|---|---|---|
admin@vleague.local | Admin@123 | ADMIN |
manager@vleague.local | Manager@123 | TEAM_MANAGER |
referee@vleague.local | Referee@123 | REFEREE |
supervisor@vleague.local | Supervisor@123 | SUPERVISOR |
user@vleague.local | User@123 | PUBLIC |
Swagger/OpenAPI setup and documentation patterns for SE104_VLEAGUE
Complete guide for the SE104_VLEAGUE React frontend — pages, services, components, auth flow, i18n, and patterns
Complete guide for testing patterns, test structure, CI pipeline, and development workflow for SE104_VLEAGUE
Complete guide for the SE104_VLEAGUE NestJS backend — modules, endpoints, Prisma schema, guards, interceptors, and patterns
JWT auth, OAuth, OTP verification, session management, RBAC for SE104_VLEAGUE
Prisma schema, migrations, seeding, and database operations for SE104_VLEAGUE