This commit is contained in:
Ubuntu
2026-09-28 15:27:31 +08:00
parent 3d32434d6f
commit 3de730a127
6 changed files with 1408 additions and 32 deletions
+18 -9
View File
@@ -708,8 +708,15 @@
photos = photosByView(photos);
openOverlay('p-analyzing');
voice.play(VOICE.analyzing); // 「正在生成您的肌肤报告」
// 档案与检测一起上报(后台记录用):年龄非法值服务端按 null 处理
var profile = {
age: +($('#f-age').value || 0) || null,
gender: $('#f-gender').value || '',
region: regionSel.value || '',
skinType: SKINS[skinIndex].name
};
var t0 = Date.now();
requestAnalyze(photos, seq, function (errMsg, payload) {
requestAnalyze(photos, seq, profile, function (errMsg, payload) {
if (seq !== camSeq) return; // 流程已被重置:丢弃
var wait = Math.max(0, 1200 - (Date.now() - t0)); // 分析中至少展示 1.2s,避免闪烁
setTimeout(function () {
@@ -725,12 +732,6 @@
return;
}
var vm = null;
var profile = {
age: +($('#f-age').value || 0) || null,
gender: $('#f-gender').value || '',
region: regionSel.value || '',
skinType: SKINS[skinIndex].name
};
try {
vm = SkinScore.buildViewModel(payload.result, payload.side, {
realAge: profile.age,
@@ -766,7 +767,7 @@
/* ─── 分析请求(mock=1 直返内置样本;有 MOCK_FIXTURE 时用报告页可视化 fixture,便于离线/自动化验证) ─── */
var ANALYZE_TIMEOUT_MS = 45000; // 检测服务超时阈值:超时按「开小差」处理回档案页
function requestAnalyze(ph, seq, done) {
function requestAnalyze(ph, seq, profile, done) {
if (IS_MOCK && typeof SkinScore !== 'undefined') {
setTimeout(function () {
if (seq !== camSeq) return; // mock 同样尊重取消/重置
@@ -786,7 +787,15 @@
fetch('/api/skin-analyze', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ front_image: ph[0], left_image: ph[1], right_image: ph[2] }),
body: JSON.stringify({
front_image: ph[0], left_image: ph[1], right_image: ph[2],
profile: { // 档案随检测上报,后台记录用(服务端缺省 null)
real_age: profile && profile.age,
gender: profile && profile.gender,
region: profile && profile.region,
daily_skin_type: profile && profile.skinType
}
}),
signal: ctrl ? ctrl.signal : undefined // 老内核无 AbortController:仅靠令牌丢弃迟到响应
}).then(function (res) { return res.json(); })
.then(function (data) {