数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s

This commit is contained in:
2026-10-10 16:24:43 +08:00
commit 0593ff7e62
1893 changed files with 361723 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { buildBaihuaPrompt, parseBaihua } from '../src/baihua.js';
const battle = {
id: 'x', name: '赤壁之战', side: '曹军 vs 孙刘', year: 208, stake: '天下三分还是一统', situ: '曹军首尾相接', real: '曹操大败北还',
chao: 'donghan', nodes: [{ label: '黄盖诈降火攻' }, { label: '延烧岸营' }, { label: '曹操华容道遁走' }],
};
test('buildBaihuaPrompt:四锁铁律 + 节点条数注入', () => {
const msgs = buildBaihuaPrompt(battle);
assert.ok(/换皮翻译|不是创作/.test(msgs[0].content));
assert.ok(/不新增或改动任何硬史实/.test(msgs[0].content));
assert.ok(/借东风/.test(msgs[0].content), '含演义黑名单');
assert.ok(msgs[1].content.includes('条数=3'), '注入节点条数');
});
test('parseBaihua:正常JSON → ok,节点截到史实条数', () => {
const t = '{"hook":"你在江边","situ":"对面号称八十万","real":"曹操被一把火烧退了","nodes":["黄盖假投降放火","火烧上了岸","曹操踩着烂泥逃","多余的一条"],"scene":"火贴着水面冲过来"}';
const r = parseBaihua(t, battle);
assert.ok(r.ok);
assert.equal(r.baihua.nodes.length, 3, '节点截到史实条数(3)');
assert.ok(r.baihua.hook && r.baihua.scene);
});
test('parseBaihua:命中演义黑名单 → 不过(宁可显原文)', () => {
const t = '{"situ":"诸葛亮借东风","real":"曹操败","nodes":["a","b","c"]}';
assert.equal(parseBaihua(t, battle).ok, false);
});
test('parseBaihua:断代违禁器物(东汉出现火炮) → 不过', () => {
const t = '{"situ":"曹军架起火炮","real":"曹操败","nodes":["a","b","c"]}';
const r = parseBaihua(t, battle);
assert.equal(r.ok, false);
assert.ok(r.reason.startsWith('era'));
});
test('parseBaihua:坏JSON → 不过', () => {
assert.equal(parseBaihua('我不会写', battle).ok, false);
});