57a9aadf53
Memind CI / Test, build, and release guards (push) Successful in 4m43s
- news002 image/structure audit no longer throws: prune empty sections and publish a best-effort page with a warning - WeChat push strips images that failed to upload instead of refusing the draft - forceGenerateOnce is cleared before running, so a failed run cannot loop; the archived page is restored when generation fails - degraded-page regeneration runs at most once per day - content safety rules cover vulgar sexual terms and gossip/adult sites Co-authored-by: Cursor <cursoragent@cursor.com>
86 lines
4.8 KiB
JavaScript
86 lines
4.8 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import {
|
|
assessNewsSourceUrl,
|
|
classifyNewsSafetyText,
|
|
filterNewsSearchGroupsForSafety,
|
|
maskBlockedNewsTerms,
|
|
} from './news-content-safety-rules.mjs';
|
|
|
|
function levelOf(text, options) {
|
|
return classifyNewsSafetyText(text, options).level;
|
|
}
|
|
|
|
test('adult explicit content is blocked, sexual-crime news goes to review', () => {
|
|
assert.equal(levelOf('某平台被曝传播色情视频'), 'block');
|
|
assert.equal(levelOf('91每日大赛-今日吃瓜爆料资讯平台,热门黑料绯闻每日更新'), 'block');
|
|
assert.equal(levelOf('男子强奸案一审宣判,被判有期徒刑十年'), 'review');
|
|
assert.equal(levelOf('央行宣布下调存款准备金率 0.5 个百分点'), 'clean');
|
|
assert.equal(levelOf('AI短剧王鹤棣的3厘米鸡巴第1集 打玻尿酸坏死只剩3cm... | 海角网'), 'block');
|
|
assert.equal(levelOf('熟女 - 热门标签,每日更新最新内容'), 'block');
|
|
assert.equal(levelOf('51吃瓜 今日最新'), 'block');
|
|
assert.equal(assessNewsSourceUrl('https://www.haijiao.com/post/123').level, 'block');
|
|
assert.equal(assessNewsSourceUrl('https://heiliao.com/archives/1').level, 'block');
|
|
assert.equal(levelOf('海角七号重映,票房破亿'), 'clean');
|
|
});
|
|
|
|
test('common news phrases are not false positives', () => {
|
|
assert.equal(levelOf('商场国庆跳楼价大甩卖'), 'clean');
|
|
assert.equal(levelOf('今日露点温度 18℃,体感闷热'), 'clean');
|
|
assert.equal(levelOf('监管部门严查打擦边球的违规营销'), 'clean');
|
|
assert.equal(levelOf('小知识:恐龙是怎么死的?'), 'clean');
|
|
assert.equal(levelOf('高盛上调腾讯目标价至 600 港元'), 'clean');
|
|
});
|
|
|
|
test('minor harm, suicide and tragedy tone rules', () => {
|
|
assert.equal(levelOf('某地一名初中生坠楼身亡,警方介入调查'), 'review');
|
|
assert.equal(levelOf('网友分享自杀方法引发关注'), 'block');
|
|
assert.equal(levelOf('台风致 3 人遇难 😂'), 'block');
|
|
assert.equal(levelOf('台风致 3 人遇难,救援持续进行'), 'clean');
|
|
});
|
|
|
|
test('finance rules block stock tips and crypto promotion but review price news', () => {
|
|
assert.equal(levelOf('分析师荐股:这只股票明日涨停'), 'block');
|
|
assert.equal(levelOf('比特币暴涨,现在上车还来得及,注册返佣'), 'block');
|
|
assert.equal(levelOf('比特币价格暴涨突破 10 万美元'), 'review');
|
|
assert.equal(levelOf('多部门重申虚拟货币相关业务属于非法金融活动'), 'clean');
|
|
});
|
|
|
|
test('source provenance: non-news domains always blocked, self-media only for politics', () => {
|
|
assert.equal(assessNewsSourceUrl('https://m.ah.huatu.com/list/szrd/').level, 'block');
|
|
assert.equal(assessNewsSourceUrl('https://x.com/nasa/status/1', { political: true }).level, 'block');
|
|
assert.equal(assessNewsSourceUrl('https://x.com/nasa/status/1', { political: false }).level, 'clean');
|
|
assert.equal(assessNewsSourceUrl('https://m.sohu.com/a/123456_1', { political: true }).level, 'block');
|
|
assert.equal(assessNewsSourceUrl('https://www.news.cn/politics/20260923/abc.html', { political: true }).level, 'clean');
|
|
assert.equal(assessNewsSourceUrl('https://www.pornhub.com/view').level, 'block');
|
|
|
|
assert.equal(levelOf('外交部发言人就相关问题答记者问', { url: 'https://weibo.com/123' }), 'block');
|
|
assert.equal(levelOf('宇树科技冲刺 A 股 IPO', { url: 'https://www.toutiao.com/article/1/', sectionId: 'domestic' }), 'clean');
|
|
assert.equal(levelOf('央行存款新规落地', { url: 'https://www.toutiao.com/article/1/', sectionId: 'policy' }), 'block');
|
|
});
|
|
|
|
test('maskBlockedNewsTerms masks block-level terms only', () => {
|
|
const masked = maskBlockedNewsTerms('标签:色情网站, 荐股, 强奸案宣判');
|
|
assert.equal(masked.count, 2);
|
|
assert.doesNotMatch(masked.text, /色情网站|荐股/u);
|
|
assert.match(masked.text, /强奸案宣判/u);
|
|
});
|
|
|
|
test('filterNewsSearchGroupsForSafety drops blocked results and keeps review items', () => {
|
|
const { groups, removed } = filterNewsSearchGroupsForSafety([
|
|
{
|
|
id: 'domestic',
|
|
results: [
|
|
{ title: '『时事政治』2026年时事政治热点汇总', url: 'https://m.ah.huatu.com/list/szrd/', snippet: '' },
|
|
{ title: '初中生坠楼身亡,警方介入', url: 'https://www.thepaper.cn/newsDetail_1', snippet: '' },
|
|
{ title: '国产大飞机交付第 100 架', url: 'https://www.news.cn/a/1.html', snippet: '' },
|
|
],
|
|
},
|
|
{ id: 'culture', results: [{ title: '某明星出轨风波', url: 'https://ent.example.com/1', snippet: '' }] },
|
|
]);
|
|
assert.equal(removed.length, 2);
|
|
assert.deepEqual(groups[0].results.map((item) => item.title), ['初中生坠楼身亡,警方介入', '国产大飞机交付第 100 架']);
|
|
assert.equal(groups[1].results.length, 0);
|
|
});
|