Dịch ngày làm việc có ngày lễ
Dịch ngày từ âm 366 đến 366 ngày làm việc, bỏ cuối tuần và tối đa 1000 ngày lễ.
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")- Dự án
- Thử không dịch, chiều ngược và biên lịch, từ chối ngày sai mà không đổi tập ngày lễ.
- Kiểm tra trước khi áp dụng
- So sánh hành vi thực tế với kết quả mong đợi. Nếu kiểm tra thất bại, tìm nguyên nhân trước khi sửa tiếp.
- Mô hình
- Cấu hình endpoint tương thích OpenAI hoặc Anthropic bằng URL cơ sở và khóa API nếu cần. Kiểm tra kết nối. Máy chủ mô hình cục bộ phải đang chạy; công cụ từ xa có thể truyền dữ liệu riêng.
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")Làm rõ quy tắc lập lịch trước khi sửa mã ngày tháng
Mã lập lịch thường trộn chính sách nghiệp vụ với phép tính lịch thông thường. DayThistle là không gian lập trình AI trên Windows nơi bạn có thể tách các vấn đề đó khi rà soát dự án. Bắt đầu với ngày ứng dụng tạo ra, ngày mong đợi và quy tắc phía sau kỳ vọng ấy. Yêu cầu mô hình được kết nối xem mã liên quan trước khi gợi ý sửa.
Ví dụ, bạn có thể yêu cầu rà soát hàm tính hạn chót bỏ qua cuối tuần và tập ngày nghỉ được cung cấp. Giải thích có tính ngày bắt đầu không, dịch chuyển âm hoạt động thế nào và ai cung cấp dữ liệu ngày nghỉ. Yêu cầu đề xuất giữ các quyết định này trong cả bên gọi lẫn hàm, thay vì giả định một định nghĩa ngày làm việc phổ quát.
Kiểm chứng thay đổi đề xuất bằng dữ liệu kiểm thử rút từ các quy tắc đó. Bao gồm vượt cuối tuần, ngày nghỉ sát cuối tuần, dịch chuyển bằng 0 và đi lùi. Chạy kiểm thử dự án và xem hành vi biên với ngày không được hỗ trợ. Một hạn chót có vẻ đúng trong một ví dụ không xác lập mọi bên gọi dùng cùng chính sách.
DayThistle kết nối điểm cuối tương thích OpenAI hoặc Anthropic được hỗ trợ. Bạn có thể chọn mô hình AI không kiểm duyệt do dịch vụ cung cấp; công cụ khả dụng và ngữ cảnh vẫn tùy máy chủ. Giữ chính sách được viết trong tác vụ để mô hình hỗ trợ triển khai mà không âm thầm quyết định cách tổ chức bạn lập lịch làm việc.
Câu hỏi phía sau thay đổi ngày làm việc
DayThistle có cung cấp lịch ngày nghỉ không?
Tác vụ ví dụ dùng dữ liệu ngày nghỉ do ứng dụng của bạn cung cấp. Xác định nguồn và phạm vi bao phủ mong đợi trong yêu cầu. Đừng giả định mở không gian làm việc là có ngày nghỉ khu vực cập nhật hoặc quyết định dịp lễ nào ảnh hưởng hạn chót.
Ngày bắt đầu có được tính vào dịch chuyển không?
Quy định rõ và kèm trường hợp kiểm thử có ngày bắt đầu là ngày làm việc. Chính sách khác nhau cho kết quả khác nhau. Yêu cầu trợ lý giữ quy ước đã chọn khi đi cả tiến lẫn lùi.
Làm sao phân biệt dữ liệu ngày nghỉ sai với lỗi mã?
Giữ đúng tập ngày nghỉ cùng dữ liệu kiểm thử thất bại và xem nội dung trước khi đổi phép tính. So kết quả với chính sách đã viết. Thiếu mục ngày nghỉ và điều kiện bỏ qua sai cần cách sửa khác nhau.
Nếu vòng lặp đề xuất không có điều kiện dừng rõ thì sao?
Hỏi cách triển khai giới hạn dịch chuyển hỗ trợ và xử lý tràn phạm vi lịch. Rà soát hành vi đó trước khi chấp nhận. Chạy kiểm thử biên cùng ngày thông thường để sửa một hạn chót không đưa vào phép tính vô hạn.
DayThistle · Cập nhật 2026-10-25