예제 PDF와 통계 및 표시 속성 한글화와 검증 기록
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import pathlib,subprocess,datetime,shutil,time,urllib.request,hashlib,json,sqlite3
|
||||
base=pathlib.Path('/www/dk_project/dk_app/trilium');release=pathlib.Path('/tmp/trilium-korean-phase5')
|
||||
manifest=json.loads((release/'manifest.json').read_text());digest=lambda b:hashlib.sha256(b).hexdigest()
|
||||
for rel,expected in manifest['files'].items():assert digest((release/rel).read_bytes())==expected,rel
|
||||
assert digest((base/'patched/main.cjs').read_bytes())==manifest['previousMainSha256']
|
||||
pending=base/'data/korean-demo-pdf.pending';assert not pending.exists()
|
||||
backup=base/'backups'/('before-korean-phase5-'+datetime.datetime.now().strftime('%Y%m%d-%H%M%S'));backup.mkdir(parents=True,mode=0o700)
|
||||
shutil.copy2(base/'patched/main.cjs',backup/'main.cjs')
|
||||
source=sqlite3.connect('file:'+str(base/'data/document.db')+'?mode=ro',uri=True)
|
||||
with sqlite3.connect(str(backup/'document.db')) as target:source.backup(target)
|
||||
original=source.execute('SELECT b.content FROM notes n JOIN blobs b ON b.blobId=n.blobId WHERE n.noteId=?',('swKGGdlek7o6',)).fetchone()[0]
|
||||
assert digest(original)==manifest['originalPdfSha256'];(backup/'original-demo.pdf').write_bytes(original);source.close()
|
||||
try:
|
||||
(base/'patched/main.cjs').write_bytes((release/'main.cjs').read_bytes());pending.write_bytes((release/'demo-ko.pdf').read_bytes())
|
||||
subprocess.run(['docker','restart','trilium'],check=True)
|
||||
for attempt in range(40):
|
||||
try:
|
||||
with urllib.request.urlopen('http://127.0.0.1:18082/api/health-check',timeout=2) as response:assert response.status==200
|
||||
assert not pending.exists();break
|
||||
except Exception:
|
||||
if attempt==39:raise
|
||||
time.sleep(1)
|
||||
db=sqlite3.connect('file:'+str(base/'data/document.db')+'?mode=ro',uri=True)
|
||||
actual=db.execute('SELECT b.content FROM notes n JOIN blobs b ON b.blobId=n.blobId WHERE n.noteId=?',('swKGGdlek7o6',)).fetchone()[0];db.close()
|
||||
assert digest(actual)==manifest['files']['demo-ko.pdf']
|
||||
result={'status':'verified','backup':str(backup),'noteId':'swKGGdlek7o6','pdfBytes':len(actual),'pdfSha256':digest(actual),'translatedPages':11}
|
||||
(base/'i18n_ko/phase5-result.json').write_text(json.dumps(result,indent=2));print(json.dumps(result))
|
||||
except Exception:
|
||||
if pending.exists():pending.rename(backup/'disabled-demo-pdf.pending')
|
||||
(base/'patched/main.cjs').write_bytes((backup/'main.cjs').read_bytes());subprocess.run(['docker','restart','trilium'],check=True);raise
|
||||
Reference in New Issue
Block a user