fix: book canonical, fr/de pin warnings, pin grouping per locale, SEO checks
CI / Lint e auditorias (push) Successful in 48s
CI / Trivy (dependências e segredos) (push) Successful in 12s
CI / Imagem Docker (linux/arm64) (push) Successful in 3m41s
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 16s
Release / Cria a release no Gitea (push) Successful in 6s
CI / Lint e auditorias (push) Successful in 48s
CI / Trivy (dependências e segredos) (push) Successful in 12s
CI / Imagem Docker (linux/arm64) (push) Successful in 3m41s
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 16s
Release / Cria a release no Gitea (push) Successful in 6s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5a9fe676fc
commit
fe1802f818
67 files changed
+11875
-9596
No files matched your search
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env node
|
||||
import fs from "node:fs";
|
||||
const root=process.argv[2]||".";
|
||||
// Confere que a busca classifica os pinos (flash, PSRAM, USB, CAN...) igual ao português em todos os idiomas.
|
||||
const norm=(s="")=>String(s).toLowerCase().normalize("NFD").replace(/[̀-ͯ]/g,"");
|
||||
const mods={pt:`${root}/lib/searchTopics.js`,en:`${root}/lib/data/en/topicos.js`,es:`${root}/lib/data/es/topicos.js`,fr:`${root}/lib/data/fr/topicos.js`,de:`${root}/lib/data/de/topicos.js`,"zh-CN":`${root}/lib/data/zh-CN/topicos.js`};
|
||||
const T={};for(const l in mods)T[l]=(await import(new URL(mods[l],"file://"+process.cwd()+"/").href)).TOPICOS;
|
||||
const dir=l=>l==="pt"?`${root}/public/conexoes`:`${root}/data/${l}/conexoes`;
|
||||
const chips=fs.readdirSync(dir("pt")).filter(f=>f.endsWith(".json")).map(f=>f.slice(0,-5));
|
||||
function niveis(l,chip,id){
|
||||
const t=T[l].find(x=>x.id===id); const pins=JSON.parse(fs.readFileSync(`${dir(l)}/${chip}.json`,"utf8"));
|
||||
return pins.map(p=>{const q={...p,_avs:(p.avisos||[]).map(norm),_fn:(p.funcoes||[]).map(norm),_blob:norm([p.nome,...(p.funcoes||[]),...(p.categorias||[]),...(p.avisos||[])].join(" "))};
|
||||
if(t.pinoNivel) return t.pinoNivel(q)||"-";
|
||||
if((t.pinoCats&&q.categorias?.some(c=>t.pinoCats.includes(c)))||(t.pinoRe&&t.pinoRe.test(q._blob))) return "forte"; return "-";});
|
||||
}
|
||||
let bad=0;
|
||||
for(const id of ["flash","psram","ethernet","usb","jtag","adc","strapping","uart","spi","i2c","camera","lcd","can","touch","dac"]){
|
||||
for(const chip of chips){const ref=niveis("pt",chip,id).join();
|
||||
for(const l of Object.keys(mods)){ if(l==="pt")continue; const r=niveis(l,chip,id).join();
|
||||
if(r!==ref){bad++; if(bad<=12) { console.log(`${id} ${chip} ${l}`); if(process.env.V){const a=ref.split(","),b=r.split(","),pp=JSON.parse(fs.readFileSync(`${dir(l)}/${chip}.json`,"utf8")),pq=JSON.parse(fs.readFileSync(`${dir("pt")}/${chip}.json`,"utf8"));a.forEach((x,i)=>{if(x!==b[i])console.log(" ",pp[i].nome,"pt="+x,l+"="+b[i],"\n pt:",(pq[i].avisos||[]).join(" | ").slice(0,160),"\n "+l+":",(pp[i].avisos||[]).join(" | ").slice(0,160),"\n fn:",JSON.stringify(pp[i].funcoes).slice(0,120))})}}}}}}
|
||||
console.log(bad===0?" ✔ Busca de pinos: os 6 idiomas classificam igual ao português.":` ✖ Busca de pinos: ${bad} divergência(s) (rode com V=1).`);
|
||||
process.exit(bad?1:0);
|
||||
Reference in new issue
Block a user