Posuny pracovních dnů se svátky
Posuň datum o minus 366 až 366 pracovních dnů, vynech víkendy a až 1000 svátků.
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")- Projekt
- Ověř nulu, zpětný posun a meze kalendáře, odmítni chybné datum bez změny svátků.
- Před použitím zkontrolujte
- Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu.
- Modely
- Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně.
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")Před úpravou kalendářních výpočtů výslovně určete pravidla plánování
Kód plánování často směšuje obchodní pravidla s běžnou kalendářní aritmetikou. DayThistle je prostředí pro programování s AI ve Windows, kde lze tyto otázky při kontrole projektu oddělit. Začněte datem vytvářeným aplikací, očekávaným datem a pravidly tohoto očekávání. Před návrhem opravy požádejte připojený model o kontrolu příslušného kódu.
Například můžete požádat o kontrolu pomocné funkce termínu, která přeskakuje víkendy a dodanou množinu svátků. Vysvětlete, zda se počítá počáteční den, jak fungují záporné posuny a kdo dodává svátky. Požadujte návrh zachovávající tato rozhodnutí ve volajícím i pomocné funkci místo předpokladu jediné univerzální definice pracovního dne.
Navržené změny ověřte testovacími případy vycházejícími z těchto pravidel. Zahrňte překročení víkendu, svátek sousedící s víkendem, nulový posun a pohyb zpět. Spusťte testy projektu a prověřte hraniční chování pro nepodporovaná data. Správně vypadající termín v jednom příkladu nedokazuje, že všichni volající používají stejné zásady.
DayThistle se připojuje k podporovaným koncovým bodům kompatibilním s OpenAI nebo koncovým bodům Anthropic. Můžete zvolit model AI bez cenzury nabízený službou; dostupné nástroje a kontext zůstávají závislé na serveru. Pravidla zapište do úlohy, aby model pomáhal s implementací, aniž by potichu rozhodoval o plánování práce vaší organizace.
Otázky ke změně pracovních dnů
Dodává DayThistle kalendář svátků?
Příklad úlohy používá svátky dodané aplikací. V požadavku určete jejich zdroj a očekávané pokrytí. Nepředpokládejte, že otevření prostředí poskytuje aktuální regionální svátky nebo rozhoduje o tom, které sváteční dny ovlivňují vaše termíny.
Má se počáteční den započítávat do posunu?
Pravidlo určete výslovně a přiložte případ, kde začátek připadá na pracovní den. Různé zásady dávají různé odpovědi. Požádejte asistenta o zachování zvolené konvence při pohybu vpřed i zpět.
Jak oddělit chybná data svátků od vady kódu?
U selhávajícího testovacího případu uchovejte přesnou množinu svátků a před změnou výpočtu prohlédněte její obsah. Porovnejte výsledek s písemnými pravidly. Chybějící svátek a nesprávná podmínka přeskočení vyžadují různé opravy.
Co když navržená smyčka nemá jasnou podmínku ukončení?
Zeptejte se, jak implementace omezuje podporované posuny a řeší překročení rozsahu kalendáře. Před přijetím toto chování prověřte. Vedle běžných dat spusťte hraniční testy, aby oprava jednoho termínu nezavedla neomezený výpočet.
DayThistle · Aktualizováno 2026-10-25