refactor(ui): renomear "Pagador/Pagadores" para "Pessoa/Pessoas" na interface

Todas as strings visíveis ao usuário (labels, títulos, toasts, mensagens
de erro, cabeçalhos de tabela, exportações) foram atualizadas. Acordos
de gênero em português corrigidos. Código, rotas (/payers) e schema do
banco (pagadores) permanecem inalterados — divergência intencional
documentada em CLAUDE.md e CHANGELOG.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-04-20 18:29:55 +00:00
parent 2f68bcf039
commit 0bc3f06b77
42 changed files with 101 additions and 99 deletions

View File

@@ -38,7 +38,7 @@ const CARDS = [
helpTitle: "Como calculamos receitas",
helpLines: [
"Somamos os lançamentos do tipo Receita no período selecionado.",
"Consideramos lançamentos efetivados e não efetivados do pagador principal (admin).",
"Consideramos lançamentos efetivados e não efetivados da pessoa principal (admin).",
"Movimentações de contas marcadas como não consideradas no saldo total ficam fora deste card.",
"Não entram transferências internas nem lançamentos automáticos de fatura.",
"Saldo inicial também fica fora quando a conta está marcada para desconsiderá-lo das receitas.",
@@ -54,7 +54,7 @@ const CARDS = [
helpTitle: "Como calculamos despesas",
helpLines: [
"Somamos os lançamentos do tipo Despesa no período selecionado.",
"Consideramos lançamentos efetivados e não efetivados do pagador principal (admin).",
"Consideramos lançamentos efetivados e não efetivados da pessoa principal (admin).",
"Movimentações de contas marcadas como não consideradas no saldo total ficam fora deste card.",
"Não entram transferências internas nem lançamentos automáticos de fatura.",
"O valor mostrado é a saída efetiva do período, sempre em número positivo no card.",

View File

@@ -86,7 +86,7 @@ export function InvoiceListItem({ invoice, onPay }: InvoiceListItemProps) {
<HoverCardTrigger asChild>{linkNode}</HoverCardTrigger>
<HoverCardContent align="start" className="w-80 space-y-3">
<p className="text-xs text-muted-foreground">
Distribuição por pagador
Distribuição por pessoa
</p>
<ul className="space-y-2">
{breakdown.map((share, index) => (

View File

@@ -28,8 +28,8 @@ export function PayersWidget({ payers }: PayersWidgetProps) {
{payers.length === 0 ? (
<WidgetEmptyState
icon={<RiGroupLine className="size-6 text-muted-foreground" />}
title="Nenhum pagador para o período"
description="Quando houver despesas associadas a pagadores, eles aparecerão aqui."
title="Nenhuma pessoa para o período"
description="Quando houver despesas associadas a pessoas, elas aparecerão aqui."
/>
) : (
<div className="flex flex-col">

View File

@@ -71,7 +71,7 @@ export async function fetchInstallmentAnalysis(
return { installmentGroups: [], totalPendingInstallments: 0 };
}
// 1. Buscar todos os lançamentos parcelados não antecipados do pagador admin
// 1. Buscar todos os lançamentos parcelados não antecipados da pessoa admin
const installmentRows = await db
.select({
id: transactions.id,

View File

@@ -244,7 +244,7 @@ export async function fetchDashboardInvoices(
}
const payerId = row.payerId ?? null;
const pagadorName = row.pagadorName?.trim() || "Sem pagador";
const pagadorName = row.pagadorName?.trim() || "Sem pessoa";
const pagadorAvatar = row.pagadorAvatar ?? null;
const payerKey = payerId ?? "__without-payer__";
const key = `${row.cardId}:${payerKey}`;

View File

@@ -251,8 +251,8 @@ export const widgetsConfig: WidgetConfig[] = [
},
{
id: "pagadores",
title: "Pagadores",
subtitle: "Despesas por pagador no período",
title: "Pessoas",
subtitle: "Despesas por pessoa no período",
icon: <RiGroupLine className="size-4" />,
component: ({ data }) => (
<PayersWidget payers={data.pagadoresSnapshot.payers} />