Status: Approved · v2 · SPEC-DOMAIN-BASE-001
Tipos base e enums
Vocabulário técnico transversal do RaizFC.
Princípios
- IDs são strings opacas e nunca números sequenciais expostos.
- Datas trafegam como ISO-8601 strings.
- Dinheiro usa inteiros em centavos e moeda BRL.
- Tipos técnicos usam inglês; labels de UI usam português e vocabulário regional.
- Status com ciclo de vida não são representados por booleanos.
Tipos base
export type ID = string;
export type ISODateString = string;
export type Slug = string;
export type Currency = "BRL";
export type MoneyAmount = { amount: number; currency: Currency };
export type Percentage = number;
export type AuditMetadata = { createdAt: ISODateString; updatedAt: ISODateString; createdBy?: ID; updatedBy?: ID };
Entidades
EntityType: user, team, torcida, player, championship, match, field, service, district, neighborhood, sponsor, wallet.
ManageableEntityType: team, torcida, championship, field, service. Jogador não é gerenciável por múltiplos gestores no MVP.
WalletOwnerType: team | torcida.
Constantes financeiras
| Constante | Valor | Regra |
|---|---|---|
| PIX_EXPIRATION_MINUTES | 30 | Prazo padrão para cobrança Pix |
| CREDIT_EXPIRATION_DAYS | 90 | Validade por lote |
| SPONSOR_LIMIT_PER_ENTITY | 3 | Máximo simultâneo |
| SPONSOR_PLATFORM_FEE_PERCENT | 20 | Taxa plataforma |
| SPONSOR_ENTITY_CREDIT_PERCENT | 80 | Crédito entidade |
| DONATION_PLATFORM_FEE_PERCENT | 5 | Taxa apoio |
| DONATION_ENTITY_CREDIT_PERCENT | 95 | Crédito entidade |
| PUBLIC_SUPPORTERS_LIMIT | 10 | Apoiadores públicos sem valor |