Tatillerle iş günü kaydırma
Hafta sonlarını ve en fazla 1000 tatili atlayarak tarihi eksi 366 ile 366 iş günü kaydırın.
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")- Proje
- Sıfırı, ters yönü ve takvim sınırlarını deneyin, tatilleri değiştirmeden geçersiz tarih türlerini reddedin.
- Uygulamadan önce inceleyin
- Gerçek davranışı beklenen sonuçla karşılaştırın. Bir kontrol başarısız olursa yeni değişikliklerden önce nedenini araştırın.
- Modeller
- Temel URL ve gerekiyorsa API anahtarıyla OpenAI uyumlu veya Anthropic endpoint yapılandırın. Bağlantıyı test edin. Yerel model sunucusu çalışıyor olmalıdır; uzak araçlar ayrıca veri aktarabilir.
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")Tarih kodunu düzenlemeden önce planlama kurallarını açıkça belirtin
Planlama kodu çoğu zaman iş politikasını sıradan takvim aritmetiğiyle karıştırır. DayThistle, projenizi incelerken bu soruları ayırabileceğiniz bir Windows yapay zeka kodlama çalışma alanıdır. Uygulamanın ürettiği tarih, beklenen tarih ve bu beklentinin ardındaki kurallarla başlayın. Düzeltme önermeden önce bağlı modelden ilgili kodu incelemesini isteyin.
Örneğin hafta sonlarını ve sağlanan tatil kümesini atlayan son tarih yardımcı işlevinin incelenmesini isteyebilirsiniz. Başlangıç gününün sayılıp sayılmadığını, negatif kaydırmaların davranışını ve tatil verisini kimin sağladığını açıklayın. Evrensel tek bir iş günü tanımı varsaymak yerine bu kararları hem çağıran kodda hem yardımcı işlevde koruyan öneri isteyin.
Önerilen değişiklikleri bu kurallardan türetilen test örnekleriyle doğrulayın. Hafta sonu geçişi, hafta sonuna bitişik tatil, sıfır kaydırma ve geriye hareket ekleyin. Projenin testlerini çalıştırın ve desteklenmeyen tarihlerdeki sınır davranışını inceleyin. Tek örnekte doğru görünen son tarih, tüm çağıran kodun aynı politikayı kullandığını kanıtlamaz.
DayThistle, desteklenen OpenAI uyumlu veya Anthropic uç noktalarına bağlanır. Hizmetinizin sunduğu sansürsüz yapay zeka modeli seçebilirsiniz; kullanılabilir araçlar ve bağlam sunucuya bağlı kalır. Modelin kuruluşunuzun işi nasıl planladığına sessizce karar vermeden uygulamaya yardımcı olması için politikayı görevde yazılı tutun.
İş günü değişikliğinin ardındaki sorular
DayThistle tatil takvimi sağlar mı?
Örnek görev uygulamanızın sağladığı tatil verisini kullanır. İstekte kaynağını ve beklenen kapsamını belirtin. Çalışma alanını açmanın güncel bölgesel tatilleri sağladığını veya hangi özel günlerin son tarihlerinizi etkilediğine karar verdiğini varsaymayın.
Başlangıç günü kaydırmaya dahil sayılmalı mı?
Kuralı açıkça belirtin ve başlangıcın iş gününe denk geldiği test örneği ekleyin. Farklı politikalar farklı yanıt üretir. Asistandan seçilen kuralı hem ileri hem geriye harekette korumasını isteyin.
Hatalı tatil verisini kod kusurundan nasıl ayırırım?
Tam tatil kümesini başarısız test örneğiyle birlikte tutun ve hesabı değiştirmeden önce içeriğini inceleyin. Sonucu yazılı politikayla karşılaştırın. Eksik tatil kaydı ve yanlış atlama koşulu farklı düzeltmeler gerektirir.
Önerilen döngünün açık durma koşulu yoksa ne olur?
Uygulamanın desteklenen kaydırmaları nasıl sınırladığını ve takvim taşmasını nasıl işlediğini sorun. Kabul etmeden önce davranışı inceleyin. Tek son tarihin düzeltilmesi sınırsız hesaplamaya yol açmasın diye olağan tarihlerle birlikte sınır testlerini çalıştırın.
DayThistle · Güncellendi 2026-10-25