网站已死,现在可以用https://permupdate.com/ 不用看以下内容了
过去的内容
vibe coding写了个查看自己的PERM什么时候被处理的小脚本
使用方法(必须安装下面说的脚本)
-
安装脚本后,第一次打开https://permtimeline.com/ 会弹出对话框问你的PD和预计工作日每天可处理多少case(默认450,注意不是calendar day avg,只用写工作日平均)
-
填好之后左上角会有个button,告诉你大概什么时候你的case能被处理
- 点一下button可以修改之前的设置以及看一些详细信息
安装方法(二选一)
Safari的Tampermonkey收费,不想花钱可以看看替代品
Chrome/Edge可能需要额外启动开发者模式
然后安装脚本 PermTurn: Check my PERM estimated processing time
注意:脚本只有访问https://permtimeline.com/ 主页才生效
- (不推荐)书签大法:如果需要更新,必须手动更新代码,要用的时候需要点一下做好的书签
首先随便复制一个书签到书签栏,然后按下图操作
一长串代码
javascript:void%20function(){(function(){%22use%20strict%22;function%20a(){return%20Array.from(document.querySelectorAll(%22button.bg-blue-500.text-white%22)).filter(a=%3Ea%3F.textContent%3F.includes(%22Show%20All%20Submission%22))}function%20b(a,b=!0,d=!1,e=()=%3E{}){const%20f=h(%22div%22,{},{position:%22fixed%22,top:%220%22,left:%220%22,width:%22100%25%22,height:%22100%25%22,backgroundColor:%22rgba(0,%200,%200,%200.5)%22,zIndex:%229999%22}),g=h(%22div%22,{},{position:%22fixed%22,top:%2250%25%22,left:%2250%25%22,transform:%22translate(-50%25,%20-50%25)%22,backgroundColor:%22white%22,width:d%3F%2280%25%22:%22auto%22,maxWidth:d%3F%22600px%22:%22auto%22,height:d%3F%2280%25%22:%22auto%22,maxHeight:d%3F%22600px%22:%22auto%22,border:%221px%20solid%20black%22,zIndex:%2210000%22,boxShadow:%220%204px%208px%20rgba(0,%200,%200,%200.2)%22,display:%22flex%22,flexDirection:%22column%22}),i=h(%22div%22,{},{overflowY:%22auto%22,padding:%2220px%22,textAlign:%22left%22,flexGrow:%221%22});%22string%22==typeof%20a%3Fi.innerHTML=a:a%20instanceof%20HTMLElement%26%26i.appendChild(a);const%20j=h(%22div%22,{},{padding:%2210px%2020px%22,borderTop:%221px%20solid%20%23ccc%22,textAlign:%22center%22,display:%22flex%22,justifyContent:%22center%22});if(j.style.flexShrink=%220%22,b){const%20a=h(%22button%22,{textContent:%22Close%22},{backgroundColor:%22rgb(28,%20100,%20242)%22,borderRadius:%229999px%22,padding:%220.5rem%201rem%22,color:%22white%22,fontSize:%2214px%22,border:%22none%22,cursor:%22pointer%22});a.onclick=()=%3E{f.remove(),e%26%26e()};const%20b=h(%22button%22,{textContent:%22Edit%20Preferences%22},{backgroundColor:%22rgb(28,%20100,%20242)%22,borderRadius:%229999px%22,padding:%220.5rem%201rem%22,color:%22white%22,fontSize:%2214px%22,border:%22none%22,cursor:%22pointer%22,display:%22block%22,marginRight:%221em%22});b.onclick=()=%3E{f.remove(),e%26%26e(),c()},j.appendChild(b),j.appendChild(a)}return%20g.appendChild(i),g.appendChild(j),f.appendChild(g),document.body.appendChild(f),{modalBackdrop:f,modalFooter:j}}function%20c(){const%20a=p(),c=document.createElement(%22div%22),e=a.estimatedDailyAverage||%22450%22||%22%22,f=a.priorityMonth||%22%22,g=a.priorityYear||%22%22,j=h(%22input%22,{type:%22number%22,value:e},{marginBottom:%2210px%22,width:l}),k=h(%22select%22,{},{marginBottom:%2210px%22,width:l}),o=h(%22select%22,{},{marginBottom:%2210px%22,width:l}),q=h(%22p%22,{textContent:%22Estimated%20Daily%20Average%20must%20be%20a%20number.%22},{color:%22red%22,display:%22none%22,marginBottom:%2210px%22}),r=h(%22p%22,{textContent:%22Cannot%20select%20a%20future%20month/year.%22},{color:%22red%22,display:%22none%22,marginBottom:%2210px%22}),s=h(%22p%22,{textContent:%22Must%20select%20month/year%22},{color:%22red%22,display:%22none%22,marginBottom:%2210px%22});k.appendChild(h(%22option%22,{value:%22%22,textContent:%22--%20Select%20Month%20--%22,selected:!f})),o.appendChild(h(%22option%22,{value:%22%22,textContent:%22--%20Select%20Year%20--%22,selected:!g})),m.forEach(a=%3Ek.appendChild(h(%22option%22,{value:a,textContent:a,selected:a===f})));const%20t=new%20Date().getFullYear();for(let%20a=2023;a%3C=t;a++)o.appendChild(h(%22option%22,{value:a,textContent:a,selected:a.toString()===g}));const%20u=h(%22button%22,{textContent:%22Save%22},{backgroundColor:%22rgb(28,%20100,%20242)%22,borderRadius:%229999px%22,padding:%220.5rem%201rem%22,marginRight:%220.5em%22,color:%22white%22,fontSize:%2214px%22,border:%22none%22,cursor:%22pointer%22,display:%22block%22});u.onclick=()=%3E{const%20a=k.value,b=o.value,c=j.value;if(!/^\d+$/.test(c))return%20q.style.display=%22block%22,r.style.display=%22none%22,void(s.style.display=%22none%22);if(!a||!b)return%20s.style.display=%22block%22,r.style.display=%22none%22,void(q.style.display=%22none%22);const%20e=new%20Date(parseInt(b),m.indexOf(a),1),f=new%20Date;if(e%3Ef)return%20r.style.display=%22block%22,s.style.display=%22none%22,void(q.style.display=%22none%22);const%20g=parseInt(c),h=a,l=b;localStorage.setItem(n,JSON.stringify({estimatedDailyAverage:g,priorityMonth:h,priorityYear:l})),i=`${h}%20${l}`,v.remove(),d()},c.appendChild(h(%22label%22,{textContent:%22Estimated%20Business%20day%20Average(no%20Sat/Sun)%22},{display:%22block%22})),c.appendChild(j),c.appendChild(h(%22label%22,{textContent:%22PERM%20submission%20Month%22},{display:%22block%22})),c.appendChild(k),c.appendChild(h(%22label%22,{textContent:%22PERM%20submission%20Year%22},{display:%22block%22})),c.appendChild(o),c.appendChild(s),c.appendChild(r),c.appendChild(q);const{modalBackdrop:v,modalFooter:w}=b(c,!1);w.appendChild(u)}async%20function%20d(){var%20c=Math.round;const%20d=p();let%20e=d.estimatedDailyAverage||450,h=d.priorityMonth||%22%22,l=d.priorityYear||%22%22;i=`${h}%20${l}`,a().map(a=%3Ea%3F.click()),await%20f(200);const%20m=Array.from(document.querySelectorAll(%22div.bg-blue-500.text-white%22));let%20n=m.findIndex(a=%3Ea.textContent.includes(i));-1===n%26%26(n=0);const%20o=-1===n%3F[]:m.slice(n),r=-1===n%3F[]:m.slice(n+1);o.forEach(a=%3E{a.textContent.includes(%22\u25BA%22)%26%26(console.log(a.textContent),a.click())}),await%20f(200);const%20s=a=%3Ea.map(a=%3E{const%20b=a.textContent.match(/\w+\s+20\d{2}/),c=a.nextSibling%3F.textContent.match(/Pending%20Applications:%20(\d{1,3}(,\d{3})*)/);return%20b%26%26c%3F{pdDate:b[0],pendingApplications:parseInt(c[1].replace(/,/g,%22%22),10)}:null}).filter(a=%3Enull!==a),t=s(Array.from(r)),u=s(Array.from(o)),v=t.reduce((a,b)=%3Ea+b.pendingApplications,0),w=u.reduce((a,b)=%3Ea+b.pendingApplications,0),x=c(v/(5*e/7)),y=c(w/(5*e/7)),z=g(x).toLocaleDateString(%22en-US%22),A=g(y).toLocaleDateString(%22en-US%22);if(console.log(%22Pending%20Applications%20Data:%22,t),console.log(%22Pending%20Applications%20With%20Priority%20Data:%22,u),q.textContent=`Est:%20${z}-${A}`,Object.assign(k,{totalPendingApplications:v,totalPendingApplicationsWithPriority:w,pendingApplicationsWithPriorityArray:u,estimatedDaysLeftMin:x,estimatedDaysLeftMax:y,estimatedCompletionDateMin:z,estimatedCompletionDateMax:A}),j){const%20a=a=%3Ea.charAt(0).toUpperCase()+a.slice(1),d=a(i),f=k.pendingApplicationsWithPriorityArray.map(a=%3E`
%20%20%20%20%20%20%20%20%20%20%20%20%3Ctr%3E
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20style=%22border:%201px%20solid%20black;%20padding:%208px;%20text-align:%20left;%22%3E${a.pdDate}%3C/td%3E
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20style=%22border:%201px%20solid%20black;%20padding:%208px;%20text-align:%20left;%22%3E${a.pendingApplications}%3C/td%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3C/tr%3E
%20%20%20%20%20%20%20%20`).join(%22%22),h=c(k.totalPendingApplications/(5*e/7)),j=c(k.totalPendingApplicationsWithPriority/(5*e/7)),l=g(h).toLocaleDateString(%22en-US%22),m=g(j).toLocaleDateString(%22en-US%22),n=`
%20%20%20%20%20%20%20%20%20%20%20%20%3Ci%3EThis%20script%20provides%20an%20estimate%20only.%20It%20may%20not%20be%20accurate%20and%20does%20not%20constitute%20legal%20advice.%3C/i%3E%3Cbr/%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3E%3Cb%3EPriority%20date:%3C/b%3E%20${d}%3C/p%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3EYour%20case%20%3Cb%3Emight%3C/b%3E%20be%20processed%20at%20eariest:%20${a(l)}%3C/p%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3EYour%20case%20%3Cb%3Emight%3C/b%3E%20be%20processed%20at%20latest:%20${a(m)}%3C/p%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3EAssuming%20DOL%20can%20process%20%3Cb%3E${e}%3C/b%3E%20cases%20per%20business%20day%3C/p%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3ETotal%20pending(%3Cb%3Eexcluding%3C/b%3E%20PD%20Month):%20${k.totalPendingApplications}%3C/p%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3ETotal%20pending(%3Cb%3Eincluding%3C/b%3E%20PD%20Month):%20${k.totalPendingApplicationsWithPriority}%3C/p%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3EMonthly%20pending%20application:%3C/p%3E
%20%20%20%20%20%20%20%20%20%20%20%20%3Ctable%20style=%22width:100%25;%20border-collapse:%20collapse;%22%3E
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctr%3E
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cth%20style=%22border:%201px%20solid%20black;%20padding:%208px;%20text-align:%20left;%22%3EMonth%3C/th%3E
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cth%20style=%22border:%201px%20solid%20black;%20padding:%208px;%20text-align:%20left;%22%3EPending%20Applications%3C/th%3E
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/tr%3E
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20${f}
%20%20%20%20%20%20%20%20%20%20%20%20%3C/table%3E
%20%20%20%20%20%20%20%20`;return%20void%20b(n,!0,!0)}j=!0}function%20e(){if(!s){s=!0;const%20a=p();a.priorityMonth%26%26a.priorityYear%3Fd():c(),r%26%26clearInterval(r)}}const%20f=a=%3Enew%20Promise(b=%3EsetTimeout(b,a)),g=a=%3E{const%20b=new%20Date;return%20b.setDate(b.getDate()+a),b},h=(a,b={},c={})=%3E{const%20d=document.createElement(a);return%20Object.assign(d,b),Object.assign(d.style,c),d};let%20i=%22February%202025%22,j=!1;const%20k={},l=%22200px%22,m=[%22January%22,%22February%22,%22March%22,%22April%22,%22May%22,%22June%22,%22July%22,%22August%22,%22September%22,%22October%22,%22November%22,%22December%22],n=%22PermTurnScriptPreference%22,o=[%22perm-turn-main-button%22],p=()=%3EJSON.parse(localStorage.getItem(n)||%22{}%22)||{},q=h(%22button%22,{textContent:%22Waiting%20page%20loading%22},{position:%22absolute%22,top:%22100px%22,left:%2210px%22,zIndex:%22100%22,backgroundColor:%22rgb(28,%20100,%20242)%22,borderRadius:%229999px%22,padding:%220.5rem%201rem%22,color:%22white%22,fontSize:%2214px%22,border:%22none%22,cursor:%22pointer%22});q.classList.add(o),document.querySelector(`.${o.join(%22.%22)}`)||document.body.appendChild(q),q.onclick=d;let%20r,s=!1;r=setInterval(()=%3E{%22complete%22!==document.readyState||e()},100)})()}();
FAQ
为什么默认每个工作日处理450,现在每天能处理500+/周末也能处理一些
对,但是DOL放假会休息,周末处理量也只是蚊子腿,而且只是最近快,也许以后会变慢。450我认为是一个比较安全的估计,最近基本没有比450慢的,你可以随时自己调整设置。
为什么PD不问具体哪天提交的/为什么是一个范围
PERM不是严格按提交日期,而是某个月提交的所有PERM一起按照公司名A-Z的顺序处理,然后加上一定随机性,所以不用知道具体哪天提交,也只能是一个大概的范围
我看网站自带了个Estimated Adjudication Time
对,但是我不知道他是什么算法,随便填了个24年12月提交的告诉我最早2036年才能被处理




