docs(agenda): zh-CN, comentarios do corte do dia e fragmento da #1762

- zh-CN: a chave nova apontava para o texto antigo (so cliente ou dia);
  o valor agora fala do periodo de ate 62 dias.
- O docblock do GET e o de useAgendamentos diziam que `dia` corta em UTC;
  desde este PR corta no fuso da organizacao (UTC so sem fuso legivel).
- Fragmento .changes/ (capacidade_nova) com o credito do contribuidor.

Refs: #1762

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
melgarafael
2026-09-26 19:28:32 -03:00
co-authored by Claude Opus 5.5
parent ad15be5552
commit 8f1b23b712
4 changed files with 22 additions and 11 deletions
@@ -0,0 +1,11 @@
---
impacto: capacidade_nova
secao: adicionado
titulo: A ferramenta de agenda lê um período inteiro, no fuso da empresa e em páginas
---
A ferramenta `crm_list_appointments` passa a aceitar `de`/`ate` (até 62 dias, a agenda inteira da organização) e paginação por `depois_de`/`proximo`, e cada compromisso traz o nome do contato e do atendente, o tipo, o local e os negócios vinculados — as chaves `contato_id`/`atendente_id` continuam na resposta. O filtro por `dia` passa a contar o dia no fuso da organização. A listagem da agenda pela API recusa com 422 um período acima de 62 dias.
Não há ação para quem opera a VPS.
Contribuição de @webtecnica (#1762).
+5 -5
View File
@@ -142,11 +142,11 @@ const cancelarSchema = z.object({
* igual para a tela e para a IA.
*
* O recorte que a grade usa é `de`+`ate`, em INSTANTES. A tela é semanal e
* mensal (seis semanas), então o filtro por `dia` não a serve — e ele tem um
* corte em UTC que, para fuso negativo, não é o dia de quem olha: medido para
* São Paulo, o "dia 12" pega três horas do dia 11 e perde as três últimas do 12.
* Mandando instante, quem chama calcula os limites no fuso de APRESENTAÇÃO e
* esta rota não precisa adivinhar em que fuso o dia foi pedido.
* mensal (seis semanas), então o filtro por `dia` não a serve — e ele corta no
* fuso da ORGANIZAÇÃO (desde a #1744; sem fuso legível, em UTC), que não é
* necessariamente o fuso de quem olha. Mandando instante, quem chama calcula os
* limites no fuso de APRESENTAÇÃO e esta rota não precisa adivinhar em que fuso
* o dia foi pedido.
*/
export async function GET(req: NextRequest): Promise<Response> {
const requestId = randomUUID();
+5 -5
View File
@@ -40,11 +40,11 @@ export interface RecorteDaGrade {
*
* ## Por que `de`/`ate` e NUNCA `dia`
*
* A rota também aceita `dia=YYYY-MM-DD`, e ele corta em **UTC**. Medido pelo
* autor enquanto escrevia: para America/Sao_Paulo, pedir o dia 12 devolve de
* 11/03 21:00 a 12/03 20:59 na parede de quem olha — três horas do dia anterior
* ENTRAM, e as três últimas do dia pedido FICAM DE FORA. Um compromisso das 22h
* some da lista do próprio dia.
* A rota também aceita `dia=YYYY-MM-DD`, e ele corta no fuso da **organização**
* (desde a #1744; sem fuso legível, em UTC). Esse não é necessariamente o fuso
* de APRESENTAÇÃO de quem olha — e, antes da #1744, o corte era em UTC: para
* America/Sao_Paulo o dia 12 pegava três horas do dia 11 e perdia as três
* últimas do 12.
*
* Mandando INSTANTE, quem calcula o começo e o fim é a tela, no fuso de
* APRESENTAÇÃO — o mesmo `AuthUser.timezone` que a página já resolve. A rota não
+1 -1
View File
@@ -5075,7 +5075,7 @@
"Lista as oportunidades de venda de um funil, com a etapa em que cada uma está e quem é o responsável por ela.": "列出某个销售漏斗中的销售商机,以及每个商机所处阶段和负责人。",
"Lista as pessoas do time e o que cada uma pode fazer aqui dentro, para o agente saber para quem passar um atendimento.": "列出团队成员及每个人在此可执行的操作,让 AI 智能体知道可将接待转给谁。",
"Lista os assuntos que já foram passados para uma pessoa resolver, com o estado de cada um, para o agente não pedir duas vezes a mesma coisa.": "列出已转给人工处理的事项及各自状态,让 AI 智能体不会重复请求同一件事。",
"Lista os compromissos com hora marcada de um cliente, de um dia ou de um período de até 62 dias, com a situação de cada um: marcado, realizado ou desmarcado.": "列出某客户或某天有具体时间的预约,以及各自状态:已预约、已完成或已取消。",
"Lista os compromissos com hora marcada de um cliente, de um dia ou de um período de até 62 dias, com a situação de cada um: marcado, realizado ou desmarcado.": "列出某客户、某天或最长 62 天内某一时段有具体时间的预约,以及各自状态:已预约、已完成或已取消。",
"Lista os textos que a empresa compartilhou com a equipe para responder as situações de sempre, com o atalho de cada um e as variáveis que cada texto usa.": "列出企业与团队共享的、用于应对常见情况的回复文本,以及各自的快捷方式和每个文本使用的变量。",
"Listar conversas": "列出对话",
"Lê as mensagens já trocadas com o cliente, para o agente responder sem pedir que ele repita o que já contou.": "读取与客户已交换的消息,让 AI 智能体无需让对方重复已说过的内容即可回复。",