数据来源: PERM Processing Time
我发现这个网站最近出了这个search功能很有意思, 你可以把case status宣称Analyst Review, 然后把你的perm提交天数设置成Submission End Date,然后search,它会告诉你你前边总共还剩多少个case, 根据这个,你可以粗略估计你还需要等多少天
PERM Processing Time | Advanced PERM Case Search
这个python脚本会计算你的还需要等多少个日历日,最终获批是哪一天,并且考虑到了DOL的假期和周末,比如你是今天交的perm, 你前边还有183167个case,如果DOL每个工作日处理250个,并且不考虑DOL按照公司字母优先级进行处理,那你最终可能要等到2027-10-07
Processing speed: 250 cases/workday - Calendar days needed: 1071 days - Estimated end date: 2027-10-07
import datetime
import holidays
import matplotlib.pyplot as plt
from pytz import timezone
# 手动输入 totalMatches 数字
total_cases = int(input("请输入剩余待处理数 (totalMatches): "))
print(f"Total remaining cases: {total_cases}")
# 设置当前日期为 PST
pst = timezone('US/Pacific')
today = datetime.datetime.now(pst).date()
print(f"Today's date (PST): {today}")
# 定义美国联邦假期
us_holidays = holidays.US(years=[today.year, today.year + 1])
# 计算处理完所有案件所需的工作日和日历日数
def calculate_processing_days(rate):
cases_remaining = total_cases
workday_count = 0
current_date = today
while cases_remaining > 0:
if current_date.weekday() < 5 and current_date not in us_holidays:
cases_remaining -= rate
workday_count += 1
current_date += datetime.timedelta(days=1)
calendar_days = (current_date - today).days
return workday_count, calendar_days, current_date
# 生成不同处理速度下的日历日数和完成日期数据
speeds = range(100, 801, 50) # 处理速度范围从100到800,间隔为50
calendar_days_needed = []
end_dates = []
for speed in speeds:
_, calendar_days, end_date = calculate_processing_days(speed)
calendar_days_needed.append(calendar_days)
end_dates.append(end_date)
# 输出不同处理速度下的处理结果
print("\nProcessing results at different speeds:")
for i, speed in enumerate(speeds):
print(
f"Processing speed: {speed} cases/workday - Calendar days needed: {calendar_days_needed[i]} days - Estimated end date: {end_dates[i]}")
# 绘制第一个图像:处理速度 vs. 所需的日历日
plt.figure(figsize=(10, 6))
plt.plot(speeds, calendar_days_needed, marker='o')
plt.xlabel("Processing Speed (cases/workday)", fontsize=12)
plt.ylabel("Calendar Days Needed", fontsize=12)
plt.title("Processing Speed vs. Calendar Days Needed", fontsize=14)
plt.xticks(range(100, 801, 50)) # 设置横轴间隔为50
plt.grid(True)
plt.show()
# 绘制第二个图像:处理速度 vs. 预计完成日期(纵轴简化标签)
plt.figure(figsize=(10, 6))
plt.plot(speeds, end_dates, marker='o')
plt.xlabel("Processing Speed (cases/workday)", fontsize=12)
plt.ylabel("Estimated End Date", fontsize=12)
plt.title("Processing Speed vs. Estimated End Date", fontsize=14)
plt.xticks(range(100, 801, 50)) # 设置横轴间隔为50
plt.grid(True)
# 设置日期标签间隔显示
date_labels = [end_dates[i].strftime('%Y-%m-%d') for i in range(0, len(end_dates), 2)] # 每隔一个日期显示
date_positions = [end_dates[i] for i in range(0, len(end_dates), 2)]
plt.yticks(date_positions, date_labels)
plt.show()




