From 8837a0e573a0140a40a6136b8e7c70a3dcdd95f2 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Tue, 11 Aug 2026 18:11:32 +0800 Subject: [PATCH] feat: add target user portrait step --- src/api/studentTrainingAnswer.js | 19 +++++ src/views/demand/people.vue | 133 +++++++++++++++++++++++-------- 2 files changed, 119 insertions(+), 33 deletions(-) diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index b4643eb..c66568a 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -394,3 +394,22 @@ export function checkTargetUserProfileStepThree(payload) { headers: { repeatSubmit: false }, }); } + +export function checkTargetUserProfileStepFour(payload) { + const records = Array.isArray(payload?.records) ? payload.records : []; + const expectedCodes = ["U01", "U02", "U03"]; + if (isStudentDemo()) { + const codes = new Set(records.map((record) => record?.code)); + const incomplete = records.find((record) => ["user", "basicAttributes", "tags", "behavior", "painPoints", "psychology"].some((field) => !String(record?.[field] || "").trim())); + if (records.length !== expectedCodes.length || expectedCodes.some((code) => !codes.has(code)) || incomplete) { + return Promise.reject(new Error("请完成三位重点用户的完整画像")); + } + return Promise.resolve({ code: 200, data: { valid: true, message: "校验通过" } }); + } + return request({ + url: "/api/student-training-answers/target-user-profile/step-4/validate", + method: "post", + data: { records }, + headers: { repeatSubmit: false }, + }); +} diff --git a/src/views/demand/people.vue b/src/views/demand/people.vue index 1e06035..d05759f 100644 --- a/src/views/demand/people.vue +++ b/src/views/demand/people.vue @@ -160,35 +160,70 @@
-
-
-

结合上述分析,请说明如果你来开发相关的产品,计划设计那些核心功能,预计产品的价格区间是多少。

- -
计划设计的核心功能:
-