# 教师说明

## 课堂组织
推荐 12 课时：HTML 2、CSS 3、交互/API 3、本地表单 4。可按班级基础拆分。每任务八环节见教学文稿，先演示结果再发对应学生起点；不得把四份成品当作学生起始文件。两人一组，轮换编写和验收。

## 文件与运行
- public/index.html 为综合成品；public/stages/task-1-static、task-2-responsive、task-3-api、task-4-form 均有独立 index.html 和相对素材路径。
- 第一阶段仅 HTML；第二阶段加入 CSS、无 JS；第三阶段加入轮播/时钟/天气，无表单；第四阶段追加本地表单。
- 学生起始素材/task-1 是待补齐语义结构的骨架；task-2/3/4 分别从前一阶段成品起步，README 写明 TODO。
- ZIP 解压后双击 public/index.html 预览。建议素材根目录运行 `python3 -m http.server 8080`，在浏览器访问 `http://localhost:8080/public/`。也可 `npm ci && npm start`，访问 `http://127.0.0.1:8838/`。Node 服务仅提供静态资源，不接收表单。
- 修改源文件 public/styles.css 或 app.js 后运行 `npm run build` 同步独立版本；第三阶段会截取任务三脚本，不夹带第四阶段教学代码。

## 天气边界
Open-Meteo 免费非商业教育接口无需 key；页面保留 Open-Meteo/CC BY 4.0 来源。访问政策以 https://open-meteo.com/en/terms 与 https://open-meteo.com/en/docs 为准。城市是教学坐标，不是景区精确气象站。API 数据是模型天气数据，不应称为现场实测。设备北京时间不是网络校时。

缓存10分钟，刷新可强制联网；请求10秒超时；失败优先显示带时间的离线历史缓存，没有则显示失败。上课前验证校园网络，不承诺接口永远可用。不提供伪造的“实时天气”备用值。

## 隐私和本地限制
只填虚构昵称与课堂计划。localStorage 按来源隔离，HTTP/HTTPS、不同端口、不同浏览器可能使用不同存储；隐私模式或 file:// 行为取决于浏览器。登记没有后台，不跨设备，无身份认证，编号不是访问令牌。删除必须确认，仅删本项目登记键。课后清除演示记录。

## 调试和验收
先检查控制台，再检查 Network HTTP 状态、响应字段及存储。测试失败用浏览器请求拦截/离线，不要改源码伪造成功值。模拟数据只用于隔离测试，必须注明，不作为联网成功证据。完整自动化测试和真实输出见 tests/ 和 evidence/。

## 内容准确性
全部 SVG 自制且标注“示意图/非实景”，可用于本项目课堂。线路只是研究顺序，不代表实际道路、通航、开放、价格或预订；未做旅游事实调查，不可把本站作为出行依据。计划中的贵港选项已删，保留钦州、南宁教学坐标。
