Orçamento de tempo do roteiro
Um dia de 14 horas com 2 de deslocamento e 2 de descanso deixa 10 horas para atividades, então um museu, um mercado, um parque e uma caminhada antes do jantar que somam 7,5 horas cabem com 2,5 de folga. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Horas disponíveis
- 14
- Horas de deslocamento
- 2
- Horas de descanso
- 2
- Horas reservadas
- 4
- Tempo restante para atividades
- 10
- Horas de atividades planejadas
- 7,5
- Horas de atividades recomendadas
- 7,5
Os dias de viagem falham quando o mapa parece generoso e o relógio não é. Um museu, um mercado, um mirante e uma reserva para o jantar podem ser razoáveis sozinhos e depois desabar quando se somam o tempo a pé, as baldeações de metrô e uma refeição de verdade. Esta calculadora de orçamento de tempo do roteiro aceita um orçamento diário de horas positivo, horas de trânsito reservadas, horas de descanso reservadas e uma lista ordenada de atividades nomeadas com horas planejadas, e informa se aquele dia ainda cabe. Trânsito e descanso são tratados como custos fixos de primeira ordem; as horas que sobram viram o envelope das atividades. Se as paradas planejadas transbordam esse envelope, o motor escala cada atividade pelo mesmo fator para que o plano recomendado continue somando a janela restante.
Primeiro o tempo fixo, depois os passeios
Um dia de viagem dá errado quando o mapa parece generoso e o relógio não. Um museu, um mercado, um mirante e um jantar reservado podem ser razoáveis sozinhos e não caber juntos quando entram as caminhadas, as baldeações de metrô e uma refeição de verdade. Por isso a calculadora reserva primeiro as horas de deslocamento e de descanso, que não são opcionais, e só o que sobra fica para as atividades. Com 14 horas disponíveis, 2 de deslocamento e 2 de descanso, a janela para passeios é de 10 horas. Se as paradas planejadas somam menos, você vê a folga; se somam mais, vê o excesso.
Quando o dia não cabe
Se as atividades estouram a janela, a ferramenta não aceita o excesso em silêncio: reduz todas as paradas pelo mesmo fator para que o plano recomendado some exatamente o tempo restante, mantendo a proporção entre elas. Ela ajuda num fim de semana em uma cidade, no roteiro de um grupo de ônibus ou num encontro de empresa com oficinas, almoço e traslado do hotel. O erro clássico é empilhar seis atrações num dia que já gastou três horas em trens. Olhe o excesso antes de comprar ingressos com horário marcado: costuma ser melhor tirar uma parada do que encurtar todas.
Casos de uso
Planejamento de um dia de city break
Reserve primeiro as horas de caminhada e de refeição e veja se museu, mercado e mirante ainda cabem na janela de passeio que resta.
Rascunhos de horário para tours e grupos
Escale um dia de ônibus sobrecarregado para que os horários impressos de cada parada fiquem dentro do mesmo envelope de trânsito e descanso que o guia realmente tem.
Perguntas frequentes
Como o orçamento diário de tempo do roteiro é alocado?
Trânsito e descanso são reservados primeiro. As horas restantes são o envelope das atividades. Se as paradas cabem, elas mantêm as horas e a folga é o que sobra. Se transbordam, cada atividade é escalada por remaining / soma planejada.
Um dia que transborda falha, ou devolve um plano?
Tem sucesso com status overflow, fits falso e horas recomendadas escaladas ao envelope restante.
O que significa um status tight?
Trate-o como um dia cheio, com pouco espaço para sair tarde de um museu ou perder um bonde.
O que conto como deslocamento e o que conto como descanso?
Deslocamento inclui caminhadas entre paradas, metrô, táxis e o tempo perdido em filas de ingresso. Descanso inclui refeições, um café sentado, o check-in no hotel e as pausas de que você realmente precisa. Os dois saem do dia antes de qualquer atividade.
Ao encolher um dia lotado, minhas prioridades são mantidas?
As proporções são mantidas: todas as atividades diminuem pelo mesmo fator. Uma catedral de quatro horas ao lado de um museu de duas continua com o dobro do tempo, então tire você mesmo uma parada se uma delas importar mais.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/travel/itinerary-time-budget \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"available_hours":14,"transit_hours":2,"rest_hours":2,"activities":[{"name":"Museum","hours":3},{"name":"Market","hours":1.5},{"name":"Park","hours":2},{"name":"Dinner walk","hours":1}]}'const res = await fetch("https://api.kit.forhosting.com/travel/itinerary-time-budget", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"available_hours": 14,
"transit_hours": 2,
"rest_hours": 2,
"activities": [
{
"name": "Museum",
"hours": 3
},
{
"name": "Market",
"hours": 1.5
},
{
"name": "Park",
"hours": 2
},
{
"name": "Dinner walk",
"hours": 1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/itinerary-time-budget",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"available_hours": 14,
"transit_hours": 2,
"rest_hours": 2,
"activities": [
{
"name": "Museum",
"hours": 3
},
{
"name": "Market",
"hours": 1.5
},
{
"name": "Park",
"hours": 2
},
{
"name": "Dinner walk",
"hours": 1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/itinerary-time-budget", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"available_hours":14,"transit_hours":2,"rest_hours":2,"activities":[{"name":"Museum","hours":3},{"name":"Market","hours":1.5},{"name":"Park","hours":2},{"name":"Dinner walk","hours":1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"available_hours":14,"transit_hours":2,"rest_hours":2,"activities":[{"name":"Museum","hours":3},{"name":"Market","hours":1.5},{"name":"Park","hours":2},{"name":"Dinner walk","hours":1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/itinerary-time-budget", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"available_hours": 14,
"transit_hours": 2,
"rest_hours": 2,
"activities": [
{
"name": "Museum",
"hours": 3
},
{
"name": "Market",
"hours": 1.5
},
{
"name": "Park",
"hours": 2
},
{
"name": "Dinner walk",
"hours": 1
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.itinerary_time_budget",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Folga, transbordo, utilização e um indicador fits voltam com as horas recomendadas por linha, para que um planejador humano e um cliente API compartilhem uma só aritmética. Orçamentos nulos ou negativos, trânsito ou descanso negativos, e um par reservado que já ultrapassa o dia falham com invalid_input em vez de inventar um horário.
Como o trânsito e o descanso reservados encolhem o envelope das atividades
Um orçamento de tempo de roteiro trata a janela de vigília como um envelope rígido, não como uma lista de desejos. Trânsito e descanso são subtraídos primeiro porque, num dia realista, não são opcionais. Cada atividade guarda um nome e uma cifra de horas planejadas para que um bloco do Louvre, um mercado e um passeio fluvial continuem distintos. Horas planejadas iguais continuam iguais depois da escala; uma catedral de quatro horas ao lado de um museu de duas conserva a razão dois para um. A poeira de ponto flutuante é absorvida na última atividade planejada positiva para que as horas recomendadas somem exatamente o poço restante num dia de transbordo. O campo available_hours é esse envelope: catorze horas do café da manhã ao hotel, ou dez horas entre uma saída tarde e uma reserva para jantar. Caminhar entre museus, um pulo de metrô, um táxi até o mirante e os minutos perdidos na bilheteria ficam em transit_hours. Refeições, um café sentado, o check-in do hotel e a pausa de que o viajante realmente precisa ficam em rest_hours. A soma é reserved_hours. O que resta é remaining_for_activities, o único poço que as paradas planejadas podem gastar. Quando a soma planejada cabe no poço restante, as horas recomendadas igualam as planejadas e slack_hours é o remanescente sem uso. Quando a soma planejada é maior, cada atividade é escalada por remaining_for_activities dividido pela soma planejada para que o dia recomendado ainda feche. A utilização pode passar de cem por cento quando committed_hours conforme o plano estoura o orçamento; esse é o sinal para cortar, não para fingir que o relógio estica.
Contrato de entrada, forma da resposta e erros
O campo activities é um array não vazio de objetos, cada um com um name não vazio e um hours finito não negativo, no máximo cinquenta linhas neste caminho parse gratuito. Ligue o formulário gratuito do navegador ao planejamento humano e chame o mesmo contrato de um construtor de viagens quando a automação precisar dos mesmos números. Envie por POST um corpo JSON com quatro campos obrigatórios. O campo available_hours é um número finito estritamente maior que zero e no máximo cento e sessenta e oito, o bastante para um dia longo ou um envelope curto de vários dias. Os campos transit_hours e rest_hours são finitos e não negativos, cada um também limitado a cento e sessenta e oito. A soma não pode ultrapassar available_hours; um par reservado que já come o orçamento inteiro e mais falha com invalid_input porque não resta um envelope honesto de atividades para alocar. Campos ausentes, listas vazias, linhas que não são objeto, nomes em branco, números não finitos, horas negativas e um orçamento disponível nulo ou negativo falham com invalid_input e não são cobrados. Em sucesso o corpo ecoa as três entradas de horas, informa reserved_hours, remaining_for_activities, planned_activity_hours, recommended_activity_hours, committed_hours, slack_hours, overflow_hours, um indicador booleano fits, um status de fits, tight ou overflow, utilization_percent, scale_factor e activity_count. Cada linha de atividade traz index, name, planned_hours, recommended_hours, share_of_activities e percent_of_day. Method é reserve_then_scale. Formula reafirma que remaining é available menos transit menos rest, e que recommended_i é planned_i vezes o mínimo de um e remaining sobre a soma planejada. Um dia tight é um dia que cabe cuja folga é no máximo dez por cento de available_hours. Chamadas API bem-sucedidas usam o preço base publicado US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde um orçamento diário de tempo do roteiro vale a pena
O caminho de transbordo devolve uma recomendação escalada em vez de um overbook silencioso, que é o que um horário voltado ao hóspede precisa antes de imprimir um quadro. Quem monta um circuito de mochilão pega o erro clássico de empilhar seis atrações num dia que já gastou três horas em trens. Emparelhe este alocador com ajudantes de tempo a pé ou de distância com várias paradas quando você já souber os minutos entre os pinos e só precisar que o dia some. Quem viaja a lazer pode colar um sábado rascunho, ler de um relance a folga ou o transbordo e largar uma parada antes de reservar ingressos com horário que nunca alcançará. Operadoras de turismo usam uma calculadora de orçamento de tempo do roteiro para que um modelo de city break sobreviva a uma janela de luz de inverno mais curta: mantenha as mesmas paradas planejadas, aumente transit_hours quando o grupo andar mais devagar e execute de novo. Quem organiza retiros corporativos reserva almoço e o traslado do hotel como rest e transit e vê se três oficinas ainda cabem num dia de dez horas. Como a implementação é parse de nível A pura, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída.
Casos de integração
Automação de construtores de viagem e guias
Chame o mesmo contrato de reservar e depois escalar a partir de um widget de reserva para que o plano publicado e a API nunca divirjam na folga.
Perguntas técnicas
E se trânsito mais descanso já ultrapassam o dia?
A tarefa falha com invalid_input. O trânsito e o descanso reservados não podem ser maiores que available_hours, porque não resta um envelope honesto de atividades para alocar.
Quanto custa a calculadora de orçamento de tempo do roteiro?
A ferramenta do navegador é gratuita. Pedidos API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.