Skip to content

Contratos

GitHub Copilot edited this page Aug 15, 2026 · 1 revision

Contratos e Exports

← Arquitetura | Regras de Negócio →


Entrypoint

// src/react/index.js
// Atualmente exporta objeto vazio (entrypoint reservado após remoção do Vue).
// Consuma diretamente os caminhos de src/ abaixo.

Páginas exportadas

Componente Caminho Props principais
People src/react/pages/People context, initialShowAddModal, companyScope
Profile src/react/pages/Profile — (usa store auth para identificar o usuário)
MyCompaniesPage src/react/pages/MyCompaniesPage — (wrapper de People com contexto de empresas)
PeopleDomainsPage src/react/pages/PeopleDomainsPage —
PeopleDomainDetailPage src/react/pages/PeopleDomainDetailPage —

Props de People

People({
  context?: {
    context?: string | string[],       // tipo(s) de vínculo: 'client', 'provider', ...
    contextOptions?: string[],         // alternativa a context para lista de tipos
    defaultContext?: string,           // tipo padrão selecionado
    selectedContext?: string,          // tipo forçado
    title?: string,                    // título do header
    searchPlaceholder?: string,        // placeholder global
    searchPlaceholderByType?: Record<string, string>,
    labels?: Record<string, string>,   // label customizado por tipo
    typeLabels?: Record<string, string>,
    modalTitle?: string,               // título do AddCompanyModal
    modalTitleByType?: Record<string, string>,
    filterTitle?: string,
    typeSelectorLabel?: string,
    enableExistingOwnerSelection?: boolean,
    emptyTitle?: string,
    emptySearchTitle?: string,
    emptySubtitle?: string,
  },
  initialShowAddModal?: boolean,       // abre AddCompanyModal automaticamente
  companyScope?: 'people' | 'companies',
})

Componentes exportados

Componente Caminho
PeopleAvatar src/react/components/PeopleAvatar
AddCompanyModal src/react/components/AddCompanyModal
PeopleAddressesPanel src/react/components/address/PeopleAddressesPanel

Rotas

// src/react/router/routes.js
[
  {
    name: 'ProfilePage',
    component: Profile,
    options: {
      headerShown: true,
      showBottomToolBar: true,
      title: () => global.t?.t('people', 'title', 'profile'),
    },
  }
]

Utilitários exportados

src/react/utils/peopleContext.js

Export Assinatura Descrição
buildPeopleContextConfig (context) => ContextConfig Constrói config de contexto a partir de props
normalizePeopleContextType (value) => string Normaliza tipo para minúsculo sem espaços
resolvePeopleContextLabel (type, context?) => string Resolve label legível para um tipo
resolvePeopleContextSearchPlaceholder (type, context?) => string Resolve placeholder de busca
resolvePeopleContextModalTitle (type, context?) => string Resolve título do modal

Tipos de contexto suportados: client, prospect, provider, franchisee, employee, owner, director, manager, courier, salesman, after-sales, all.

src/react/utils/peopleLinkFilters.js

Export Assinatura Descrição
ALL_PEOPLE_LINK_TYPES_KEY 'all' Constante para selecionar todos os tipos
HUMAN_COMPANY_LINK_TYPES string[] Tipos de vínculo humano: employee, owner, director, manager, salesman, after-sales, courier
normalizeEntityId (value) => string Extrai ID numérico de IRI, objeto ou string
resolvePeopleIri (value) => string Converte ID/objeto em IRI /people/{id}
buildPeopleLinkRequestParams ({ currentCompany, selectedLinkType }) => object Parâmetros de filtro por empresa/tipo
buildParentCompanyRequestParams ({ availableTypes, selectedLinkType, user }) => object Parâmetros para buscar empresas-pai do usuário

src/react/utils/peopleImage.js

Export Descrição
isCompanyPeople(people) true se peopleType === 'J'
isNaturalPeople(people) true se peopleType === 'F'
resolvePeopleDisplayName(people) alias → name → realname → username
resolvePeopleAvatarEmail(people) Primeiro e-mail válido de people.email/emails
resolvePeopleImageCandidate(people) Arquivo de mídia (logo/icon para J, avatar/photo para F)
resolvePeopleImageUrl(people, resolveImageUrl?, options?) URL resolvida via resolveFileImageUrl
resolvePeopleAvatarMeta(people, options?) { email, imageUrl, isCompany, name }

src/react/utils/profileSession.js

Export Descrição
resolveLoggedUserId(currentUser) ID numérico do usuário logado (multi-fallback: store + localStorage)
persistSessionAvatar(avatarFile) Atualiza campo avatar na sessão do localStorage

Store modules

Namespace Endpoint API Descrição
people /people Entidade principal: pessoas físicas e jurídicas
people_domains /people_domains Domínios de acesso vinculados
people_domains_api — API auxiliar de domínios
people_link — Vínculos entre pessoas e empresas
address — Endereços
documents — Documentos (CPF, CNPJ, RG, etc.)
documentsTypes — Tipos de documentos disponíveis
phones — Telefones
emails — E-mails

State canônico do store people

{
  item: {},           // pessoa selecionada
  items: null,        // lista de pessoas
  resourceEndpoint: 'people',
  isLoading: false,
  error: '',
  totalItems: 0,
  summary: {},
  messages: [],
  filters: {},
  currentCompany: {}, // empresa atual selecionada
  defaultCompany: {},
  companies: [],      // empresas do usuário
  columns: [...]      // definição de colunas da tabela
}

Colunas do store people

Campo Tipo Editável Filtro externo
id identidade não não
image file/image sim não
name texto sim não
alias texto sim não
foundationDate date-range sim não
link.linkType lista sim sim
peopleType enum F/J sim não

Clone this wiki locally