@@ -0,0 +1,33 @@
|
||||
// 临时诊断: 检查 News 表 content/summary 的换行与长度情况 (用完即删)
|
||||
require('dotenv').config()
|
||||
const mysql = require('mysql2/promise')
|
||||
|
||||
function parseUrl(url) {
|
||||
const u = new URL(url)
|
||||
return { host: u.hostname, port: Number(u.port) || 3306, user: decodeURIComponent(u.username), password: decodeURIComponent(u.password), database: u.pathname.replace(/^\//, '') }
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const conn = await mysql.createConnection(parseUrl(process.env.DATABASE_URL))
|
||||
const [rows] = await conn.execute(
|
||||
'SELECT id, title, summary, content, CHAR_LENGTH(content) AS clen, CHAR_LENGTH(summary) AS slen FROM `News` ORDER BY id DESC LIMIT 10'
|
||||
)
|
||||
console.log('总条数检查:')
|
||||
const [[cnt]] = await conn.execute('SELECT COUNT(*) AS c, SUM(content IS NULL) AS nullContent FROM `News`')
|
||||
console.log(JSON.stringify(cnt))
|
||||
for (const r of rows) {
|
||||
const content = r.content || ''
|
||||
const summary = r.summary || ''
|
||||
const lf = (content.match(/\n/g) || []).length
|
||||
const cr = (content.match(/\r/g) || []).length
|
||||
const sLf = (summary.match(/\n/g) || []).length
|
||||
console.log('---')
|
||||
console.log('id=' + r.id + ' clen=' + r.clen + ' slen=' + r.slen + ' contentLF=' + lf + ' contentCR=' + cr + ' summaryLF=' + sLf)
|
||||
console.log('title: ' + r.title)
|
||||
console.log('summary: ' + JSON.stringify(summary.slice(0, 120)))
|
||||
console.log('content(hex首200): ' + content.slice(0, 200).replace(/[^\x20-\x7E\u4e00-\u9fa5]/g, (c) => '\\x' + c.charCodeAt(0).toString(16)))
|
||||
console.log('content(带转义首300): ' + JSON.stringify(content.slice(0, 300)))
|
||||
}
|
||||
await conn.end()
|
||||
}
|
||||
main().catch((e) => { console.error(e); process.exit(1) })
|
||||
@@ -55,6 +55,12 @@ function parseNewsSheet(sheet, impactBase = 0) {
|
||||
const publishedAt = parsePublishedAt(r[2])
|
||||
if (!publishedAt) continue
|
||||
const body = String(r[1] || '').trim()
|
||||
// 数据源段落间用全角空格连接, 入库前统一转成换行, 保证详情页有段落感
|
||||
.replace(/\u3000+/g, '\n')
|
||||
.replace(/\u00a0/g, ' ')
|
||||
.replace(/[ \t]+\n/g, '\n')
|
||||
.replace(/\n{3,}/g, '\n\n')
|
||||
.trim()
|
||||
out.push({
|
||||
title,
|
||||
summary: body.slice(0, 180),
|
||||
|
||||
Reference in New Issue
Block a user