Deplasări de zile lucrătoare cu sărbători
Deplasează o dată cu minus 366 până la 366 zile lucrătoare, sărind weekendurile și până la 1000 sărbători.
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")- Proiect
- Testează zero, deplasări inverse și limite calendaristice, respinge date invalide fără a schimba sărbătorile.
- Verifică înainte de aplicare
- Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
- Modele
- Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
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")Explicitează regulile programării înainte de a modifica codul datelor
Codul de planificare amestecă adesea politica organizațională cu aritmetica obișnuită a calendarului. DayThistle este un spațiu de programare cu IA pentru Windows în care poți separa aceste întrebări când revizuiești proiectul. Începe cu data produsă de aplicație, data așteptată și regulile din spatele așteptării. Cere modelului conectat să inspecteze codul relevant înainte de a sugera o corecție.
De exemplu, poți solicita revizuirea unei funcții auxiliare pentru termene care omite weekendurile și un set furnizat de sărbători. Explică dacă ziua de început se numără, cum se comportă deplasările negative și cine furnizează datele sărbătorilor. Cere o propunere care păstrează aceste decizii atât în apelant, cât și în funcția auxiliară, fără a presupune o definiție universală a zilei lucrătoare.
Verifică modificările propuse folosind cazuri derivate din acele reguli. Include trecerea peste un weekend, o sărbătoare alăturată unui weekend, o deplasare zero și o deplasare înapoi. Rulează testele proiectului și inspectează comportamentul la limită pentru date neacceptate. Un termen aparent corect într-un exemplu nu stabilește că toți apelanții folosesc aceeași politică.
DayThistle se conectează la endpointuri acceptate compatibile cu OpenAI sau Anthropic. Poți alege un model IA fără cenzură oferit de serviciu; instrumentele și contextul disponibile depind în continuare de server. Păstrează politica scrisă în sarcină, astfel încât modelul să ajute implementarea fără a decide tacit cum își programează organizația activitatea.
Întrebări care stau la baza unei modificări a zilelor lucrătoare
Furnizează DayThistle un calendar al sărbătorilor?
Sarcina exemplificată folosește date despre sărbători furnizate de aplicația ta. Identifică sursa și acoperirea așteptată în cerere. Nu presupune că deschiderea spațiului de lucru oferă sărbători regionale actuale sau decide ce sărbători afectează termenele.
Trebuie numărată ziua de început în deplasare?
Precizează explicit regula și include un test în care începutul cade într-o zi lucrătoare. Politici diferite produc răspunsuri diferite. Cere asistentului să păstreze convenția aleasă atât pentru deplasarea înainte, cât și înapoi.
Cum separ datele greșite despre sărbători de un defect al codului?
Păstrează setul exact de sărbători împreună cu testul care eșuează și inspectează conținutul înainte de a modifica calculul. Compară rezultatul cu politica scrisă. O sărbătoare lipsă și o condiție incorectă de omitere necesită corecții diferite.
Ce fac dacă bucla propusă nu are o condiție clară de oprire?
Întreabă cum limitează implementarea deplasările acceptate și cum tratează depășirea intervalului calendaristic. Revizuiește comportamentul înainte de a accepta propunerea. Rulează teste la limită alături de date obișnuite, astfel încât remedierea unui termen să nu introducă un calcul nelimitat.
DayThistle · Actualizat 2026-10-25