# 家庭教育日历 · 使用说明

两页一包，纯前端、双击即用（Chrome / Edge，file:// 直接打开，无需服务器）。

| 角色 | 文件 | 干什么 |
|---|---|---|
| **设计台**（家长用） | `app/设计台.html` | 生产与管理内容：主题/节点/周节奏/诗句/覆写/密语 → 发布 |
| **翻阅台**（全家用） | `app/日历书.html` | 翻页、打卡、跳日期、密语彩蛋、打印 |
| 共享引擎 | `app/日历核心.js` / `.css` | 设计台的预览 = 翻阅台的成书，逐字节一致 |
| 内容包 | `app/内容包/*.json` | 发布后的存档（famcal.pack v1：规则+池+覆写，非 365 天展开） |
| **引导页** | `index.html` | 预览服务默认首页：两台入口 + 一键装载内容包 |

## 内容生产流程（设计台）

1. **新建**：左栏「内容包 → ＋ 新建」→ 选年份（历法数据自动生成：农历锚点、24 节气、节日）。
2. **填内容**（按优先级从粗到细）：
   - 年度框架：12 个月主题
   - 节点库：节气/节日约定已按建议库预填；`＋ 自定义节点` 加生日、考试、旅行（可选「每年 MM-DD」年循环）
   - 周节奏：四条模板、习惯池（每条可展开 学龄前/小学/初中 三档）、话题池、活动类型
   - 素材池：每日一句（支持批量粘贴，每行 `句 | ——出处`）；奖励券池
   - 逐日编排：月历上看每天自动排了什么（来源：覆写/家庭节点/节日/节气/周节奏），个别日子点开覆写
   - 密语周表：每周四字密语（明文只存在这里与导出的 md）
3. **预览**：右下「预览 ›」实时看书页，可切分龄档。
4. **发布**：右上「发布到翻阅台」→ 翻阅台下次打开自动切到本期。
5. **存档**：发布后顺手「导出 JSON」存到 `app/内容包/`；「导出密语表」得到给家长保管的 md。

约定解析优先级：**逐日覆写 > 节点（家庭>节日>节气）> 周节奏 > 兜底**。

## 数据放在哪

全部在本机浏览器 localStorage（键 `famcal.*`），不经网络：

| 键 | 内容 |
|---|---|
| `famcal.editor.draft.<包id>` | 设计台草稿（含密语明文），400ms 自动保存 |
| `famcal.packs.v1` / `famcal.pack.current` | 已发布包 / 当前期 |
| `famcal.checkins.v1` | 打卡（按日期，天然按包隔离） |
| `famcal.secrets.v2` | 密语解锁记录（按包作用域） |

**localStorage 不跨机器、不跨浏览器，也不跨来源（origin）**：file:// 打开与 `http://localhost:8007` 预览是两个独立存储，互不相通。换电脑/重装/搬目录/换打开方式后，用「导出/导入 JSON」恢复（导入后记得重新发布一次以置为当前期）；经预览服务打开时，引导页上的「装载」按钮可一键完成。因此每个重要版本都建议导出 JSON 存档。

## 本地预览服务（端口 8007）

```bash
node tools/server.js          # 默认 8007；换端口：node tools/server.js 8008
```

- 打开 **http://localhost:8007/** → 引导页（`index.html`）：进翻阅台 / 设计台、查看内容包 JSON、**一键装载 2027 并设为本期**（解决 http 来源首次打开 localStorage 为空的问题）。
- 启动时同时打印**局域网地址**，手机与电脑同一 Wi-Fi 即可访问，适合在手机上试翻阅台。
- 服务根目录 = 项目根，仅本机/局域网预览用；对外的正式部署见 README「部署」。

## 密语体系

- 每周一个四字密语，周日页输入解锁「奖励券 + 下周看点」；收官周有彩蛋文案。
- 内容包与网页源码**只存哈希**，孩子翻源码也剧透不了；明文只在设计台草稿与 `docs/密语表-*.md`。
- 2026Q4 明文对照 `docs/密语表.md`；2027 全年对照 `docs/密语表-2027.md`（打印或妥善保管）。

## 打印与二维码

- 翻阅台 `Ctrl+P`：当前页即一张日历页（分龄档取当前所选，打印文本随档变化）。
- 已印刷二维码锚点 `#d=MMDD` 对内置 2026Q4 包继续有效；新包用 `日历书.html#pack=包id&d=MMDD`。

## 开发者

- 改引擎：`tools/core-template.js` → `node tools/regen-core.js`（自动跑 92 页黄金基线回归）。
- 改 2027 内容：`tools/build2027.js`（诗句/密语/断言都在里面）→ `node tools/build2027.js`。
- 测试：`node tools/test-viewer.js`、`node tools/test-editor.js`、`node tools/test-2027.js`（含 4 种运行模式）。
- `tools/q4.js` 是一次性迁移工具（旧单文件 → 内容包），仅存档勿运行。

## 相关文档

- [README.md](../README.md) —— 项目总览与目录导览
- [命名与域名.md](命名与域名.md) —— 品牌名与域名决策（含尽调与商标清单）
- [方案.md](方案.md) —— 原始策划蓝本（12 月主题、四大版块、分龄文案）
- [需求.txt](需求.txt) —— 最初需求
