🏛️ 领域模型与实体关系全景 (Entity-Relationship Topology)
6 大核心实体系统以 StudentProfile 为静态主数据核心,通过日期组合键驱动 StudentDailyLog 动态日常事件流,解耦支持 HomeworkItem(分学段多任务批改)、BillingRecord(按餐自动计费与审核)、ScheduleEngine(跨校接娃波次冲突检测)与 ScoreEngine(可插拔成长战力计算)。
${studentId}_${dateStr}。记录接娃到店留影凭证、晚餐考勤、各科多项作业批改、高清卷面图及离店交接。
🗺️ 各实体数据逻辑关系图 (Entity Relationship & Data Flow Architecture)
高保真矢量拓扑下图完整展现了「楠溪托管」系统各核心实体间的主外键关联(1:N)、一孩一码隐私隔离映射(1:1)、科目与多任务层级分解(1:4 ➔ 1:N)、每日考勤聚合计费流(DailyLog ➔ BillingRecord)以及机构全套主数据库的全局赋能路径。
📊 实体间关系基数与业务流转矩阵 (Cardinality & Semantic Rules)
| 源实体 (Source) | 基数 | 目标实体 (Target) | 物理关联键 (Foreign Key / Token) | 业务流转语义与约束规则 (Business Semantics) | 级联与同步行为 (Cascade) |
|---|---|---|---|---|---|
| StudentProfile | 1 : N | StudentDailyLog | studentId (主键复合日期) |
每位学生每天对应一条唯一在托日志,记录到店、留影、就餐、作业及放学轨迹。 | 学生停用或删除时,对应历史每日日志予以归档。 |
| StudentProfile | 1 : N | BillingRecord | studentId + weekKey |
每位学生在每个自然周仅对应生成一张周就餐账单。 | 随每周出勤自动聚合餐费,支持人工核减。 |
| StudentProfile | 1 : 1 | ParentSession | accessCode (如 NX8812) |
一孩一码专属访问凭证。前端 DOM 与数据层进行单向绑定,杜绝全员下拉泄露。 | 专属码重置后,原设备会话即刻失效。 |
| StudentDailyLog | 1 : 4 ➔ N | HomeworkItem | dailyLog.homework[subj].items |
包含语、数、英、课外 4 大科目,每科维护独立多项作业任务流(状态、分数、错题)。 | 保存每日日志时,单项标题、状态与批注原子化同步更新。 |
| StudentDailyLog | N : 1 | BillingRecord | log.hasDinner === true 聚合 |
系统每周五遍历当周所有日常日志中勾选晚托就餐的天数,自动换算应收总餐费。 | 日志就餐勾选变更时,账单草稿可点击“重新自动核算”。 |
| BillingRecord | 状态机门禁 | ParentPortal | status === 'published' |
遵循机构财务保密原则。状态为 draft 或 reviewed 时对家长物理隐藏。 |
管理员点击“审核通过并推送”后,瞬间推至家长端。 |
| StudentProfile (Peer) | 同班映射 | StudentProfile | school + class |
系统自动感知同校同班同学(如张明轩 ⇋ 冯梓轩),驱动「📋 引用同班作业」。 | 单人录入作业后,同班同学卡片顶部自动亮起引用按钮。 |
| MasterData | 全局注入 | 全系统业务流 | CONFIG.MASTER_DATA |
预置南京重点小学名录、班级联动、评语库、未完成交代库及通告模版,支撑全流程免手打。 | 机构主数据中心修改后,全系统点选选项即刻生效。 |
👥 学员与家庭档案实体字典 (StudentProfile)
存储键: nx_care_students每位入托学生建档的核心实体。支持完整 CRUD 操作,包含家庭详细联系方式、接送人白名单及周一至周五精细放学课表。
| 字段名称 (Field) | 类型 (Type) | 必填 | 默认值 | 约束与业务说明 (Constraints & Logic) | 示例数据 (Example) |
|---|---|---|---|---|---|
| id | String | 必填 | - | 主键 (PK),机构全局唯一。格式为 stu_XX 或时间戳后缀。主键 |
"stu_01" |
| name | String | 必填 | - | 学生姓名,2~5个字符。 | "张明轩" |
| gender | String | 可选 | "男" |
枚举值:'男' | '女'。 |
"男" |
| grade | Number | 必填 | 3 |
年级 (1~6)。决定了作业督查时的教材匹配阶段(低段1-2/中段3-4/高段5-6)。 学段映射 |
3 |
| school | String | 必填 | - | 所属小学。支持从 CONFIG.MASTER_DATA.schools 下拉点选或手动输入。 |
"南京师范大学附属小学" |
| class | String | 必填 | - | 班级。用于自动感知同校同班同学并支持「一键引用作业」。 | "三(2)班" |
| address | String | 可选 | "" |
家庭实际住址。用于晚托结束后安全就近护送与紧急家访。 | "南京市玄武区北京东路42号成贤公寓2幢301室" |
| parentName | String | 必填 | - | 家长称呼与姓名。支持通过气泡一键生成称谓(如“爸爸”、“妈妈”)。 | "张建国 (爸爸)" |
| phone | String | 必填 | - | 家长11位主联系手机号,点击可直接唤起系统电话拨打。 | "13851888001" |
| String | 可选 | "" |
家长微信号。便于私聊推送带Token的直达免密专属链接。 | "wxid_zhangjg_nj" |
|
| emergencyContact | String | 可选 | "" |
紧急备用联系人姓名与电话。主手机无人接听时使用。 | "明轩妈妈 13851888002" |
| authorizedPickups | Array<String> | 必填 | ['爸爸','妈妈'] |
正常接送人白名单。离店交接时优先渲染对应快捷确认按钮,防冒领。 安全白名单 |
["爸爸", "妈妈", "爷爷", "阿姨"] |
| schedule | Object | 必填 | {mon,tue,...} |
周一至周五放学时间表。包含放学时刻、接娃校门及社团延时备注。 冲突预警引擎 |
{ mon: { time: "15:30", gate: "南门", note: "常规放学" }, ... } |
| accessCode | String | 必填 | - | 家长端专属看护安全码 (NX+4位随机数)。系统进行一对一物理隔离核验。 物理隔离凭证 |
"NX8812" |
| stars | Number | 可选 | 20 |
累计获得成长小红星数量,用于折算排行榜战力得分。 | 28 |
| avatarBg | String | 可选 | "#2d5a43" |
学生头像背景色(16进制色值)。 | "#2d5a43" |
📅 每日在托日常日志实体字典 (StudentDailyLog)
存储键: nx_care_daily_logs
记录每位学生每一天的动态在托轨迹。字典存储格式为哈希表 { [studentId_dateStr]: StudentDailyLog },保证历史任意一天数据均可完整无损回溯。
| 字段名称 (Field) | 类型 (Type) | 必填 | 默认值 | 约束与业务说明 (Constraints & Logic) | 示例数据 (Example) |
|---|---|---|---|---|---|
| studentId | String | 必填 | - | 对应学员 ID,与日期拼合成复合主键 ${studentId}_${dateStr}。外键 |
"stu_01" |
| date | String | 必填 | - | 记录所在自然日期,标准 ISO 格式 YYYY-MM-DD。 |
"2026-10-02" |
| arrived | Boolean | 必填 | false |
接娃到店考勤标记。点击头像或拍照上传后自动置为 true。 |
true |
| arriveTime | String | 可选 | "" |
接娃抵达托管班具体时刻,格式 HH:mm。 |
"15:38" |
| arrivalPhoto | String | 可选 | "" |
接娃现场拍摄的安全留影凭证 Base64 Data URI。前端 Canvas 智能压缩至 150KB 以内。 接娃凭证 |
"data:image/jpeg;base64,..." |
| hasDinner | Boolean | 必填 | false |
晚托晚餐就餐出勤标记。作为周就餐账单智能核算的基准数据。 | true |
| dinnerTime | String | 可选 | "" |
晚餐就餐记录时刻,格式 HH:mm。 |
"17:35" |
| homework | Object | 必填 | {chinese,math,...} |
各科目作业多项任务结构体(包含语文、数学、英语、课外拓展四大领域)。详见下节。 | { chinese: { items: [...] }, ... } |
| photos | Array<String> | 可选 | [] |
老师批改作业拍摄的高清卷面留证照片 Base64 数组。支持家长端全屏灯箱放大。 | ["data:image/svg+xml;base64,..."] |
| teacherRemark | String | 可选 | "" |
阶段3老师全科总评寄语。支持点击常用寄语库一键装填与追加。 | "今日全天表现优异,字迹极其工整!奖励成长小红星⭐" |
| incompleteNote | String | 可选 | "" |
阶段3未完成项明确交代。系统自动检测未完成项目,支持从预设库一键选择。 | "英语Story time课文需回家继续朗读背诵熟练,明天到班抽查。" |
| homeworkIntakePushed | Boolean | 可选 | false |
阶段1作业清单是否已一键推送给家长。 | true |
| homeworkIntakePushTime | String | 可选 | "" |
阶段1作业清单推送时间戳,格式 HH:mm。 |
"15:52" |
| homeworkReportPushed | Boolean | 可选 | false |
阶段3全科批改终审报告是否已一键推送给家长。 | true |
| homeworkReportPushTime | String | 可选 | "" |
阶段3批改报告推送时间戳,格式 HH:mm。 |
"18:15" |
| left | Boolean | 必填 | false |
放学离店交接标记。 | true |
| leaveTime | String | 可选 | "" |
离店交接时刻,格式 HH:mm。 |
"18:30" |
| pickupPerson | String | 可选 | "" |
接走人员身份。来源于正常接送人白名单快捷点选或临时委托人登记。 | "爸爸接走" |
📝 分科目多项作业项结构字典 (HomeworkSubject & HomeworkItem)
层级结构: dailyLog.homework[subjectKey].items
作业督查核心模型。涵盖 chinese (统编语文)、math (苏教数学)、english (译林英语)、extra (课外拓展) 四大科目。每个科目均维护独立的 items: Array<HomeworkItem> 任务清单。
| 字段名称 (Field) | 类型 (Type) | 必填 | 可选值 / 枚举 (Enums / Values) | 业务逻辑与气泡点选规则 |
|---|---|---|---|---|
| id | String | 必填 | - | 单项作业唯一标识符,格式如 c_1 或 it_xyz_123。 |
| title | String | 必填 | - | 作业项目描述。可从分年级常用模板一键点选生成(如《补充习题》P38)。 |
| status | String | 必填 | 'not_started' | 'doing' | 'done' |
三态切换:⚪未做/未交 ➔ 🟡在做/在背 ➔ 🟢已改完。 打分后系统自动智能联动为 'done'。 |
| score | String | 可选 | '100分 ⭐', '98分', '95分', '90分', '85分', 'A+ 优', 'A 达标' |
快速评分量化气泡。老师手指单击一键打分,再次单击取消。 |
| errorCount | String | 可选 | '全对无错 ✓', '错1处(已订正)', '错2处(已订正)', '错3处(已指导重做)', '多处错误已辅导', '计算粗心已改', '字迹清秀工整' |
错题处数与订正状态气泡。点选后实时同步呈现在家长看板端。 |
| tags | Array<String> | 可选 | 苏教数学、译林英语、统编语文教材专属词典气泡 | 南京本地教材特色技能标签气泡(如“生字笔顺描红规范”、“Story time背诵过关”)。 |
| remark | String | 可选 | - | 该单项作业辅导批注(如:“第4题竖式已讲透”、“字迹工整”)。 |
🧾 就餐考勤周账单实体字典 (BillingRecord)
存储键: nx_care_billing_records遵循机构菜单保密与财务严谨管理原则。每周五系统自动归纳出勤晚餐数,核算应缴金额,经由老师/主管审核后方对外发布。
| 字段名称 (Field) | 类型 (Type) | 必填 | 默认值 | 业务逻辑与状态机说明 | 示例数据 (Example) |
|---|---|---|---|---|---|
| id | String | 必填 | - | 账单主键,格式为 bill_${weekKey}_${studentId}。主键 |
"bill_2026_w40_stu_01" |
| studentId | String | 必填 | - | 关联学生 ID。 | "stu_01" |
| studentName | String | 必填 | - | 学生姓名冗余快照,避免频繁跨表查询。 | "张明轩" |
| weekKey | String | 必填 | - | 账单所属自然周标识,格式 YYYY-Wxx。 |
"2026-W40" |
| mealCount | Number | 必填 | 0 |
该自然周内实际记录晚托就餐的总天数。 | 5 |
| unitPrice | Number | 必填 | 18 |
单餐餐标基准价(南京小微托管行业统一建议 ¥18/餐)。 | 18 |
| calculatedTotal | Number | 必填 | - | 系统根据 mealCount * unitPrice 自动计算出的原始金额。 |
90 |
| adjustedTotal | Number | 必填 | - | 经老师人工复核微调后的实际结算金额(支持核减事假病假)。 | 90 |
| deductionNote | String | 可选 | "" |
金额核减或调整的说明备注。 | "周四下午提前就医核减1餐" |
| status | String | 必填 | 'draft' |
账单生命周期状态机:'draft' (待核审草稿,家长端彻底隐藏)'reviewed' (已内部核验)'published' (已发布推送至家长看板)'paid' (家长已完成缴费结算)
|
"published" |
| auditor | String | 可选 | "" |
执行审核的老师/主管姓名。 | "王老师 (主管)" |
| auditTime | String | 可选 | "" |
审核发布时间戳。 | "2026-10-02 18:20" |
⚙️ 机构全套主数据库字典 (MasterData)
配置对象: CONFIG.MASTER_DATA贯彻“极简免手打、全链路点选”设计哲学的核心主数据字典。提前配置名录与预设,彻底杜绝老师在手机端频繁长篇打字。
| 主数据域 (Domain) | 数据结构 | 维护与预置内容 | 业务应用场景 |
|---|---|---|---|
| schools | Array<String> |
['南京师范大学附属小学', '南京市游府西街小学', '南京市拉萨路小学', '南京市琅琊路小学', '南京市芳草园小学', '南京市金陵汇文学校', '南京市北京东路小学', '南京市力学小学', '南京市银城小学', '南京市科睿小学', '南京市夫子庙小学']
|
学员建档时下拉点选;冲突预警引擎自动计算同校归类。 |
| classes | Array<String> |
['(1)班', '(2)班', '(3)班', '(4)班', '(5)班', '(6)班', '(7)班', '(8)班']
|
年级选择联动,自动拼合生成“三(2)班”,免手打。 |
| parentTitles | Array<String> |
['妈妈', '爸爸', '爷爷', '奶奶', '外公', '外婆', '小姨', '舅舅']
|
学员建档时点击气泡瞬间填入家长称谓。 |
| routineTaskTemplates | Object | 按低段(1-2年级)、中段(3-4年级)、高段(5-6年级)分科目维护日常高频作业模板(统编《补充习题》、苏教《计算能手》、译林Story time背诵等)。 | 作业录入界面根据学生年级精准推荐,点击一秒添加作业项。 |
| quickRemarks | Array<String> |
['字迹端正工整,书面非常清爽!', '作业专注高效,无走神拖拉现象。', '各科作业已在托班全部订正过关。', '错题已指导重新演算,思路已理清。', '课文背诵流利熟练,一次性过关!', '今日全天表现优异,奖励成长小红星⭐']
|
阶段3老师总评框下方气泡群,点击一键自动拼句追加。 |
| incompletePresets | Array<String> |
['英语Story time课文需回家继续朗读背诵熟练,明天到班抽查。', '语文生字词盘点需回家督促复习听写一次。', '古诗诵读已熟读,需回家家长抽查背诵打卡。', '已在托班全部保质保量完成,无残留作业,回家可自由阅读!']
|
阶段3未完成交代框下方气泡群,点击瞬间填入具体交代。 |
| announcementTemplates | Array<Object> | 内置《秋季降温防寒添衣提醒》、《学校单元测试学具带齐提醒》、《节假日放假作息确认》标准模版。 | 发布通告时点击气泡一键装填标题与排版优美的正文。 |
🛡️ 一孩一码隐私物理隔离机制 (Zero Trust Data Isolation)
隐私安全架构规范🔒 架构级防横向越权原则 (IDOR Prevention):
- 一孩一码专属凭证:系统为每位学员随机生成高熵值专属看护码(如
NX8812),家长端仅通过看护码进行单向设备绑定; - 界面零全员暴露:家长端视图在 DOM 结构中彻底移除了全员学生切换下拉框、列表选择器或任何其他学生索引;
- 数据层物理过滤:
Store.getStudentByCode(code)与Store.getStudentPublishedBills(studentId)仅对当前绑定的唯一 Student ID 进行单向取数,严禁批量导出他人日志; - 直达安全链接:支持
?code=NX8812免密直达,链接携带独立验证 Token,实现“点开微信链接即看自己孩子”的闭环体验。
📦 生产级真实种子数据快照 (Production Seed JSON Sample)
完整 JSON 样本张明轩(南师附小三(2)班)在托完整数据记录,涵盖多项作业、分数气泡、错题数、留影照片与周账单:
{
"student": {
"id": "stu_01",
"name": "张明轩",
"gender": "男",
"grade": 3,
"school": "南京师范大学附属小学",
"class": "三(2)班",
"address": "南京市玄武区北京东路42号成贤公寓2幢301室",
"parentName": "张建国 (爸爸)",
"phone": "13851888001",
"wechat": "wxid_zhangjg_nj",
"emergencyContact": "明轩妈妈 13851888002",
"authorizedPickups": ["爸爸", "妈妈", "爷爷", "阿姨"],
"accessCode": "NX8812",
"schedule": {
"mon": { "time": "15:30", "gate": "南门", "note": "常规放学" },
"tue": { "time": "16:30", "gate": "南门", "note": "周二机器人社团" },
"wed": { "time": "15:30", "gate": "南门", "note": "常规放学" },
"thu": { "time": "15:30", "gate": "南门", "note": "常规放学" },
"fri": { "time": "15:00", "gate": "南门", "note": "周五提前放学" }
}
},
"dailyLog": {
"studentId": "stu_01",
"date": "2026-10-02",
"arrived": true,
"arriveTime": "15:38",
"arrivalPhoto": "data:image/svg+xml;base64,...",
"hasDinner": true,
"dinnerTime": "17:35",
"homeworkIntakePushed": true,
"homeworkIntakePushTime": "15:52",
"homeworkReportPushed": true,
"homeworkReportPushTime": "18:15",
"homework": {
"chinese": {
"items": [
{
"id": "c_1",
"title": "统编版《补充习题》第18课完成",
"status": "done",
"score": "98分",
"errorCount": "错1处(已订正)",
"tags": ["生字笔顺描红规范"],
"remark": "字迹端正清秀"
},
{
"id": "c_2",
"title": "熟读背诵课文第三自然段",
"status": "doing",
"score": "",
"errorCount": "",
"tags": ["课文重点段落背诵过关"],
"remark": "正在抓紧背诵中"
}
]
},
"math": {
"items": [
{
"id": "m_1",
"title": "苏教版《补充习题》P38第1~3题",
"status": "done",
"score": "100分 ⭐",
"errorCount": "全对无错 ✓",
"tags": ["苏教版《补充习题》完成", "错题已指导订正"],
"remark": "竖式计算工整,试商演算正确"
}
]
}
},
"teacherRemark": "今日全天表现优异,数学竖式演算规范,奖励成长小红星⭐",
"incompleteNote": "英语Story time课文需回家继续朗读背诵熟练,明天到班抽查。",
"left": true,
"leaveTime": "18:30",
"pickupPerson": "爸爸接走"
}
}