# 站点使用说明（两站点分离版）

## 一句话概括

**两个独立站点，两套独立口令。**

| 站点 | 网址 | 用途 | 口令 |
|---|---|---|---|
| **问卷站点** | https://survey-aan.pages.dev | 收集问卷（公开） | 管理令牌（只管后台） |
| **资料站** | https://ss-awards.pages.dev | 获奖资料（需口令） | 资料站口令 |

**为什么分开**：口令互不相通、内容互相隔离、一个出问题不影响另一个。
资料站里**没有任何问卷回收数据**；问卷站点里**已经彻底删掉资料站**（访问旧路径返回 404）。

---

## 网址一览

### 问卷站点（发这些给同学）

| 入口 | 网址 |
|---|---|
| **问卷首页**（推荐发这个） | https://survey-aan.pages.dev |
| 第 1 套 · 预付卡退费 | https://survey-aan.pages.dev/p1-prepaid.html |
| 第 2 套 · 校园二手交易 | https://survey-aan.pages.dev/p2-second.html |
| 第 3 套 · AIGC 版权 | https://survey-aan.pages.dev/p3-aigc.html |
| **问卷回收后台**（只有你用） | https://survey-aan.pages.dev/admin.html |

### 资料站（只有你用）

| 入口 | 网址 |
|---|---|
| **登录页** | https://ss-awards.pages.dev |
| 首页总览 | https://ss-awards.pages.dev/index.html |
| 获奖名单 | https://ss-awards.pages.dev/获奖名单.html |
| 选题分析 | https://ss-awards.pages.dev/选题分析.html |
| 赛事信息 | https://ss-awards.pages.dev/赛事信息.html |
| 资料下载 | https://ss-awards.pages.dev/资料下载.html |

---

## 两套口令，别搞混

| 口令 | 用在哪 | 值 |
|---|---|---|
| **管理令牌** | 问卷回收后台 `/admin.html` | 你设的 `sp-2026-x7k9m3` |
| **资料站口令** | 资料站登录页 | `shichang-2026-gl` |

**改一个不影响另一个。**

### 改管理令牌（影响问卷后台）

1. https://dash.cloudflare.com → `Workers & Pages` → 项目 `survey` → `Settings` → `Variables and secrets`
2. 编辑 `ADMIN_TOKEN` → 存新值
3. **必须重新部署**：双击 `cf-tools\deploy.bat`

### 改资料站口令

资料站是纯静态站，口令以 **SHA-256 哈希**存在 `login.html` 里（源码中没有明文）。

1. 生成新哈希：
   ```python
   import hashlib
   print(hashlib.sha256('你的新口令'.encode('utf-8')).hexdigest())
   ```
2. 把 `D:\deepseek\市场调研\资料站\login.html` 里的 `HASH = '...'` 换成新值
3. 重新部署（见下方）

---

## 要改内容怎么重新部署

### 问卷站点

```
双击 C:\Users\Lenovo\Documents\deepseek-harness\default-workspace\cf-tools\deploy.bat
```
（粘贴一个 Cloudflare API Token，用完可删）

### 资料站

同样双击 `deploy.bat`，但它只部署问卷站点。资料站要单独部署：

```powershell
$env:CLOUDFLARE_API_TOKEN='你的token'
$env:CLOUDFLARE_ACCOUNT_ID='7746e8049f95d15c8b3bac5ee5a89cdc'
$env:ESBUILD_BINARY_PATH='C:\Users\Lenovo\Documents\deepseek-harness\default-workspace\cf-tools\node_modules\.pnpm\@esbuild+win32-x64@0.28.2\node_modules\@esbuild\win32-x64\esbuild.exe'
$env:MINIFLARE_WORKERD_PATH='C:\Users\Lenovo\Documents\deepseek-harness\default-workspace\cf-tools\node_modules\.pnpm\@cloudflare+workerd-windows-64@1.20261006.1\node_modules\@cloudflare\workerd-windows-64\bin\workerd.exe'

node "C:\Users\Lenovo\Documents\deepseek-harness\default-workspace\cf-tools\node_modules\wrangler\bin\wrangler.js" `
  pages deploy "D:\deepseek\市场调研\资料站" --project-name=ss-awards --branch=main --commit-dirty=true
```

---

## 同学那边看到什么

扫码 → 问卷首页 → 三套卷的卡片 → 点进去答题 → 提交。

**他们看不到**：
- 资料站（在另一个域名，需要口令）
- 问卷回收数据（需要管理令牌）
- 后台入口（首页上没有链接）

**如果他们猜到了旧路径** `survey-aan.pages.dev/awards/...`，会看到 404 页面，并提示资料站已迁移。

---

## 安全边界（诚实说明）

### 问卷数据：真实保护 ✅

`/api/list`、`/api/export`、`/api/delete` 都要求 `x-admin-token`，由后端校验。
实测无令牌一律返回 **401**。这个保护是真的。

### 资料站：弱保护 ⚠️

资料站是**纯静态站**，没有服务端，所以：

- 口令比对在**浏览器里**完成，能看到源码的人**可以跳过守卫**直接看页面
- 口令本身不会泄露（只存 SHA-256 哈希，无法反推）
- 但**页面内容本身是公开可下载的**

**结论**：对「不希望陌生人随便看到」够用；**不是**企业级权限控制。
如果需要真正的保护（页面内容不公开），得把内容放到服务端后面。

### 问卷首页是刻意公开的 ✅

扫码的人不该被拦住，所以问卷部分没有任何守卫。

---

## 数据存在哪

| 数据 | 位置 |
|---|---|
| 问卷答卷 | Cloudflare D1 数据库（项目 `survey`） |
| 获奖名单（2943 条） | `资料站\assets\data.js`（静态文件） |
| 答题人本地草稿 | 他自己浏览器，看不到也不影响服务器 |

---

## 目录结构（你自己的电脑）

```
D:\deepseek\市场调研\
├── 问卷\                     问卷站点（部署到 survey 项目）
│   ├── index.html            问卷首页
│   ├── p1/p2/p3-*.html       三套问卷
│   ├── 404.html              找不到页面时的提示
│   ├── admin.html            回收后台
│   ├── assets\ questions\    前端资源与题库
│   ├── functions\            后端接口
│   └── migrations\           建库 SQL
│
├── 资料站\                   资料站（部署到 ss-awards 项目）
│   ├── index.html            首页总览
│   ├── 获奖名单.html           2943 条检索
│   ├── 选题分析.html
│   ├── 赛事信息.html
│   ├── 资料下载.html
│   ├── login.html            登录页（含口令哈希）
│   ├── assets\               data.js / nav.js / site.css
│   └── downloads\            原始 PDF / Excel
│
├── 二维码分享\
│   ├── 分享二维码.html         所有二维码汇总（可直接截图）
│   ├── 问卷入口二维码.png       发这个给同学
│   ├── 二维码-第N套-*.png      单套卷二维码
│   ├── 资料站入口二维码.png      自己用，别外发
│   └── 管理后台二维码-请勿外发.png 自己用，别外发
│
└── myself\                  原资料站（内容已迁到 资料站\，此目录可留作备份）
```

---

## 排查顺序

| 现象 | 先查什么 |
|---|---|
| 改动没生效 | 有没有重新部署？两个站点要**分别**部署 |
| 看到旧内容 | 强制刷新（Ctrl+F5） |
| 资料站进不去 | 口令是 `shichang-2026-gl`（不是 `sp-2026-x7k9m3`）；无痕窗口每次要重登 |
| 扫旧二维码进不去 | 旧二维码指向的路径已删，请用新二维码 |
| 答卷一提交就报错 | 访问 `survey-aan.pages.dev/api/stats`，无令牌应返回 401 JSON；返回 HTML 说明后端没打包 |
| 后台看不到新答卷 | 手动刷新后台；确认同学那边显示"已成功提交到服务器" |
