Сдвиг рабочих дней с учётом праздников
DayThistle поддерживает проектные беседы в Windows о сдвиге дат по рабочим дням. Проверьте предложенные моделью тесты выходных, праздников и границ календаря до принятия логики дат.
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")- Проект
- Проверьте ноль, обратное движение и границы календаря, отклоняйте неверные даты без изменения праздников.
- Проверьте перед применением
- Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
- Подключение
- Базовый URL, учётные данные и доступный сервер.
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")Уточняйте правила планирования до изменения кода дат
Код планирования часто смешивает деловые правила с обычной календарной арифметикой. DayThistle — среда программирования с ИИ для Windows, где можно разделить эти вопросы при проверке проекта. Начните с даты, выдаваемой приложением, ожидаемой даты и правил, стоящих за ожиданием. До предложения исправления попросите подключённую модель изучить соответствующий код.
Например, можно запросить проверку функции сроков, пропускающей выходные и заданный набор праздников. Объясните, учитывается ли начальный день, как работают отрицательные сдвиги и кто предоставляет праздники. Попросите предложение, сохраняющее эти решения в вызывающем коде и функции, а не предполагающее универсальное определение рабочего дня.
Проверьте изменения на примерах, вытекающих из правил. Включите переход через выходные, праздник рядом с выходными, нулевой сдвиг и движение назад. Запустите тесты проекта и изучите граничное поведение для неподдерживаемых дат. Верный на вид срок в одном примере не устанавливает, что все вызывающие компоненты используют одну политику.
DayThistle подключается к поддерживаемым конечным точкам, совместимым с OpenAI или Anthropic. Можно выбрать модель ИИ без цензуры, предлагаемую сервисом; доступные инструменты и контекст зависят от сервера. Запишите политику в задаче, чтобы модель помогала реализации, не решая незаметно за вашу организацию, как планировать работу.
Вопросы об изменении расчёта рабочих дней
Предоставляет ли DayThistle календарь праздников?
Пример задачи использует праздничные даты, предоставляемые вашим приложением. Укажите в запросе их источник и ожидаемый охват. Не предполагайте, что открытие среды даёт актуальные региональные праздники или определяет, какие праздники влияют на сроки.
Должен ли начальный день учитываться в сдвиге?
Явно задайте правило и добавьте пример с началом в рабочий день. Разные политики дают разные ответы. Попросите помощника сохранить выбранное соглашение и при движении вперёд, и при движении назад.
Как отличить неверные праздники от дефекта кода?
Сохраните точный набор праздников с ошибочным примером и изучите его до изменения расчёта. Сравните результат с письменной политикой. Отсутствующая праздничная дата и неправильное условие пропуска требуют разных исправлений.
Что делать, если предложенный цикл не имеет ясного условия остановки?
Спросите, как реализация ограничивает поддерживаемые сдвиги и обрабатывает переполнение календаря. Проверьте это поведение до принятия. Запускайте граничные тесты вместе с обычными датами, чтобы исправление одного срока не ввело неограниченный расчёт.
DayThistle · Обновлено 2026-10-25