gengxin
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
module.exports = [
|
||||
{
|
||||
id: 'tang-shouan',
|
||||
name: '唐守安',
|
||||
title: '唐侦探/唐大夫',
|
||||
eras: '1978—2026',
|
||||
asset: '/assets/characters/tang-shouan.jpg',
|
||||
role: '从厂卫生员到受邻里敬重的中医从业者;始终先观察、后开口,最后才真正入席。',
|
||||
visual: '素色深靛蓝日常外套,旧棕布卫生包只暗示家学,不画成古装神医。',
|
||||
},
|
||||
{
|
||||
id: 'qin-zhicheng',
|
||||
name: '秦志成',
|
||||
title: '秦师傅',
|
||||
eras: '1978—2026',
|
||||
asset: '/assets/characters/qin-zhicheng.jpg',
|
||||
role: '从集体食堂小炊事员到桂香饭店老师傅,第十五桌的留下、挪走和回来都经过他的手。',
|
||||
visual: '宽头、粗颈、宽肩、厚实前臂;中式粗棉厨工褂、白围裙和低矮布帽。',
|
||||
},
|
||||
{
|
||||
id: 'lin-xiulan',
|
||||
name: '林秀兰',
|
||||
title: '票夹保管人',
|
||||
eras: '1978—2026',
|
||||
asset: '/assets/characters/lin-xiulan.jpg',
|
||||
role: '守住饭票、账本和钥匙,也守住每个人把旧事慢慢讲清楚的权利。',
|
||||
visual: '枣红或深棕工作外套;用动作摆事实,不竖指训人。',
|
||||
},
|
||||
{
|
||||
id: 'zhao-jianguo',
|
||||
name: '赵建国',
|
||||
title: '赵伯/劳动骨干',
|
||||
eras: '1978—2026',
|
||||
asset: '/assets/characters/zhao-jianguo.jpg',
|
||||
role: '年轻时把饭量当本事,后来学会不拿“为你好”替别人作决定。',
|
||||
visual: '青年工装结实,老年深蓝便帽、盖碗茶;豪爽但不被画成莽汉或病号。',
|
||||
},
|
||||
{
|
||||
id: 'tang-mingyuan',
|
||||
name: '唐明远',
|
||||
title: '中年家人',
|
||||
eras: '1995—2026',
|
||||
asset: '/assets/characters/tang-mingyuan.jpg',
|
||||
role: '唐守安之子、乐乐之父,用久坐、应酬、晚吃饭和家庭责任接住现代中年人的困境。',
|
||||
visual: '随年代逐渐出现腰腹与颈围变化;发福是生活轨迹,不作笑料或疾病诊断。',
|
||||
},
|
||||
{
|
||||
id: 'qin-xiaoman',
|
||||
name: '秦小满',
|
||||
title: '饭店经营者',
|
||||
eras: '2026',
|
||||
asset: '/assets/characters/qin-xiaoman.jpg',
|
||||
role: '把祖辈想留人的心意,转成纸单点餐、可选择份量和真实可用的座位。',
|
||||
visual: '简洁现代中式工作装,软尺、纸质座位单和调台记录随身。',
|
||||
},
|
||||
{
|
||||
id: 'lele',
|
||||
name: '乐乐',
|
||||
title: '会直问的小孙子',
|
||||
eras: '2026',
|
||||
asset: '/assets/characters/lele.jpg',
|
||||
role: '从儿童视角照见大人的生活习惯;教育对象是家庭环境,不把责任推给孩子。',
|
||||
visual: '圆润、活泼、讨人喜欢;不贴疾病、懒惰或减重标签。',
|
||||
},
|
||||
{
|
||||
id: 'xiaozhen',
|
||||
name: '小甄',
|
||||
title: '甄养堂健康客服',
|
||||
eras: '2026',
|
||||
asset: '/assets/characters/xiaozhen.jpg',
|
||||
role: '负责画外引导和知识回顾;需要时提醒联系专业医护,不替医生调整治疗。',
|
||||
visual: '灰绿色开衫、白衬衫、低马尾与记录夹;不作广告式主角。',
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,25 @@
|
||||
const chapterTitles = [
|
||||
['2026', '开席前,少了一张桌'],
|
||||
['2026 → 1978', '铜牌背后的两张旧票'],
|
||||
['1978', '厂铃一响,饭盆就响'],
|
||||
['1978', '劳动骨干的第三碗饭'],
|
||||
['1978', '第十五桌给谁留'],
|
||||
['1993—1995', '木牌翻面的那一天'],
|
||||
['1995', '桂香饭馆开张'],
|
||||
['1998', '四凉八热才叫客气'],
|
||||
['2001', '一杯酒绕了三圈'],
|
||||
['2003', '后厨里的员工桌'],
|
||||
['2008', '旧房子要拆了'],
|
||||
['2026', '扫码点出一整桌'],
|
||||
['2026', '三代人都说“我是为你好”'],
|
||||
['2026', '秦师傅最后一道老菜'],
|
||||
['2026', '第十五桌重新开席'],
|
||||
]
|
||||
|
||||
module.exports = chapterTitles.map(([year, title], index) => ({
|
||||
number: index + 1,
|
||||
chapterId: `S01-C${String(index + 1).padStart(2, '0')}`,
|
||||
year,
|
||||
title,
|
||||
audioStatus: index === 0 ? 'audition' : 'reserved',
|
||||
}))
|
||||
@@ -0,0 +1,246 @@
|
||||
// Compact, main-package registry for the personal storybook.
|
||||
// The wording mirrors each chapter's reviewed memory page. Keep this file free
|
||||
// of gameplay logic so old collections can be restored without loading a game
|
||||
// subpackage.
|
||||
module.exports = [
|
||||
{
|
||||
cardId: 'S01-C01-MC01',
|
||||
reportId: 'S01-C01-RP01',
|
||||
chapterId: 'S01-C01',
|
||||
chapterNumber: 1,
|
||||
chapterTitle: '开席前,少了一张桌',
|
||||
characterName: '赵建国',
|
||||
eraLine: '2026 · 桂香大饭店宴会前厅',
|
||||
tableEcho: '空着的位置,不是少摆一张桌,是在等一个人被叫到名字。',
|
||||
lifeAction: '替家里人张罗之前,先问一句:“您想怎么来?”',
|
||||
observation: '替家人安排得再周到,也别忘了问他的意思。',
|
||||
familySupport: '先问赵伯想坐哪里,再一起安排座位。',
|
||||
todayAction: '替家里人张罗之前,先问一句:“您想怎么来?”',
|
||||
familyLine: '下回别急着替我安排,先叫我一起商量。',
|
||||
eraObject: '手写请柬与十五号旧铜牌',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C02-MC01',
|
||||
reportId: 'S01-C02-RP01',
|
||||
chapterId: 'S01-C02',
|
||||
chapterNumber: 2,
|
||||
chapterTitle: '铜牌背后的两张旧票',
|
||||
characterName: '林秀兰',
|
||||
eraLine: '2026 → 1978 · 桂香旧物展柜',
|
||||
tableEcho: '旧东西会认错,慢一点核对,人就不会被轻易抹掉。',
|
||||
lifeAction: '保留近照和尺寸,等待旧桌板出现。',
|
||||
observation: '旧物和旧话都可能记错,慢一点核对更稳妥。',
|
||||
familySupport: '听林秀兰把旧事说完,再一起找照片和尺寸。',
|
||||
todayAction: '保留近照和尺寸,等待旧桌板出现。',
|
||||
familyLine: '我说起旧事时,先让我慢慢说完;咱们再一起核对。',
|
||||
eraObject: '十五号铜牌与两枚破损饭菜票',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C03-MC01',
|
||||
reportId: 'S01-C03-RP01',
|
||||
chapterId: 'S01-C03',
|
||||
chapterNumber: 3,
|
||||
chapterTitle: '厂铃一响,饭盆就响',
|
||||
characterName: '唐守安',
|
||||
eraLine: '1978 · 桂香机械厂集体食堂',
|
||||
tableEcho: '看见一个人,不只看他能干多少,也问他累不累。',
|
||||
lifeAction: '进食前按条件把手清洁并擦干',
|
||||
observation: '忙着干活的人,也需要被问一句累不累。',
|
||||
familySupport: '开饭前互相提醒洗手,也问问今天累不累。',
|
||||
todayAction: '进食前按条件把手清洁并擦干',
|
||||
familyLine: '回家聊一聊:你想怎样给这个不起眼的小唐留一点位置?',
|
||||
eraObject: '饭票与搪瓷饭盒',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C04-MC01',
|
||||
reportId: 'S01-C04-RP01',
|
||||
chapterId: 'S01-C04',
|
||||
chapterNumber: 4,
|
||||
chapterTitle: '劳动骨干的第三碗饭',
|
||||
characterName: '赵建国',
|
||||
eraLine: '1978 · 桂香机械厂集体食堂',
|
||||
tableEcho: '饭能添,面子也要留;劝人停一停,先给他一张凳。',
|
||||
lifeAction: '停止继续添饭,先坐下休息并说出不适;必要时停止工作并求助。',
|
||||
observation: '劝人少添一碗,先留住他的体面和座位。',
|
||||
familySupport: '发现他不舒服,先让他坐下,再一起想办法。',
|
||||
todayAction: '停止继续添饭,先坐下休息并说出不适;必要时停止工作并求助。',
|
||||
familyLine: '下回我嘴硬时,先给我拉把凳子。',
|
||||
eraObject: '铝饭勺与长条凳',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C05-MC01',
|
||||
reportId: 'S01-C05-RP01',
|
||||
chapterId: 'S01-C05',
|
||||
chapterNumber: 5,
|
||||
chapterTitle: '第十五桌给谁留',
|
||||
characterName: '秦志成',
|
||||
eraLine: '1978 · 熄灯后的桂香食堂',
|
||||
tableEcho: '有人为晚归的人留了一盏灯。',
|
||||
lifeAction: '尽快说明情况,按单位安排和个人需要解决进食',
|
||||
observation: '晚归的人需要的不只是一口热饭,还有一个位置。',
|
||||
familySupport: '家里有人晚归,留句消息,也留一份合适的饭。',
|
||||
todayAction: '尽快说明情况,按单位安排和个人需要解决进食',
|
||||
familyLine: '回家聊一聊:你想和秦师傅一起,为这张桌留下些什么?',
|
||||
eraObject: '第十五桌木牌与留饭灯',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C06-MC01',
|
||||
reportId: 'S01-C06-RP01',
|
||||
chapterId: 'S01-C06',
|
||||
chapterNumber: 6,
|
||||
chapterTitle: '木牌翻面的那一天',
|
||||
characterName: '秦志成',
|
||||
eraLine: '1995 · 从厂食堂改成的桂香饭馆',
|
||||
tableEcho: '门牌可以翻面,留给人的座位不能翻没。',
|
||||
lifeAction: '同时查看合同期限和资产清单',
|
||||
observation: '生意往前走,人情和规矩也要一起留下。',
|
||||
familySupport: '谈变化时,把期限、物件和家人的意见都摆明白。',
|
||||
todayAction: '同时查看合同期限和资产清单',
|
||||
familyLine: '回家聊一聊:饭馆要往前走,第十五桌怎样继续留下来?',
|
||||
eraObject: '翻面木牌与承包合同',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C07-MC01',
|
||||
reportId: 'S01-C07-RP01',
|
||||
chapterId: 'S01-C07',
|
||||
chapterNumber: 7,
|
||||
chapterTitle: '桂香饭馆开张',
|
||||
characterName: '唐明远',
|
||||
eraLine: '1995 · 开张后的桂香饭馆',
|
||||
tableEcho: '问出口的关心,要等到对方把话说完。',
|
||||
lifeAction: '一开始少盛,不够再添',
|
||||
observation: '问了“吃不吃”,也要等对方把话说完。',
|
||||
familySupport: '盛饭前先少一点,问清楚不够再添。',
|
||||
todayAction: '一开始少盛,不够再添',
|
||||
familyLine: '回家聊一聊:你愿意怎样把这句话接下去?',
|
||||
eraObject: '手写菜单与现金盒',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C08-MC01',
|
||||
reportId: 'S01-C08-RP01',
|
||||
chapterId: 'S01-C08',
|
||||
chapterNumber: 8,
|
||||
chapterTitle: '四凉八热才叫客气',
|
||||
characterName: '女炊事员',
|
||||
eraLine: '1998 · 桂香饭馆第一场大婚宴',
|
||||
tableEcho: '热闹照得到客人,也该照得到端菜的人。',
|
||||
lifeAction: '按人数、份量和菜品结构确认是否足够',
|
||||
observation: '热闹席面里,忙着端菜的人也值得被看见。',
|
||||
familySupport: '聚餐时问问照料大家的人有没有坐下吃饭。',
|
||||
todayAction: '按人数、份量和菜品结构确认是否足够',
|
||||
familyLine: '回家聊一聊:在最忙的时候,你想怎样让她知道自己没有被忘记?',
|
||||
eraObject: '红纸菜单与婚宴席单',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C09-MC01',
|
||||
reportId: 'S01-C09-RP01',
|
||||
chapterId: 'S01-C09',
|
||||
chapterNumber: 9,
|
||||
chapterTitle: '一杯酒绕了三圈',
|
||||
characterName: '赵建国',
|
||||
eraLine: '2001 · 桂香饭馆宴席',
|
||||
tableEcho: '照顾不是把人摘出去,是陪他把自己的选择说出来。',
|
||||
lifeAction: '明确告诉同桌自己要开车,直接换成茶或白水',
|
||||
observation: '照顾不是替他决定,而是让他把选择说出来。',
|
||||
familySupport: '不劝酒、不起哄,给赵伯茶或白水,也留住座位。',
|
||||
todayAction: '明确告诉同桌自己要开车,直接换成茶或白水',
|
||||
familyLine: '回家聊一聊:你愿意怎样让赵伯先说出自己的担心?',
|
||||
eraObject: '茶杯与小酒盅',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C10-MC01',
|
||||
reportId: 'S01-C10-RP01',
|
||||
chapterId: 'S01-C10',
|
||||
chapterNumber: 10,
|
||||
chapterTitle: '后厨里的员工桌',
|
||||
characterName: '唐明远',
|
||||
eraLine: '2003 · 桂香饭馆后厨',
|
||||
tableEcho: '桌上腾不出一只碗,忙碌就已经挤到人身上了。',
|
||||
lifeAction: '清出座位并排出轮班,让员工坐下完成一餐',
|
||||
observation: '忙到没地方坐下吃饭,已经不是小事。',
|
||||
familySupport: '一家人再忙,也给吃饭留出座位和时间。',
|
||||
todayAction: '清出座位并排出轮班,让员工坐下完成一餐',
|
||||
familyLine: '回家聊一聊:你想怎样帮他把这一顿饭重新放回生活里?',
|
||||
eraObject: '员工饭盒与后厨长桌',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C11-MC01',
|
||||
reportId: 'S01-C11-RP01',
|
||||
chapterId: 'S01-C11',
|
||||
chapterNumber: 11,
|
||||
chapterTitle: '旧房子要拆了',
|
||||
characterName: '秦志成',
|
||||
eraLine: '2008 · 翻建前的桂香旧房',
|
||||
tableEcho: '东西收进柜里叫保存,规矩留在人间才叫传下去。',
|
||||
lifeAction: '把理念落实到座位、菜单和服务动作',
|
||||
observation: '旧物保存下来,照顾人的规矩更要继续做。',
|
||||
familySupport: '把好意写成全家都能做到的小规矩。',
|
||||
todayAction: '把理念落实到座位、菜单和服务动作',
|
||||
familyLine: '回家聊一聊:除了保存旧物,你想请秦师傅再留下些什么?',
|
||||
eraObject: '旧桌板与暗红铁包边',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C12-MC01',
|
||||
reportId: 'S01-C12-RP01',
|
||||
chapterId: 'S01-C12',
|
||||
chapterNumber: 12,
|
||||
chapterTitle: '扫码点出一整桌',
|
||||
characterName: '赵建国',
|
||||
eraLine: '2026 · 重聚宴服务台与餐桌',
|
||||
tableEcho: '让人看懂、让人开口,才算把选择递到手里。',
|
||||
lifeAction: '为每项证据拍照并记录来源',
|
||||
observation: '信息看得懂、话说得出,选择才真正回到自己手里。',
|
||||
familySupport: '点餐时放慢一点,陪着看,不替老人直接下单。',
|
||||
todayAction: '为每项证据拍照并记录来源',
|
||||
familyLine: '回家聊一聊:信息都在了,最后一步怎样交还给赵伯?',
|
||||
eraObject: '手机点餐页与纸菜单',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C13-MC01',
|
||||
reportId: 'S01-C13-RP01',
|
||||
chapterId: 'S01-C13',
|
||||
chapterNumber: 13,
|
||||
chapterTitle: '三代人都说“我是为你好”',
|
||||
characterName: '乐乐',
|
||||
eraLine: '2026 · 重聚宴共同桌与侧桌',
|
||||
tableEcho: '这一次,大人终于听孩子把话说完。',
|
||||
lifeAction: '先介绍菜,让乐乐自己夹',
|
||||
observation: '关心孩子,也要先让孩子说出自己的感受。',
|
||||
familySupport: '介绍菜以后,先问乐乐想吃什么、想吃多少。',
|
||||
todayAction: '先介绍菜,让乐乐自己夹',
|
||||
familyLine: '回家聊一聊:这一回,家里人怎样让乐乐自己选?',
|
||||
eraObject: '公筷与儿童小碗',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C14-MC01',
|
||||
reportId: 'S01-C14-RP01',
|
||||
chapterId: 'S01-C14',
|
||||
chapterNumber: 14,
|
||||
chapterTitle: '秦师傅最后一道老菜',
|
||||
characterName: '唐守安',
|
||||
eraLine: '2026 · 重聚宴主桌',
|
||||
tableEcho: '会解决问题的人,也可以学着先听一会儿。',
|
||||
lifeAction: '只介绍食材、做法和份量信息',
|
||||
observation: '会给办法之前,先听完一句话。',
|
||||
familySupport: '家人开口时先不打断,听完再一起商量。',
|
||||
todayAction: '只介绍食材、做法和份量信息',
|
||||
familyLine: '回家聊一聊:唐守安怎样让儿子把那句旧话真正说完?',
|
||||
eraObject: '秦师傅的手写老菜谱',
|
||||
},
|
||||
{
|
||||
cardId: 'S01-C15-MC01',
|
||||
reportId: 'S01-C15-RP01',
|
||||
chapterId: 'S01-C15',
|
||||
chapterNumber: 15,
|
||||
chapterTitle: '第十五桌重新开席',
|
||||
characterName: '老吕',
|
||||
eraLine: '2026 · 桂香大饭店原址',
|
||||
tableEcho: '桌子回来了,人也都坐回来了。',
|
||||
lifeAction: '点餐前先看份量和人数',
|
||||
observation: '桌子回来只是开始,重要的是每个人都坐得自在。',
|
||||
familySupport: '点菜前先问人数、份量和每个人的想法。',
|
||||
todayAction: '点餐前先看份量和人数',
|
||||
familyLine: '回家聊一聊:这只旧碗怎样留在今天的第十五桌边?',
|
||||
eraObject: '缺口搪瓷碗与第十五桌铜牌',
|
||||
},
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* This is the in-app build identity, not the version entered in WeChat
|
||||
* Developer Tools during upload. Keep semanticVersion aligned with the root
|
||||
* package.json so support screenshots can be traced back to source.
|
||||
*/
|
||||
module.exports = Object.freeze({
|
||||
productName: '唐侦探:桂香里的第十五桌',
|
||||
semanticVersion: '0.1.0',
|
||||
releaseChannel: 'release-candidate',
|
||||
contentVersion: 'season-01',
|
||||
})
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user