Spostamenti di giorni lavorativi con festività
Sposta una data da meno 366 a 366 giorni lavorativi, saltando fine settimana e fino a 1000 festività.
from datetime import date, timedelta
def working_day_shift(start, days, holidays):
if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
raise ValueError("days.input")
if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
raise ValueError("days.holidays")
remaining, step = abs(days), 1 if days >= 0 else -1
for _ in range(7*(remaining+len(holidays))+7):
if remaining == 0:
return start
try:
start += timedelta(days=step)
except OverflowError as error:
raise ValueError("days.range") from error
if start.weekday() < 5 and start not in holidays:
remaining -= 1
raise RuntimeError("days.steps")- Progetto
- Prova zero, spostamenti inversi e limiti del calendario, rifiutando date invalide senza cambiare le festività.
- Controlla prima di applicare
- Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
- Modelli
- Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
from datetime import date, timedelta
def working_day_shift(start, days, holidays):
if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
raise ValueError("days.input")
if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
raise ValueError("days.holidays")
remaining, step = abs(days), 1 if days >= 0 else -1
for _ in range(7*(remaining+len(holidays))+7):
if remaining == 0:
return start
try:
start += timedelta(days=step)
except OverflowError as error:
raise ValueError("days.range") from error
if start.weekday() < 5 and start not in holidays:
remaining -= 1
raise RuntimeError("days.steps")Esplicita le regole di pianificazione prima di modificare il codice delle date
Il codice di pianificazione mescola spesso regole aziendali e normale aritmetica del calendario. DayThistle è uno spazio di lavoro Windows con IA dove separare queste questioni mentre rivedi il progetto. Parti dalla data prodotta dall'applicazione, dalla data attesa e dalle regole che motivano l'aspettativa. Chiedi al modello collegato di esaminare il codice pertinente prima di suggerire una correzione.
Per esempio, puoi richiedere una revisione di una funzione per scadenze che salta fine settimana e un insieme di festività fornito. Spiega se il giorno iniziale conta, come funzionano gli spostamenti negativi e chi fornisce i dati sulle festività. Richiedi una proposta che preservi tali decisioni nel chiamante oltre che nella funzione, anziché presumere una definizione universale di giorno lavorativo.
Verifica le modifiche proposte usando casi derivati da queste regole. Includi un attraversamento del fine settimana, una festività adiacente a un fine settimana, uno spostamento zero e uno all'indietro. Esegui i test del progetto ed esamina il comportamento ai limiti per date non supportate. Una scadenza apparentemente corretta in un esempio non dimostra che tutti i chiamanti usino la stessa regola.
DayThistle si collega a endpoint supportati compatibili con OpenAI o Anthropic. Puoi scegliere un modello IA senza censura offerto dal servizio; strumenti disponibili e contesto restano dipendenti dal server. Mantieni le regole scritte nell'attività, affinché il modello assista l'implementazione senza decidere silenziosamente come la tua organizzazione pianifica il lavoro.
Domande alla base di una modifica ai giorni lavorativi
DayThistle fornisce un calendario delle festività?
L'attività di esempio usa dati sulle festività forniti dall'applicazione. Identificane sorgente e copertura attesa nella richiesta. Non presumere che aprire lo spazio di lavoro fornisca festività regionali aggiornate o decida quali ricorrenze influiscano sulle scadenze.
Il giorno iniziale deve contare nello spostamento?
Specifica esplicitamente la regola e includi un caso in cui l'inizio cade in un giorno lavorativo. Regole diverse producono risposte diverse. Chiedi all'assistente di preservare la convenzione scelta sia andando avanti sia tornando indietro.
Come distinguo dati errati sulle festività da un difetto del codice?
Conserva l'insieme esatto delle festività con il caso problematico ed esaminane il contenuto prima di cambiare il calcolo. Confronta il risultato con le regole scritte. Una festività mancante e una condizione di salto errata richiedono correzioni diverse.
E se il ciclo proposto non ha una chiara condizione di arresto?
Chiedi come l'implementazione limita gli spostamenti supportati e gestisce il superamento dei limiti del calendario. Rivedi il comportamento prima di accettarla. Esegui test ai limiti insieme alle date ordinarie, affinché la correzione di una scadenza non introduca un calcolo senza limiti.
DayThistle · Aggiornato 2026-10-25