🎒 Nanxi Care Data Architecture Specification · v1.5

楠溪托管系统全维度数据结构与领域模型字典

本文档定义了江苏省南京市「楠溪托管」家校协同轻量级看板的完整底层数据模型、物理存储契约(LocalStorage Schema)、分科目多项作业字典、一孩一码隐私隔离策略以及账单/考勤状态机流转全景。

📦 存储引擎: LocalStorage (NX_DATA_VERSION v1.5) 🛡️ 安全模型: 一孩一码物理隔离 (Zero Trust DOM/Store) 📝 作业模型: 分学段科目多项任务流 (Task Items) ⚡ 交互设计: 极简少打字、全链路点选、机构主数据预维护

🏛️ 领域模型与实体关系全景 (Entity-Relationship Topology)

6 大核心实体

系统以 StudentProfile 为静态主数据核心,通过日期组合键驱动 StudentDailyLog 动态日常事件流,解耦支持 HomeworkItem(分学段多任务批改)、BillingRecord(按餐自动计费与审核)、ScheduleEngine(跨校接娃波次冲突检测)与 ScoreEngine(可插拔成长战力计算)。

👥 学员与家庭档案 STUDENTS
维护学生基本信息、就读小学/班级、家庭住址、微信号、正常接送人白名单及周一至周五放学作息。
🔗 关联: 1 ➔ N 绑定 DailyLog;分配唯一 AccessCode
📅 每日在托与督导日志 DAILY_LOGS
主键格式为 ${studentId}_${dateStr}。记录接娃到店留影凭证、晚餐考勤、各科多项作业批改、高清卷面图及离店交接。
🔗 关联: 包含 Homework (4大科目多项任务流)
📝 科目多项作业项 HOMEWORK_ITEMS
语文、数学、英语、课外四大科目,每科包含多项实体作业。单项具备独立三态进度、快速评分、错题批注及教材气泡。
🔗 支撑: 阶段1清单推送 ➔ 阶段2批改 ➔ 阶段3终审
🧾 就餐考勤周账单 BILLING_RECORDS
每周五或周日系统根据每日真实在托晚餐考勤(餐标 ¥18)自动核算。维护“草稿 ➔ 已审 ➔ 推送 ➔ 结清”四态状态机。
🔗 关联: 审核通过前对家长物理隐藏,核准后推送
⚙️ 机构全套主数据库 MASTER_DATA
预维护南京重点小学名录、班级名录、校门、评语库、未完成交代预设库及群通告模版库,支撑全场景“免手打、全点选”。
🔗 赋能: 学员建档、作业终审、通告发布全流程点选
📢 班级通告与每周餐单 ANNOUNCEMENTS
记录机构向家长大群或看板发布的防寒添衣、流感晨检等温馨通告,提供带精美 Emoji 的微信群排版复制。
🔗 呈现: 家长看板顶部高亮置顶展示

🗺️ 各实体数据逻辑关系图 (Entity Relationship & Data Flow Architecture)

高保真矢量拓扑

下图完整展现了「楠溪托管」系统各核心实体间的主外键关联(1:N)、一孩一码隐私隔离映射(1:1)、科目与多任务层级分解(1:4 ➔ 1:N)、每日考勤聚合计费流(DailyLog ➔ BillingRecord)以及机构全套主数据库的全局赋能路径。

🎯 关系流透视过滤:
1 : N (studentId) 1 : N (studentId) 1 : 1 看护码 (accessCode) 1:4 科目 ➔ 1:N 任务项 hasDinner 聚合计费 status === 'published' 名录下拉/称谓气泡 低中高段常规作业模版 评语库与未完成交代装填 同校同班一键引用 (Copy) ⚙️ MASTER_DATA (主数据) • schools: 重点小学名录 • classes: 常用班号 (1~8班) • parentTitles: 家长称谓气泡 • routineTaskTemplates: 作业库 - 低段 / 中段 / 高段精准模版 • quickRemarks: 高频评语库 • incompletePresets: 未完成预设 • announcementTemplates: 通告模版 ⚡ 赋能全链路“极简免手打” 👥 STUDENTS (学员档案核心) 🔑 PK: id (如 "stu_01") 🔐 accessCode (如 "NX8812") • name, gender, grade (1~6年级) • school, class (同校同班索引) • address (就近护送住址), wechat • authorizedPickups: 接送白名单 • schedule: 周一至周五放学时间/校门 🚗 输入 ScheduleEngine 冲突预警分析 📅 DAILY_LOGS (每日在托轨迹) 🔑 PK: ${studentId}_${dateStr} 📸 arrived, arriveTime, arrivalPhoto (留影凭证) 🍱 hasDinner (就餐计费基准), dinnerTime 📝 homework: 4大科目结构体 (items清单) 📷 photos: 批改卷面高清照片 Base64 数组 💬 teacherRemark (总评), incompleteNote 🚪 left, leaveTime, pickupPerson (白名单交接) 🚀 阶段1/3一键双向推送家长看板 📝 HOMEWORK_ITEMS (多项任务流) • 涵盖: 语文(统编) / 数学(苏教) / 英语(译林) / 课外 🔑 id: 单项唯一键 (如 c_1, m_1) • title: 描述 (《补充习题》P38等) • status: ⚪未交 ➔ 🟡在写 ➔ 🟢已改完 • score (100分/98分等快速量化气泡) • errorCount (全对/错1处订正等气泡) • tags (江苏专属教材标签), remark (单项批注) 🧾 BILLING_RECORDS (就餐周账单) 🔑 PK: bill_${weekKey}_${studentId} • mealCount: 实际就餐餐数 (单价 ¥18) • calculatedTotal (自动核算应缴金额) • adjustedTotal, deductionNote (请假核减) • status 状态机流转: 草稿 (draft) ➔ 已审 ➔ 发布 ➔ 已结算 🔒 审核通过前对家长端物理隐藏保密 👨‍👩‍👦 PARENT_VIEW (隔离看板) 🔐 Session: boundAccessCode 📍 节点1: 接娃到店现场留影大图 📝 节点2: 分科多项作业批改与卷面图 ⚠️ 节点3: 待跟进未完成项明确交代 🧾 节点4: 已审核对账单 (一键核对)

📊 实体间关系基数与业务流转矩阵 (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"
wechat 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题竖式已讲透”、“字迹工整”)。
阶段 1:多项作业录入与推送 1
到店根据作业本录入各科项目;点击分学段常用模板一键装填;支持同班同学一键引用(Copy);核对无误后点击「一键推送今日作业清单给家长」。
阶段 2:逐项批改与气泡点选 2
学生随做随交,老师随交随改;单项独立流转(未交 ➔ 在做 ➔ 已改完);点选快速分数与错题处数气泡;拍摄批改卷面图并 Canvas 压缩上传。
阶段 3:全科终审与未完成交代 3
系统自动汇总各科已完成与未完成项数;从高频未完成预设库中一键填入回家交代;从评语库一键装填老师总评;点击「一键推送全科批改报告给家长」。

🧾 就餐考勤周账单实体字典 (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):

  1. 一孩一码专属凭证:系统为每位学员随机生成高熵值专属看护码(如 NX8812),家长端仅通过看护码进行单向设备绑定;
  2. 界面零全员暴露:家长端视图在 DOM 结构中彻底移除了全员学生切换下拉框、列表选择器或任何其他学生索引;
  3. 数据层物理过滤:Store.getStudentByCode(code) 与 Store.getStudentPublishedBills(studentId) 仅对当前绑定的唯一 Student ID 进行单向取数,严禁批量导出他人日志;
  4. 直达安全链接:支持 ?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": "爸爸接走"
  }
}