1<!doctype html> 2<html lang="zh-CN"> 3<head> 4<meta charset="utf-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1"> 6<meta name="description" content="è·¨å¢å¨å¨æ°é»ä¸å¿ï¼äºé©¬éåå®¶æ¯æ¥å¿«è®¯ãæ¯å¨è¡ä¸å¨æ¥ãæ¯ææ·±åº¦çç¹ãå ³ç¨ã平尿¿çãç®æ³ååï¼ä¸ç«è·è¿ã"> 7<title>äºé©¬éæ°é»ä¸å¿ · è·¨å¢å¨å¨ Simone</title> 8<meta property="og:type" content="website"> 9<meta property="og:title" content="ð äºé©¬éæ°é»ä¸å¿ · BSRIQ"> 10<meta property="og:description" content="æ¥æ´å¿«è®¯ + æ¯å¨å¨æ¥ + æ¯æçç¹ï¼å¸¦å¨å¨ç个人ç¹è¯ï¼æ¿çåå¨ä¸æ¼çã"> 11<meta property="og:url" content="https://bsriq.com/news/"> 12<meta property="og:image" content="https://bsriq.com/assets/og.jpg"> 13<meta property="og:site_name" content="BSRIQ · è·¨å¢å¨å¨ Simone"> 14<meta name="twitter:card" content="summary_large_image"> 15<link rel="stylesheet" href="/style.css"> 16<style> 17 /* æ æ¥å级ï¼P0 å¿ é¡»ä»å¤©å¤çï¼P1 å·²çæè¿ SOPï¼P2 å¾ ç¡®è®¤åªè¿æ æ¯ï¼ä¸è¿ææ¬è¡¨ */ 18 .news-scope{--p0:#B4402A;--p0-wash:rgba(180,64,42,.08);--p0-line:rgba(180,64,42,.30); 19 --p2:#8A8474;--p2-wash:rgba(138,132,116,.10);} 20 21 .ntabs{display:flex;gap:6px;border-bottom:2px solid var(--line);margin:30px 0 0;flex-wrap:wrap;} 22 .ntab{padding:10px 22px;font-size:15px;cursor:pointer;border:none;background:none;color:var(--text-soft);font-family:inherit;border-bottom:3px solid transparent;margin-bottom:-2px;} 23 .ntab[aria-selected="true"]{color:var(--gold);border-bottom-color:var(--gold);font-weight:700;} 24 .ntab:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:3px;} 25 .npanel{display:none;padding:26px 0 10px;} .npanel.on{display:block;} 26 27 /* ---- åæ¥ç¶ææ¡ ---- */ 28 .sync-note{display:flex;gap:10px 18px;align-items:center;flex-wrap:wrap;background:var(--bg-card);border:1px solid var(--line);border-radius:8px;padding:12px 16px;margin:0 0 18px;color:var(--text-soft);font-size:12.5px;} 29 .sync-note strong{color:var(--text);} 30 .sync-note .dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex:none;} 31 32 /* ---- æ§å¶æ¡ï¼æç´¢ + å级 + æ ç¾ ---- */ 33 .nctrl{background:var(--bg-card);border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin:0 0 20px;display:flex;flex-direction:column;gap:11px;} 34 .nctrl .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;} 35 .nctrl .lbl{font-size:11.5px;color:var(--text-dim);letter-spacing:.08em;flex:none;width:44px;} 36 .nsearch{flex:1;min-width:190px;font-family:inherit;font-size:14px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 12px;} 37 .nsearch:focus{outline:none;border-color:var(--gold-dim);} 38 .chip{font-family:inherit;font-size:12.5px;cursor:pointer;background:var(--bg);color:var(--text-soft);border:1px solid var(--line);border-radius:999px;padding:4px 13px;} 39 .chip:hover{border-color:var(--gold-dim);color:var(--text);} 40 .chip[aria-pressed="true"]{background:var(--gold-wash);border-color:var(--gold-dim);color:var(--gold);font-weight:700;} 41 .chip:focus-visible{outline:2px solid var(--gold);outline-offset:1px;} 42 .chip .n{font-family:var(--mono);font-size:11px;opacity:.65;margin-left:5px;} 43 .nresult{font-size:12.5px;color:var(--text-dim);} 44 .nresult b{color:var(--gold);font-variant-numeric:tabular-nums;} 45 .nreset{font-size:12.5px;color:var(--text-dim);background:none;border:none;cursor:pointer;font-family:inherit;text-decoration:underline;padding:0;} 46 .nreset:hover{color:var(--gold);} 47 48 /* ---- ä¸ææ¥æ¥ ---- */ 49 .day{margin:0 0 14px;border:1px solid var(--line);border-radius:10px;background:var(--bg-card);overflow:hidden;} 50 .day.latest{border-color:var(--gold-dim);box-shadow:var(--shadow);} 51 .day-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 20px;cursor:pointer;list-style:none;} 52 .day-head::-webkit-details-marker{display:none;} 53 .day-head:hover{background:var(--bg-card-hi);} 54 .day-head:focus-visible{outline:2px solid var(--gold);outline-offset:-2px;} 55 .day-head .dt{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;margin:0;} 56 .day-head .wd{font-size:13px;color:var(--text-dim);} 57 .day-head .ago{font-size:12px;color:var(--text-dim);font-variant-numeric:tabular-nums;} 58 .day-head .issue{font-family:var(--mono);font-size:11px;color:var(--gold);border:1px solid var(--gold-dim);border-radius:999px;padding:2px 9px;} 59 .day-head .cnt{margin-left:auto;font-size:12px;color:var(--text-dim);font-variant-numeric:tabular-nums;} 60 .day-head .caret{font-size:11px;color:var(--text-dim);transition:transform .15s;} 61 details[open] > .day-head .caret{transform:rotate(90deg);} 62 .day-body{padding:0 20px 18px;} 63 .today-badge{font-size:10.5px;letter-spacing:.1em;background:var(--gold);color:#fff;border-radius:3px;padding:2px 7px;font-weight:700;} 64 65 .action{background:var(--gold-wash);border-left:3px solid var(--gold);border-radius:4px;padding:12px 16px;margin:0 0 14px;font-size:13.5px;color:var(--text-soft);line-height:1.75;} 66 .action b{color:var(--gold);} 67 68 /* ---- åæ¡æ æ¥ ---- */ 69 .nitem{border:1px solid var(--line);border-left:3px solid var(--line);border-radius:7px;padding:15px 18px;margin-bottom:10px;background:var(--bg-card);} 70 .nitem.p0{border-left-color:var(--p0);background:var(--p0-wash);} 71 .nitem.p1{border-left-color:var(--gold);} 72 .nitem.p2{border-left-color:var(--p2);} 73 .nmeta{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-bottom:8px;} 74 .ncat{font-size:11px;font-weight:700;border-radius:3px;padding:2px 9px;letter-spacing:.03em; 75 background:var(--gold);color:#fff;} 76 .ntag{font-size:11px;color:var(--text-dim);border:1px solid var(--line);border-radius:2px;padding:1px 8px;letter-spacing:.06em;} 77 .prio{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.06em;border-radius:2px;padding:1px 7px;} 78 .prio.p0{background:var(--p0);color:#fff;} 79 .prio.p1{background:var(--gold-wash);color:var(--gold);border:1px solid var(--gold-dim);} 80 .prio.p2{background:var(--p2-wash);color:var(--p2);} 81 .verify{font-size:10.5px;color:var(--text-dim);border:1px solid var(--line);border-radius:2px;padding:1px 7px;} 82 .verify.soft{color:var(--p0);border-color:var(--p0-line);} 83 .when{font-size:10.5px;color:var(--text-dim);} 84 .nitem h4{font-size:16px;margin:0 0 7px;line-height:1.55;} 85 .nitem p{margin:0;font-size:14px;color:var(--text-soft);line-height:1.8;} 86 .nitem mark{background:var(--gold-wash);color:var(--gold);font-weight:700;padding:0 1px;}
87 .srcs{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:10px;} 88 .srcs .lb{font-size:11.5px;color:var(--text-dim);} 89 .src{font-size:11.5px;color:var(--text-dim);text-decoration:none;border-bottom:1px dotted var(--gold-dim);} 90 .src:hover{color:var(--gold);border-bottom-color:var(--gold);} 91 92 .report-sources{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:14px;padding-top:11px;border-top:1px solid var(--line);} 93 .report-sources .label{font-size:11.5px;color:var(--text-dim);} 94 .report-sources a{font-size:11.5px;color:var(--text-dim);text-decoration:none;border-bottom:1px dotted var(--gold-dim);} 95 .report-sources a:hover{color:var(--gold);border-bottom-color:var(--gold);} 96 97 .m-card{background:var(--gold-wash);border:1px dashed var(--gold-dim);border-radius:8px;padding:22px 26px;margin-bottom:14px;} 98 .m-card h3{margin:0 0 6px;font-size:19px;} 99 .m-card .st{font-size:12px;color:var(--gold);letter-spacing:.08em;} 100 .m-card p{color:var(--text-soft);font-size:14px;margin:8px 0 0;} 101 .kw{display:inline-block;font-size:12.5px;background:var(--bg-card);border:1px solid var(--line);border-radius:999px;padding:3px 12px;margin:8px 8px 0 0;color:var(--text);} 102 .me{background:var(--gold-wash);border:1px dashed var(--gold-dim);border-radius:8px;padding:16px 20px;margin-bottom:14px;} 103 .me .who{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--gold);display:block;margin-bottom:6px;} 104 .me p{margin:0;font-size:14.5px;color:var(--text);font-family:var(--serif);line-height:1.9;} 105 .access-card{background:var(--gold-wash);border:1px dashed var(--gold-dim);border-radius:8px;padding:22px 24px;margin:0 0 22px;} 106 .access-card .access-label{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--gold);margin-bottom:7px;} 107 .access-card h3{font-size:18px;margin:0 0 7px;} 108 .access-card p{font-size:13.5px;color:var(--text-soft);margin:0 0 13px;} 109 .access-card .access-btn{display:inline-block;background:var(--gold);color:#fff;text-decoration:none;border-radius:5px;padding:8px 15px;font-size:13px;font-weight:700;} 110 .access-card .access-btn.alt{background:transparent;color:var(--gold);border:1px solid var(--gold-dim);margin-left:8px;} 111 .empty{color:var(--text-dim);font-size:14px;padding:26px 0;text-align:center;} 112 113 @media (max-width:560px){ 114 .nctrl .lbl{width:auto;} 115 .day-head{padding:12px 14px;gap:8px;} 116 .day-head .dt{font-size:16px;} 117 .day-head .cnt{margin-left:0;} 118 .day-body{padding:0 14px 14px;} 119 .nitem{padding:13px 14px;} 120 } 121 @media (prefers-reduced-motion:reduce){ .caret{transition:none;} } 122</style> 123</head> 124<body> 125<header class="top"> 126 <div class="wrap top-inner"> 127 <a class="brand" href="/" style="text-decoration:none;">NANA SIMONE</a> 128 <nav class="menu" aria-label="页é¢å¯¼èª"> 129 <a href="/">é¦é¡µ</a> 130 <a href="/ads/">广ååæ</a> 131 <a href="/resources/">å·¥å ·èµæº</a> 132 <a href="/deals/">ææ£ç </a> 133 <a href="/#contact">èç³»</a> 134 </nav> 135 </div> 136</header> 137<main class="news-scope"> 138 <div class="hero" style="padding:56px 0 24px;"> 139 <div class="wrap"> 140 <p class="eyebrow">News Center</p> 141 <h1 style="font-size:clamp(32px,5.5vw,52px);">äºé©¬é<span class="gold-text">æ°é»ä¸å¿</span></h1> 142 <p class="hero-line" style="margin-bottom:0;">å ³ç¨ã平尿¿çãç®æ³ååââ<b>æ¯æ¥å¿«è®¯ · æ¯å¨å¨æ¥ · æ¯æçç¹</b>ï¼ä¸ä¸ªèå¥ä¸ç«è·è¿ãæ¯æ¡é½æ äº<b>å级</b>ï¼<b>P0</b> ä»å¤©å¿ é¡»å¤çï¼<b>P1</b> 宿¹ä¸æãå·²çæï¼å¯è¿ SOP åææ¬è¡¨ï¼<b>P2</b> åªä½äºææå¾ 确认ï¼åªè¿æ æ¯ã䏿¹å®ä»·éè´ãæ³çé¿æï¼å ³æ³¨å ¬ä¼å· / 头æ¡å·<b>ãè·¨å¢å¨å¨ã</b>ï¼æçç«å <a href="/blog/">éç¬æ¥è®° â</a></p> 143 </div> 144 </div> 145 146 <section style="padding-top:8px;border-bottom:none;"> 147 <div class="wrap"> 148 <div class="ntabs" role="tablist" aria-label="æ æ¥èå¥"> 149 <button class="ntab" role="tab" id="t-daily" aria-controls="p-daily" aria-selected="true" data-p="daily">ð æ¯æ¥å¿«è®¯</button> 150 <button class="ntab" role="tab" id="t-weekly" aria-controls="p-weekly" aria-selected="false" data-p="weekly">ð° æ¯å¨å¨æ¥</button> 151 <button class="ntab" role="tab" id="t-monthly" aria-controls="p-monthly" aria-selected="false" data-p="monthly">ðï¸ æ¯æçç¹</button> 152 </div> 153 154 <div class="npanel on" id="p-daily" role="tabpanel" aria-labelledby="t-daily"></div> 155 <div class="npanel" id="p-weekly" role="tabpanel" aria-labelledby="t-weekly" hidden></div> 156 <div class="npanel" id="p-monthly" role="tabpanel" aria-labelledby="t-monthly" hidden></div> 157 </div> 158 </section> 159</main> 160<footer class="wrap"> 161 <span>© 2026 å¨å¨ Simone · bsriq.com</span> 162 <span class="mono">BSRIQ = BSR + IQ · è®©ä½ ç BSR é¿æºå</span> 163</footer> 164
165<script src="/news/public-data.js"></script>
vendor: 1 bytes, line 165
165
166<script> 167(function(){ 168 var access={authenticated:false,member:false}; 169 // çéç¶ææ¾å¨éå éï¼ä¼åæ°æ®å¼æ¥å è½½å鿏²æä¸ä¼ä¸¢å¤±ç¨æ·å·²éçæ¡ä»¶ã 170 var filter={q:'',prio:'',cat:''}; // cat=æ æ¥å¤§ç±»ï¼tag é级为å¡çä¸ç次级说æ 171 var openDays={}; // ç¨æ·æå¨å±å¼/æ¶èµ·è¿çæå· 172 var openTouched=false; // ç¨æ·æ¯å¦å¨è¿æå ï¼å¨è¿å°±ä¸åèªå¨åªå±å¼ææ°ä¸æ 173 174 var esc=function(s){return String(s==null?'':s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');}; 175 var safeUrl=function(value){ 176 try{var u=new URL(value);return (u.protocol==='http:'||u.protocol==='https:')?u.href:'';}catch(e){return '';} 177 }; 178 function loadScript(src){ 179 return new Promise(function(resolve,reject){ 180 var s=document.createElement('script'); 181 s.src=src;s.async=false;s.onload=resolve;s.onerror=reject; 182 document.head.appendChild(s); 183 }); 184 } 185 186 /* ---------- æ°æ® ---------- */ 187 function currentDaily(){ 188 var daily=access.member 189 ?(window.NEWS_LATEST_DAILY||[]).concat(window.NEWS_DAILY||[]) 190 :(window.NEWS_PUBLIC_DAILY||[]); 191 var seen={}; 192 return daily.filter(function(day){ 193 var key=day.date||day.syncKey; 194 if(!key||seen[key])return false; 195 seen[key]=true;return true; 196 }).sort(function(a,b){return String(b.date||'').localeCompare(String(a.date||''));}); 197 } 198 function currentMeta(){ 199 if(access.member)return window.NEWS_SYNC_META||window.NEWS_PUBLIC_META; 200 return window.NEWS_PUBLIC_META; 201 } 202 203 /* ---------- æ "å·²æ ¸å®äºå®ï½P1ï½ä»æ¥èç¹" ææç»æåå级 ---------- */ 204 function parseStatus(raw){ 205 var s=String(raw||''); 206 // å£å¾ï¼å符串éç P1/P2 æ¯ãä¿¡æºç级ãï¼P1 宿¹ä¸æ / P2 åªä½äºæï¼ï¼ 207 // èãP0é£é©å¡ãæ¯å½æ¥å¤çä¼å 级ãåªè¦åºç° P0 å°±æ P0 å¤çï¼å¦åéåä¿¡æºç级ã 208 var m=s.match(/P0/)?['P0','0']:s.match(/P([0-3])/); 209 var prio=m?(m[0]==='P0'?'P0':('P'+m[1])):''; 210 var parts=s.split(/[ï½|]/).map(function(x){return x.trim();}).filter(Boolean); 211 var verify='',when=''; 212 parts.forEach(function(part){ 213 if(/^P[0-3]/.test(part))return; 214 if(/æ ¸å®|确认|æ¨æ|å£å¾/.test(part)){ if(!verify)verify=part; } 215 else if(!when){ when=part; } 216 }); 217 // ãå¾ ç¡®è®¤ã类信æ¯ä¸è½è¿ææ¬è¡¨ï¼åç¬æ åºæ¥ 218 return {prio:prio, verify:verify, when:when, soft:/å¾ ç¡®è®¤|æ¨æ/.test(verify)}; 219 } 220 function prioClass(p){ return p==='P0'?'p0':(p==='P1'?'p1':(p?'p2':'')); } 221 222 /* ---------- æ é¢/æ£ææ¸ æ´ï¼å ¼å®¹æ©æ data.js çåæ³ ---------- */ 223 function normalize(it){ 224 var title=String(it.t||'').trim(); 225 var desc=String(it.d||'').trim(); 226 if(/â¦$/.test(title)&&desc){ 227 var combined=title.slice(0,-1)+desc; 228 var boundary=combined.search(/[ãï¼]/); 229 if(boundary>=0){title=combined.slice(0,boundary+1);desc=combined.slice(boundary+1).trim();} 230 else{title=combined;desc='';} 231 } 232 title=title.replace(/^[ï¼:ï¼;·\s]+/,''); 233 desc=desc.replace(/^[ï¼:ï¼;·\s]+/,''); 234 var sources=(it.sources||[]).slice(); 235 if(it.s)sources.unshift({label:'åå§ä¿¡æº',url:it.s}); 236 var valid=[],used={}; 237 sources.forEach(function(src){var url=safeUrl(src.url);if(url&&!used[url]){used[url]=true;valid.push({label:src.label||'åå§ä¿¡æº',url:url});}}); 238 valid.slice().reverse().forEach(function(src){ 239 var label=String(src.label||'').replace(/[.*+?^${}()|[\]\\]/g,'\\$&'); 240 if(label)desc=desc.replace(new RegExp('[ï½Â·\\s]*'+label+'[ã.]?$'),'').trim(); 241 }); 242 return {title:title,desc:desc,sources:valid,tag:it.tag||'è·¨å¢æ æ¥',cat:it.cat||'',status:parseStatus(it.status)}; 243 } 244 245 /* ---------- æç´¢å½ä¸é«äº® ---------- */ 246 function hl(text,q){ 247 var safe=esc(text); 248 if(!q)return safe; 249 var needle=esc(q).replace(/[.*+?^${}()|[\]\\]/g,'\\$&'); 250 try{ return safe.replace(new RegExp(needle,'gi'),function(m){return '<mark>'+m+'</mark>';}); } 251 catch(e){ return safe; } 252 } 253 function matches(n,day){ 254 if(filter.prio&&n.status.prio!==filter.prio)return false;
255 if(filter.cat&&n.cat!==filter.cat)return false; 256 if(filter.q){ 257 var hay=(n.title+' '+n.desc+' '+n.tag+' '+n.cat+' '+(day.action||'')).toLowerCase(); 258 if(hay.indexOf(filter.q.toLowerCase())<0)return false; 259 } 260 return true; 261 } 262 263 function daysAgo(dateStr){ 264 var d=new Date(String(dateStr)+'T00:00:00+08:00'); 265 if(isNaN(d))return ''; 266 var today=new Date(); 267 var diff=Math.floor((today-d)/86400000); 268 if(diff<=0)return 'ä»å¤©'; 269 if(diff===1)return 'æ¨å¤©'; 270 return diff+' 天å'; 271 } 272 273 function accessCard(kind){ 274 var from=encodeURIComponent('/news/'); 275 if(!access.authenticated){ 276 return '<div class="access-card"><span class="access-label">MEMBER CONTENT</span><h3>'+(kind==='daily'?'å½å弿¾ä»æ¥ 3 æ¡ç²¾éæè¦':'卿¥ä¸æåº¦çç¹ä¸ºä¼åå 容')+'</h3><p>88.88 å 24 å°æ¶ä½éªç æå¹´å¡ä¼åå¯è§£é仿¥å®æ´å¿«è®¯ãå ¨é¨å岿¥æ¥ã卿¥åææ¥ã</p><a class="access-btn" href="/join/?from='+from+'">ç»å½ / ç»å®ä¼åç </a><a class="access-btn alt" href="/join/?from='+from+'">äºè§£ä¼å</a></div>'; 277 } 278 return '<div class="access-card"><span class="access-label">MEMBER REQUIRED</span><h3>å½åè´¦å·å°æªå¼éææä¼å</h3><p>88.88 å 24 å°æ¶ä½éªç æå¹´å¡ä¼åå¯è§£é仿¥å®æ´å¿«è®¯ãå ¨é¨å岿¥æ¥ã卿¥åææ¥ã</p><a class="access-btn" href="/join/?from='+from+'">ç»å®ä¼åç </a></div>'; 279 } 280 281 /* ---------- æ§å¶æ¡ ---------- */ 282 function controlBar(days,total,shown){ 283 var cats={},prios={}; 284 days.forEach(function(day){ 285 (day.items||[]).forEach(function(it){ 286 var n=normalize(it); 287 if(n.cat)cats[n.cat]=(cats[n.cat]||0)+1; 288 if(n.status.prio)prios[n.status.prio]=(prios[n.status.prio]||0)+1; 289 }); 290 }); 291 // 大类顺åºåºå®ï¼ä¸é彿¥æ¡æ°æå¨ï¼ç¨æ·èèè®°å¿æç¨³ 292 var CATS=['æ¿çä¸å ³ç¨','å¹³å°è§å','ç©æµä¸ä¾åºé¾','AI ä¸å·¥å ·','å¸åºä¸å®è§','æ¯æ¥ç»¼è¿°']; 293 var catNames=CATS.filter(function(c){return cats[c];}); 294 var prioHtml=['P0','P1','P2'].filter(function(p){return prios[p];}).map(function(p){ 295 return '<button class="chip" type="button" data-prio="'+p+'" aria-pressed="'+(filter.prio===p)+'">'+p+'<span class="n">'+prios[p]+'</span></button>'; 296 }).join(''); 297 var tagHtml=catNames.map(function(t){ 298 return '<button class="chip" type="button" data-cat="'+esc(t)+'" aria-pressed="'+(filter.cat===t)+'">'+esc(t)+'<span class="n">'+cats[t]+'</span></button>'; 299 }).join(''); 300 var active=filter.q||filter.prio||filter.cat; 301 return '<div class="nctrl">' 302 +'<div class="row"><span class="lbl">æç´¢</span>' 303 +'<input class="nsearch" id="nq" type="search" placeholder="æå ³ç¨ãPBBDãéçµãAgentâ¦" value="'+esc(filter.q)+'" aria-label="æç´¢æ æ¥">' 304 +'</div>' 305 +(prioHtml?'<div class="row"><span class="lbl">å级</span>'+prioHtml+'</div>':'') 306 +(tagHtml?'<div class="row"><span class="lbl">åç±»</span>'+tagHtml+'</div>':'') 307 +'<div class="row"><span class="nresult">æ¾ç¤º <b>'+shown+'</b> / '+total+' æ¡æ æ¥</span>' 308 +(active?'<button class="nreset" type="button" id="nreset">æ¸ é¤çé</button>':'') 309 +'</div></div>'; 310 } 311 312 /* ---------- æ¯æ¥å¿«è®¯ ---------- */ 313 function renderDaily(){ 314 var days=currentDaily(); 315 var d=document.getElementById('p-daily'); 316 var meta=currentMeta(); 317 var scope=access.member?'已解é宿´å¿«è®¯ä¸å ¨é¨æ¡£æ¡':'å ¬å¼ 3 æ¡ç²¾éæè¦'; 318 var syncHtml=meta?'<div class="sync-note"><span class="dot" aria-hidden="true"></span><strong>æ¯æ¥è·¨å¢æ æ¥å·²æ´æ°</strong><span>æ´æ°è³ '+esc(meta.syncedThrough)+' · '+esc(meta.issueRange)+'</span><span>'+scope+'</span></div>':''; 319 320 var total=0; 321 days.forEach(function(day){total+=(day.items||[]).length;}); 322 323 var shown=0, body='', latestKey=days.length?(days[0].date||days[0].syncKey):''; 324 days.forEach(function(day){ 325 var key=day.date||day.syncKey; 326 var kept=(day.items||[]).map(normalize).filter(function(n){return matches(n,day);}); 327 shown+=kept.length; 328 if(!kept.length)return;
329 var isLatest=(key===latestKey); 330 // é»è®¤åªå±å¼ææ°ä¸æï¼ä¸æ¦ç¨æ·å¨è¿æå ï¼ææ£å¨çéï¼å°±æç¨æ·/çéç»ææ¥ 331 var open=openTouched?!!openDays[key]:(isLatest||!!filter.q||!!filter.prio||!!filter.cat); 332 body+='<details class="day'+(isLatest?' latest':'')+'"'+(open?' open':'')+' data-key="'+esc(key)+'">' 333 +'<summary class="day-head">' 334 +'<span class="caret" aria-hidden="true">â¶</span>' 335 +'<h3 class="dt">'+esc(day.date)+'</h3>' 336 +'<span class="wd">'+esc(day.weekday||'')+'</span>' 337 +'<span class="ago">'+esc(daysAgo(day.date))+'</span>' 338 +(isLatest?'<span class="today-badge">ææ°ä¸æ</span>':'') 339 +(day.issue?'<span class="issue">第 '+esc(day.issue)+' æ'+(day.priority?' · '+esc(day.priority):'')+'</span>':'') 340 +'<span class="cnt">'+kept.length+' æ¡</span>' 341 +'</summary><div class="day-body">' 342 + (day.me&&!day.syncKey?'<div class="me"><span class="who">NANA 说</span><p>'+esc(day.me)+'</p></div>':'') 343 + (day.action?'<div class="action"><b>仿¥å¨ä½ï¼</b>'+hl(day.action,filter.q)+'</div>':'') 344 + kept.map(function(n){ 345 var pc=prioClass(n.status.prio); 346 return '<article class="nitem'+(pc?' '+pc:'')+'">' 347 +'<div class="nmeta">'+(n.cat?'<span class="ncat">'+esc(n.cat)+'</span>':'')+'<span class="ntag">'+esc(n.tag)+'</span>' 348 +(n.status.prio?'<span class="prio '+pc+'">'+esc(n.status.prio)+'</span>':'') 349 +(n.status.verify?'<span class="verify'+(n.status.soft?' soft':'')+'">'+esc(n.status.verify)+'</span>':'') 350 +(n.status.when?'<span class="when">'+esc(n.status.when)+'</span>':'') 351 +'</div>' 352 +'<h4>'+hl(n.title,filter.q)+'</h4>' 353 +(n.desc?'<p>'+hl(n.desc,filter.q)+'</p>':'') 354 +(n.sources.length?'<div class="srcs"><span class="lb">ä¿¡æºï¼</span>'+n.sources.map(function(src){return '<a class="src" href="'+esc(src.url)+'" target="_blank" rel="noopener noreferrer">'+esc(src.label)+'</a>';}).join('')+'</div>':'') 355 +'</article>'; 356 }).join('') 357 +'</div></details>'; 358 }); 359 360 var ctrl=total>=5?controlBar(days,total,shown):''; 361 if(!days.length)body='<p class="empty">仿¥å¿«è®¯æ´çä¸ã</p>'; 362 else if(!shown)body='<p class="empty">没æç¬¦åæ¡ä»¶çæ æ¥ãæ¢ä¸ªå ³é®è¯ï¼æç¹ãæ¸ é¤çéãçå ¨é¨ã</p>'; 363 364 d.innerHTML=syncHtml+ctrl+body 365 +(!access.member?accessCard('daily'):'') 366 +'<div class="me" style="text-align:center;"><span class="who">FOLLOW NANA</span><p style="font-family:inherit;">æ·±åº¦é¿æç + å·¥å ·ææ£ç æ±æ»ï¼å¨å ¬ä¼å·å头æ¡å·<b>ãè·¨å¢å¨å¨ã</b>ââ微信 / å¤´æ¡ App å æç´¢å ³æ³¨ãå¨è¯¢ç´è¿å¾®ä¿¡ <b>simone2288</b>ã</p></div>'; 367 368 bindDailyEvents(); 369 } 370 371 function bindDailyEvents(){ 372 var d=document.getElementById('p-daily'); 373 var q=d.querySelector('#nq'); 374 if(q){ 375 var timer=null; 376 q.addEventListener('input',function(){ 377 clearTimeout(timer); 378 var v=q.value; 379 timer=setTimeout(function(){ 380 filter.q=v; 381 var pos=q.selectionStart; 382 renderDaily(); 383 var nq=document.getElementById('nq'); 384 if(nq){nq.focus();try{nq.setSelectionRange(pos,pos);}catch(e){}} 385 },180); 386 }); 387 } 388 d.querySelectorAll('.chip[data-prio]').forEach(function(b){ 389 b.addEventListener('click',function(){ 390 filter.prio=(filter.prio===b.dataset.prio)?'':b.dataset.prio; 391 renderDaily(); 392 }); 393 }); 394 d.querySelectorAll('.chip[data-cat]').forEach(function(b){ 395 b.addEventListener('click',function(){ 396 filter.cat=(filter.cat===b.dataset.cat)?'':b.dataset.cat; 397 renderDaily(); 398 }); 399 }); 400 var reset=d.querySelector('#nreset'); 401 if(reset)reset.addEventListener('click',function(){filter={q:'',prio:'',cat:''};renderDaily();}); 402 d.querySelectorAll('details.day').forEach(function(el){ 403 el.addEventListener('toggle',function(){ 404 openTouched=true; 405 openDays[el.dataset.key]=el.open; 406 }); 407 }); 408 } 409 410 /* ---------- 卿¥ / ææ¥ ---------- */ 411 function reportSources(sources){
412 var valid=[],used={}; 413 (sources||[]).forEach(function(src){ 414 var url=safeUrl(src.url); 415 if(url&&!used[url]){used[url]=true;valid.push({label:src.label||'åå§ä¿¡æº',url:url});} 416 }); 417 return valid.length?'<div class="report-sources"><span class="label">å ¬å¼ä¿¡æºï¼</span>'+valid.map(function(src){return '<a href="'+esc(src.url)+'" target="_blank" rel="noopener noreferrer">'+esc(src.label)+'</a>';}).join('')+'</div>':''; 418 } 419 function renderWeekly(){ 420 var w=document.getElementById('p-weekly'); 421 if(!access.member){w.innerHTML=accessCard('weekly');return;} 422 w.innerHTML=(window.NEWS_WEEKLY||[]).map(function(wk){ 423 return '<article class="nitem"><div style="display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;"><span style="font-family:var(--mono);color:var(--gold);font-weight:800;font-size:18px;">'+esc(wk.no)+'</span><h4 style="margin:0;">'+esc(wk.title)+'</h4><span style="font-size:12px;color:var(--text-dim);">'+esc(wk.period)+'</span></div>' 424 +(wk.sections||[]).map(function(sec){ 425 return '<p style="margin:10px 0 4px;font-weight:700;color:var(--gold);font-size:13.5px;">'+esc(sec.h)+'</p><ul style="margin:0;padding-left:20px;">'+(sec.points||[]).map(function(pt){return '<li style="font-size:14px;color:var(--text-soft);margin:3px 0;">'+esc(pt)+'</li>';}).join('')+'</ul>'; 426 }).join('') 427 +(wk.note?'<p style="margin:12px 0 0;font-size:13px;color:var(--text-dim);">'+esc(wk.note)+'</p>':'') 428 +reportSources(wk.sources)+'</article>'; 429 }).join('') || '<p class="empty">æ¬æå¨æ¥æ´çä¸ã</p>'; 430 } 431 function renderMonthly(){ 432 var m=document.getElementById('p-monthly'); 433 if(!access.member){m.innerHTML=accessCard('monthly');return;} 434 m.innerHTML=(window.NEWS_MONTHLY||[]).map(function(mo){ 435 return '<div class="m-card"><span class="st">'+esc(mo.status)+'</span><h3>'+esc(mo.month)+' çç¹</h3>' 436 +(mo.keywords||[]).map(function(k){return '<span class="kw">'+esc(k)+'</span>';}).join('') 437 +(mo.sections||[]).map(function(sec){ 438 return '<p style="margin:14px 0 4px;font-weight:700;color:var(--gold);font-size:14px;">'+esc(sec.h)+'</p><ul style="margin:0;padding-left:20px;">'+(sec.points||[]).map(function(pt){return '<li style="font-size:14px;color:var(--text-soft);margin:4px 0;">'+esc(pt)+'</li>';}).join('')+'</ul>'; 439 }).join('') 440 +(mo.note?'<p>'+esc(mo.note)+'</p>':'') 441 +reportSources(mo.sources)+'</div>'; 442 }).join('') || '<p class="empty">æ¬æçç¹æ´çä¸ã</p>'; 443 } 444 function renderAll(){renderDaily();renderWeekly();renderMonthly();} 445 446 /* ---------- Tabs ---------- */ 447 var tabs=[].slice.call(document.querySelectorAll('.ntab')); 448 function selectTab(btn){
449 tabs.forEach(function(x){ 450 var on=(x===btn); 451 x.setAttribute('aria-selected',on?'true':'false'); 452 var panel=document.getElementById('p-'+x.dataset.p); 453 panel.classList.toggle('on',on); 454 panel.hidden=!on; 455 }); 456 btn.focus(); 457 } 458 tabs.forEach(function(b,i){ 459 b.addEventListener('click',function(){selectTab(b);}); 460 b.addEventListener('keydown',function(e){ 461 if(e.key!=='ArrowRight'&&e.key!=='ArrowLeft')return; 462 e.preventDefault(); 463 selectTab(tabs[(i+(e.key==='ArrowRight'?1:tabs.length-1))%tabs.length]); 464 }); 465 }); 466 467 renderAll(); 468 fetch('/api/member',{method:'GET',credentials:'same-origin',headers:{'Accept':'application/json'},cache:'no-store'}) 469 .then(function(r){return r.ok?r.json():{authenticated:false,member:false};}) 470 .then(function(state){ 471 access.authenticated=!!state.authenticated; 472 access.member=!!state.member; 473 if(access.member){ 474 return Promise.all([loadScript('/news/latest-data.js'),loadScript('/news/data.js').then(function(){ 475 return loadScript('/news/weekly-data.js').catch(function(){ 476 // 卿¥è¦çå 载失败æ¶ï¼ä¿ç data.js çæ§å¨æ¥åä¼åç¶æã 477 }); 478 })]); 479 } 480 }) 481 .catch(function(){access.authenticated=false;access.member=false;}) 482 .then(function(){renderAll();}); 483})(); 484</script>
vendor: 1 bytes, line 484
484
485<script src="/nav.js" defer></script>
vendor: 1 bytes, line 485
485
486<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"6de6b9ed6753452ba2ad7b0ebd2f0366","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 486
486
487<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a43fe88f1c90e7fc',t:'MTc5MDkwNDI3Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
487</body> 488</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.