Repository navigation
Contratos
GitHub Copilot edited this page Aug 15, 2026
·
1 revision
← Arquitetura | Regras de Negócio →
// src/react/index.js
// Atualmente exporta objeto vazio (entrypoint reservado após remoção do Vue).
// Consuma diretamente os caminhos de src/ abaixo.| 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 |
— |
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',
})| Componente | Caminho |
|---|---|
PeopleAvatar |
src/react/components/PeopleAvatar |
AddCompanyModal |
src/react/components/AddCompanyModal |
PeopleAddressesPanel |
src/react/components/address/PeopleAddressesPanel |
// src/react/router/routes.js
[
{
name: 'ProfilePage',
component: Profile,
options: {
headerShown: true,
showBottomToolBar: true,
title: () => global.t?.t('people', 'title', 'profile'),
},
}
]| 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.
| 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 |
| 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 } |
| 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 |
| 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 |
{
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
}| 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 |