| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| cli | ||
| common | ||
| config | ||
| modules | ||
| openapi | ||
| prisma | ||
| queues | ||
| redis | ||
| types | ||
| app.module.ts | ||
| health.controller.ts | ||
| instrument.ts | ||
| main.ts |
真实数据打脸:首轮导入 2552 条回访后,有 1 条落库仍是 "<p>阿斯蒂芬撒的发生</p>"。 查源库(customer_return_visit id=266151)发现是**双重编码**: <p><span style="color:#000000">…<p>阿斯蒂芬撒的发生</p>…</span></p> 外层是真标签,内层是被转义的标签。 原实现「剥标签 → 还原实体」跑一轮:外层剥掉后,<p> 被还原成字面的 <p> 留在结果里。 算子逻辑本身没错(单次剥离),但真实数据证明必须处理这种形态 —— 宿主富文本编辑器 把粘贴进来的 HTML 又转义了一层。 改成**有界两轮**:还原实体后若又出现标签则再剥一轮,最多 2 轮。 不做无界循环 —— 构造输入(每轮都能再生标签,如 &lt;p&gt;)会把摄入卡死, 两轮后仍有残留是可接受的,关键是必然终止。第 2 轮只在确实又露出标签时才跑, 绝大多数行一轮即净,无谓开销为零。 回归测试 2 项:线上那条原文按原样断言;畸形嵌套输入断言必然返回(不卡死)。
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| cli | Loading commit data... | |
| common | Loading commit data... | |
| config | Loading commit data... | |
| modules | Loading commit data... | |
| openapi | Loading commit data... | |
| prisma | Loading commit data... | |
| queues | Loading commit data... | |
| redis | Loading commit data... | |
| types | Loading commit data... | |
| app.module.ts | Loading commit data... | |
| health.controller.ts | Loading commit data... | |
| instrument.ts | Loading commit data... | |
| main.ts | Loading commit data... |