import assert from "node:assert/strict"; import test from "node:test"; import { actionNeedsNarrative, parseNarrativeSummary, parseTaskActionStructure, taskActionStructureLines, } from "./task-deeplink"; test("purpose 或 actor 为 null 时需要传播网简介", () => { const missingPurpose = parseTaskActionStructure( { state: 200, msg: "操作成功", data: { actionId: "9", purpose: null, actor: "媒体", expectedBehavior: "转发", drivingFactor: "认同", narrationList: ["叙事01", "叙事02"], }, }, "9", ); assert.equal(missingPurpose?.purpose, null); assert.equal(missingPurpose?.actor, "媒体"); assert.equal(actionNeedsNarrative(missingPurpose), true); assert.equal(missingPurpose?.narration, "叙事01;叙事02"); const bothPresent = parseTaskActionStructure( { state: 200, data: { purpose: "扩大影响", actor: "媒体", narrationList: [] }, }, "9", ); assert.equal(actionNeedsNarrative(bothPresent), false); }); test("目的和行为体等字段为 null 时不写入用户消息", () => { const detail = parseTaskActionStructure( { state: 200, data: { actionId: "9", purpose: null, actor: null, expectedBehavior: null, drivingFactor: null, narrationList: null, }, }, "9", ); assert.ok(detail); detail.narrativeSummary = "这条传播网主要讨论暑期文旅。"; assert.deepEqual(taskActionStructureLines(detail), ["传播网简介:这条传播网主要讨论暑期文旅。"]); }); test("传播网简介拼进用户消息,空简介不占行", () => { const summary = parseNarrativeSummary({ state: "200", msg: "操作成功", data: { summary: "这条传播网主要讨论暑期文旅。" }, }); assert.equal(summary, "这条传播网主要讨论暑期文旅。"); const lines = taskActionStructureLines({ actionId: "9", purpose: null, actor: "媒体", expectedBehavior: "", drivingFactor: "", narration: "", narrativeSummary: summary, }); assert.deepEqual(lines, ["行为体:媒体", "传播网简介:这条传播网主要讨论暑期文旅。"]); });