|
|
@@ -448,5 +448,62 @@ console.log('\n【8】附件路径 → c_image / c_file');
|
|
|
console.log(' (本节测试数据已清理)');
|
|
|
}
|
|
|
|
|
|
+// ── 9. 只要对话就建行(用户 2026-09-23 决定,推翻 2026-09-18「访客不建行」)──
|
|
|
+console.log('\n【9】未登录 + 无企业信息:也要在 1887 建行');
|
|
|
+{
|
|
|
+ const SID11 = `verify_onlychat_${Date.now().toString(36)}`;
|
|
|
+ const sessionRowOf = async (sid) =>
|
|
|
+ (
|
|
|
+ await searchDmsContents(DMS_COLUMN_SESSION, {
|
|
|
+ search: [{ field: 'c_session_id', searchType: 1, content: { value: sid } }],
|
|
|
+ page: 0,
|
|
|
+ pageSize: 5,
|
|
|
+ })
|
|
|
+ )[0];
|
|
|
+
|
|
|
+ enterpriseInfo.value = null; // 未登录
|
|
|
+ await upsertDmsSession({ sessionId: SID11, sessionTitle: '随手一问' });
|
|
|
+ const row = await sessionRowOf(SID11);
|
|
|
+
|
|
|
+ check('**建了行**(此前这里直接 return,不建)', !!row, JSON.stringify(row && Object.keys(row).slice(0, 5)));
|
|
|
+ if (row) {
|
|
|
+ check('c_is_login = "0"', row.c_is_login === '0', JSON.stringify(row.c_is_login));
|
|
|
+ check('c_ip 存的是真实 IP(脚本里打桩成 203.0.113.9)', row.c_ip === STUB_IP, JSON.stringify(row.c_ip));
|
|
|
+ check('**c_credit_code 留空**(用户 2026-09-23 明确:不写访客标签)',
|
|
|
+ !String(row.c_credit_code ?? '').trim(), JSON.stringify(row.c_credit_code));
|
|
|
+ check('企业名称 / 企业图片留空', !String(row.c_ent_name ?? '').trim() && !String(row.c_ent_image_url ?? '').trim(),
|
|
|
+ JSON.stringify([row.c_ent_name, row.c_ent_image_url]));
|
|
|
+ check('系统 title = 会话标题', row.title === '随手一问', JSON.stringify(row.title));
|
|
|
+ check('必填运营位:summary 空串 + 三个布尔 false(空值兜底,不猜业务值)',
|
|
|
+ !String(row.summary ?? '').trim() && row.qpyszx === false && row.qyzt === false && row.rzqpyx === false,
|
|
|
+ JSON.stringify([row.summary, row.qpyszx, row.qyzt, row.rzqpyx]));
|
|
|
+ check('不碰运营分析回填列(c_title / c_description 仍空)',
|
|
|
+ !String(row.c_title ?? '').trim() && !String(row.c_description ?? '').trim(),
|
|
|
+ JSON.stringify([row.c_title, row.c_description]));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 幂等:再写一次仍是同一行(不能每轮多一行)
|
|
|
+ await upsertDmsSession({ sessionId: SID11, sessionTitle: '随手一问' });
|
|
|
+ const rows = await searchDmsContents(DMS_COLUMN_SESSION, {
|
|
|
+ search: [{ field: 'c_session_id', searchType: 1, content: { value: SID11 } }],
|
|
|
+ page: 0,
|
|
|
+ pageSize: 5,
|
|
|
+ });
|
|
|
+ check('重复 upsert 仍只有一行(幂等键 c_session_id)', rows.length === 1, `实际 ${rows.length} 行`);
|
|
|
+
|
|
|
+ // 后续轮次带回企业信息时,这个"纯访客行"要能跟着被填上(别因为先建了行就写不进去)
|
|
|
+ await upsertDmsSession({
|
|
|
+ sessionId: SID11,
|
|
|
+ sessionTitle: '随手一问',
|
|
|
+ companyInfo: { company: { Name: '戊测试公司', CreditCode: '91310000EEEEEEEEEE' } },
|
|
|
+ });
|
|
|
+ const filled = await sessionRowOf(SID11);
|
|
|
+ check('后续轮次带回企业信息 → 企业名称被填上', filled?.c_ent_name === '戊测试公司', JSON.stringify(filled?.c_ent_name));
|
|
|
+ check('后续轮次带回企业信息 → 信用代码被填上', filled?.c_credit_code === '91310000EEEEEEEEEE', JSON.stringify(filled?.c_credit_code));
|
|
|
+
|
|
|
+ await deleteDmsSession(SID11);
|
|
|
+ console.log(' (本节测试数据已清理)');
|
|
|
+}
|
|
|
+
|
|
|
console.log(`\n===== 通过 ${pass} 项,失败 ${fail} 项 =====`);
|
|
|
process.exit(fail ? 1 : 0);
|