diff --git a/assets/img/mom/k07.jpg b/assets/img/mom/k07.jpg new file mode 100644 index 0000000..269a928 Binary files /dev/null and b/assets/img/mom/k07.jpg differ diff --git a/assets/img/mom/k08.jpg b/assets/img/mom/k08.jpg new file mode 100644 index 0000000..f34e886 Binary files /dev/null and b/assets/img/mom/k08.jpg differ diff --git a/assets/img/mom/k09.jpg b/assets/img/mom/k09.jpg new file mode 100644 index 0000000..947f9f3 Binary files /dev/null and b/assets/img/mom/k09.jpg differ diff --git a/assets/img/mom/k10.jpg b/assets/img/mom/k10.jpg new file mode 100644 index 0000000..19490c4 Binary files /dev/null and b/assets/img/mom/k10.jpg differ diff --git a/assets/img/mom/k11.jpg b/assets/img/mom/k11.jpg new file mode 100644 index 0000000..5c84ac4 Binary files /dev/null and b/assets/img/mom/k11.jpg differ diff --git a/assets/img/mom/k12.jpg b/assets/img/mom/k12.jpg new file mode 100644 index 0000000..caa15d3 Binary files /dev/null and b/assets/img/mom/k12.jpg differ diff --git a/assets/img/mom/k13.jpg b/assets/img/mom/k13.jpg new file mode 100644 index 0000000..fe44223 Binary files /dev/null and b/assets/img/mom/k13.jpg differ diff --git a/assets/img/mom/m13.jpg b/assets/img/mom/m13.jpg new file mode 100644 index 0000000..8f07f19 Binary files /dev/null and b/assets/img/mom/m13.jpg differ diff --git a/assets/img/mom/m14.jpg b/assets/img/mom/m14.jpg new file mode 100644 index 0000000..cad946f Binary files /dev/null and b/assets/img/mom/m14.jpg differ diff --git a/assets/img/mom/m15.jpg b/assets/img/mom/m15.jpg new file mode 100644 index 0000000..c175051 Binary files /dev/null and b/assets/img/mom/m15.jpg differ diff --git a/assets/img/mom/m16.jpg b/assets/img/mom/m16.jpg new file mode 100644 index 0000000..38b04f4 Binary files /dev/null and b/assets/img/mom/m16.jpg differ diff --git a/assets/img/mom/m17.jpg b/assets/img/mom/m17.jpg new file mode 100644 index 0000000..0751684 Binary files /dev/null and b/assets/img/mom/m17.jpg differ diff --git a/assets/img/mom/m18.jpg b/assets/img/mom/m18.jpg new file mode 100644 index 0000000..98f1159 Binary files /dev/null and b/assets/img/mom/m18.jpg differ diff --git a/assets/img/mom/m19.jpg b/assets/img/mom/m19.jpg new file mode 100644 index 0000000..b684c95 Binary files /dev/null and b/assets/img/mom/m19.jpg differ diff --git a/assets/img/mom/m20.jpg b/assets/img/mom/m20.jpg new file mode 100644 index 0000000..23dbaa2 Binary files /dev/null and b/assets/img/mom/m20.jpg differ diff --git a/assets/img/mom/m21.jpg b/assets/img/mom/m21.jpg new file mode 100644 index 0000000..6820a67 Binary files /dev/null and b/assets/img/mom/m21.jpg differ diff --git a/assets/img/mom/m22.jpg b/assets/img/mom/m22.jpg new file mode 100644 index 0000000..9fabb57 Binary files /dev/null and b/assets/img/mom/m22.jpg differ diff --git a/assets/img/mom/s09.jpg b/assets/img/mom/s09.jpg new file mode 100644 index 0000000..34477cb Binary files /dev/null and b/assets/img/mom/s09.jpg differ diff --git a/assets/img/mom/s10.jpg b/assets/img/mom/s10.jpg new file mode 100644 index 0000000..7b9f579 Binary files /dev/null and b/assets/img/mom/s10.jpg differ diff --git a/index.html b/index.html index 9d21d73..d2025b2 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ 兜爸心选 · 孕育陪伴 - + diff --git a/js/app.js b/js/app.js index 3f5b17a..ed7b170 100644 --- a/js/app.js +++ b/js/app.js @@ -3,7 +3,7 @@ (function () { 'use strict'; /* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */ - var VER = '26101004'; + var VER = '26101005'; const $ = (s, c) => (c || document).querySelector(s); const $$ = (s, c) => Array.from((c || document).querySelectorAll(s)); @@ -3513,14 +3513,15 @@ function pulseIco(k, cls) { return '' + (PULSE_ICO[k] || PULSE_ICO.box) + ''; } - /* 「此刻」头像(2026-10-10 用户:「换成真实人物的,不要卡通」;同日二改:「别都用妈妈的大头贴, - 再换一些风景穿插着来,也可以放一部分小孩的、小宝宝的」)→ 26 张写实照片:妈妈 12(m*)、宝宝 6(k*)、风景 8(s*), - 按「妈妈为主、宝宝和风景穿插」排好,按 seed 取模。全部是 AI 生成的虚构画面,不对应任何真实用户、不是真人照片; - 96×96 JPG,共约 70KB,懒加载。原 SVG 卡通头像见 git 历史 v26101001。 */ - const MOM_AVA = ['m01', 'k01', 'm02', 's01', 'm03', 's02', 'm04', 'k02', 'm05', 's03', 'm06', 'k03', 'm07', 's04', 'm08', 's05', 'm09', 'k04', 'm10', 's06', 'm11', 'k05', 'm12', 's07', 's08', 'k06']; - function momAva(seed) { - return ''; - } + /* 「此刻」头像(2026-10-10 用户:「换成真实人物的,不要卡通」→ 同日二改:妈妈、宝宝、风景穿插 → + 同日三改:「上面那 8 个和下面一直轮换的头像不要有重叠,多准备一些」)。 + 45 张 AI 生成的写实照片(妈妈 m* / 宝宝 k* / 风景 s*),拆成两个**不相交**的池: + · AVA_TOP 16 张 → 上面叠着的 8 个(按孕周取连续 8 张,组内不重复); + · AVA_FEED 29 张 → 下面滚动动态,按行序依次取(一轮动态最多 20 条 < 29,不会撞)。 + 全部是 AI 虚构画面,不对应任何真实用户;96×96 JPG,懒加载。原 SVG 卡通头像见 git 历史 v26101001。 */ + const AVA_TOP = ['m01', 'k01', 'm02', 's02', 'm03', 'k04', 'm04', 's05', 'm05', 'k06', 'm06', 's09', 'm07', 'k10', 'm08', 's10']; + const AVA_FEED = ['m09', 'k02', 's01', 'm10', 'k03', 's03', 'm11', 'k05', 's04', 'm12', 'k07', 's06', 'm13', 'k08', 's07', 'm14', 'k09', 's08', 'm15', 'k11', 'm16', 'k12', 'm17', 'k13', 'm18', 'm19', 'm20', 'm21', 'm22']; + const avaImg = n => ''; const strSeed = t => { let x = 7; for (let i = 0; i < t.length; i++) x = (x * 31 + t.charCodeAt(i)) | 0; return Math.abs(x); }; /* 「此刻」重绘钩子:足迹 / 档案 / 盲盒状态回来时调用(它们决定「和你比」「今日待办」和孕周) */ let plHook = null; @@ -4092,7 +4093,7 @@ const t = String(f.text || ''), i = t.indexOf('的妈妈 '); const who = peerMode ? '同孕周妈妈' : (i > 0 ? t.slice(0, i + 3) : '一位妈妈'), what = i > 0 ? t.slice(i + 4) : t; const go = f.act && TODAY_GO[f.act] ? ' data-go="' + esc(f.act) + '"' : ''; - return '
' + momAva(strSeed(t + (f.ago || ''))) + '' + + return '
' + avaImg(AVA_FEED[(f._ava || 0) % AVA_FEED.length]) + '' + /* 同周版标题已经说了「和你同一周」,行里不再重复「同孕周妈妈」,省出地方给动作。 不显示「N 分钟前」:三行按工具错开排(见 paint),时间会前后颠倒,又不能改接口给的时间 */ (peerMode ? '' : '' + esc(who) + '') + '' + @@ -4122,7 +4123,9 @@ if (avs.dataset.seed === String(seed)) return; avs.dataset.seed = seed; /* 2026-10-02 用户:「头像现在展示 3 个,给我展示 6 到 8 个」→ 7 个 */ - avs.innerHTML = [3, 10, 7, 0, 5, 9, 1].map(x => '' + momAva(x + seed) + '').join(''); // 7 个按 26 取模互不相同,叠在一起不重复 + /* 2026-10-10 用户说「那 8 个」→ 8 个。按孕周轮换起点连续取 8 张:16 张的池子组内必不重复,也不和下面动态共用 */ + const st = (Math.abs(seed | 0) * 8) % AVA_TOP.length; + avs.innerHTML = Array.from({ length: 8 }, (_, k) => '' + avaImg(AVA_TOP[(st + k) % AVA_TOP.length]) + '').join(''); } function paintPeer(p) { paintAvs(p.week); @@ -4179,6 +4182,9 @@ const k = pool.findIndex(x => recent.indexOf(x.act) < 0); mix.push(pool.splice(k < 0 ? 0 : k, 1)[0]); } + /* 头像按行序依次分配(不再按文案哈希):相邻几行、同一轮里都不会出现同一张 */ + const a0 = strSeed(sig) % AVA_FEED.length; + mix.forEach((x, k) => { x._ava = a0 + k; }); feed = mix; fi = 0; const tr = $('#plTrack');