375 lines
13 KiB
Markdown
375 lines
13 KiB
Markdown
# 05-验收证据
|
||
|
||
本文件记录可复查证据:命令、页面、job_id、report_id、PDF、截图、部署链接、提交记录等。
|
||
|
||
## E001 - 文档基线盘点
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T001、T002
|
||
- 类型:命令输出摘要
|
||
- 命令:
|
||
|
||
```bash
|
||
pwd
|
||
rg --files -g '!*node_modules*' -g '!*.png' -g '!*.jpg' -g '!*.jpeg' -g '!*.gif' -g '!*.pdf' | sed -n '1,160p'
|
||
sed -n '1,260p' doc/index.html
|
||
find working -maxdepth 2 -type f -print | sort
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 当前工作目录为 `/home/mes123456/MeetPaprika`。
|
||
- 参考文件存在:`doc/index.html`。
|
||
- `working` 目录存在。
|
||
- `doc/index.html` 包含 `<main id="app"></main>`、内联 CSS、内联 JS。
|
||
- 页面通过 `?page=...` 查询参数选择内容。
|
||
|
||
## E002 - 当前路由证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T002
|
||
- 类型:源码证据
|
||
- 命令:
|
||
|
||
```bash
|
||
rg -n "const pages|function|data-page|render|page:|title:|href=|main.innerHTML|case|pages\\[|\\?page=|<body|<script|</html>|Services|Resources|FAQ|Privacy|Terms|Get Started|Application|Contact" doc/index.html
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 导航显式链接:`press`、`judging`、`scholarly`、`services`、`why`、`resources`、`faq`、`start`。
|
||
- Footer 链接:`why`、`faq`、`terms`、`privacy`、`disclaimer`。
|
||
- `pageData` 中定义:`home`、`press`、`judging`、`scholarly`、`services`、`why`、`resources`、`faq`、`blog`、`start`、`ask`、`thanks`、`about`、`terms`、`privacy`、`disclaimer`。
|
||
- 路由选择逻辑:未识别页面回退为 `home`。
|
||
|
||
## E003 - 表单 mockup 证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T012、T013、T014、T015
|
||
- 类型:源码证据
|
||
- 文件:`doc/index.html`
|
||
- 结果摘要:
|
||
- `start` 页面字段使用 `<div class="field">`,提交入口是 `<a class="button primary" href="?page=thanks">Submit Profile</a>`。
|
||
- `ask` 页面字段使用 `<div class="field">`,提交入口是 `<a class="button primary" href="?page=thanks">Send Question</a>`。
|
||
- 当前没有 `<form>`、`input`、`textarea`、`file`、`method`、`action` 或提交接口。
|
||
- 因此当前只能证明视觉流程存在,不能证明真实提交能力。
|
||
|
||
## E004 - R002 源码复核证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T028
|
||
- 类型:命令输出摘要
|
||
- 命令:
|
||
|
||
```bash
|
||
sed -n '2262,2468p' doc/index.html
|
||
sed -n '2469,2765p' doc/index.html
|
||
sed -n '2766,3428p' doc/index.html
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 复核 header、footer、`serviceCards`、`pageData`、`hero`、`heroWithKicker`、`pressPage`、`judgingPage`、`o1CriteriaPage`、`faqPage`、legal 页面和最终渲染逻辑。
|
||
- `document.getElementById("app").innerHTML = pageData[selected].body;`
|
||
- `if (["faq", "resources"].includes(selected))` 会高亮 Resources trigger。
|
||
- legal 页面当时日期写为 `Last updated: July 10, 2026`;后续已在 E024 修复。
|
||
|
||
## E005 - Services contact 路由缺陷证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T029
|
||
- 类型:源码证据
|
||
- 文件:`doc/index.html`
|
||
- 结果摘要:
|
||
- Services 页面卡片 04、05、06 调用:
|
||
- `card("04", ..., "Start Here", "contact")`
|
||
- `card("05", ..., "Start Here", "contact")`
|
||
- `card("06", ..., "Start Here", "contact")`
|
||
- `pageData` 没有 `contact`。
|
||
- 当前路由逻辑会把未知 `contact` 回退到 `home`。
|
||
- 结论:这是明确死链/误跳转缺陷;后续已在 E024 修复。
|
||
|
||
## E006 - Git 状态证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T033
|
||
- 类型:命令输出摘要
|
||
- 命令:
|
||
|
||
```bash
|
||
git status --short
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 输出:`fatal: not a git repository (or any of the parent directories): .git`
|
||
- 结论:当前路径不是 Git 仓库,暂时无法记录 commit hash。
|
||
|
||
## E007 - Working 文档更新证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T028、T032
|
||
- 类型:文件证据
|
||
- 文件:
|
||
- `working/README.md`
|
||
- `working/01-项目功能内容.md`
|
||
- `working/02-项目程序开发详细步骤.md`
|
||
- `working/03-推进台账.md`
|
||
- `working/04-任务矩阵.md`
|
||
- `working/05-验收证据.md`
|
||
- `working/06-决策记录.md`
|
||
- 结果摘要:
|
||
- 已形成 README 索引。
|
||
- 已形成从项目功能、开发步骤、推进台账、任务矩阵、验收证据到决策记录的闭环。
|
||
|
||
## E016 - 源码级对标扫描证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T034
|
||
- 类型:命令输出摘要
|
||
- 命令:
|
||
|
||
```bash
|
||
wc -l doc/index.html working/*.md
|
||
rg -n 'function [A-Za-z0-9_]+\(|const [A-Za-z0-9_]+ =|^[[:space:]]+[A-Za-z0-9_]+: \{|href="\?page=|Last updated|Packages start|@media|--[a-z-]+:' doc/index.html
|
||
rg -n '^\s*\.[A-Za-z0-9_-]+|^\s*#[A-Za-z0-9_-]+|^\s*[a-z]+\s*\{|@media|grid-template-columns|width: min|border-radius|background:' doc/index.html
|
||
sed -n '2870,3035p' doc/index.html
|
||
sed -n '3070,3228p' doc/index.html
|
||
```
|
||
|
||
- 结果摘要:
|
||
- `doc/index.html` 共 3423 行。
|
||
- CSS token 包含 `--red`、`--deep-red`、`--ink`、`--text`、`--muted`、`--line`、`--paper`、`--panel`、`--green`、`--header-text`。
|
||
- 唯一显式断点为 `@media (max-width: 1080px)`。
|
||
- `pageData` 包含 `home`、`press`、`judging`、`scholarly`、`services`、`why`、`resources`、`faq`、`blog`、`start`、`ask`、`thanks`、`about`、`terms`、`privacy`、`disclaimer`。
|
||
- FAQ 共 4 组 20 个问题。
|
||
- Terms 共 18 个 section,但编号缺少 17。
|
||
- Privacy 共 12 个 section。
|
||
- Disclaimer 共 9 个 section。
|
||
- Legal 页面当时日期均为 `Last updated: July 10, 2026`;后续已在 E024 修复。
|
||
- 发现未调用函数/模块:`productPage`、`productPageWithKicker`、`judgingNetworkGroup`、`resourcesHub`、`resourceGroup`、`legalPage`、`standardGrid`、`pressQuality`。
|
||
|
||
## E017 - 技术架构确认记录
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T035
|
||
- 类型:用户确认 + 文档证据
|
||
- 用户确认:
|
||
|
||
```text
|
||
Next+ React ,数据库使用 PostGreSQL
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 正式开发技术架构已收敛为 Next.js + React + PostgreSQL。
|
||
- 文档默认 ORM 为 Prisma。
|
||
- 表单提交目标改为 Next.js API/Server Actions 写入 PostgreSQL。
|
||
- 生产启动方式改为 `npm run start -- -p 8082`。
|
||
- 新增任务 T036-T039,覆盖工程初始化、数据库接入、表单入库、Next.js 部署。
|
||
|
||
## E018 - 服务器 PostgreSQL 安装用户确认
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T040
|
||
- 类型:用户确认
|
||
- 用户确认摘要:
|
||
- PostgreSQL 已在云服务器安装完成。
|
||
- 服务器:`170.106.192.152`
|
||
- SSH 用户:`ubuntu`
|
||
- 可用端口:`8080-8099`
|
||
- 应用目标端口:`8082`
|
||
- 凭据处理:
|
||
- 用户在对话中提供了 SSH 密码。
|
||
- 长期文档不保存明文密码。
|
||
- 待验证命令:
|
||
|
||
```bash
|
||
ssh ubuntu@170.106.192.152
|
||
systemctl status postgresql --no-pager
|
||
psql --version
|
||
sudo -u postgres psql -c '\l'
|
||
```
|
||
|
||
- 结论:
|
||
- 当前状态为“用户确认已安装,待远程验证”。
|
||
|
||
## E019 - 邮箱系统账号需求用户确认
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T041、T042、T043
|
||
- 类型:用户确认
|
||
- 用户确认摘要:
|
||
- 普通用户入口:`https://mail.paprikalaw.com/webmail/`
|
||
- 管理员入口:`https://mail.paprikalaw.com/admin/`
|
||
- 管理员账号:`admin@paprikalaw.com`
|
||
- 普通邮箱账号:
|
||
- `info@paprikalaw.com`
|
||
- `contact@paprikalaw.com`
|
||
- `support@paprikalaw.com`
|
||
- `sales@paprikalaw.com`
|
||
- `marketing@paprikalaw.com`
|
||
- `hr@paprikalaw.com`
|
||
- `finance@paprikalaw.com`
|
||
- `billing@paprikalaw.com`
|
||
- `legal@paprikalaw.com`
|
||
- `service@paprikalaw.com`
|
||
- 凭据处理:
|
||
- 用户在对话中提供了统一初始密码。
|
||
- 长期文档不保存明文密码。
|
||
- 待验证:
|
||
- 管理员登录。
|
||
- 普通邮箱 webmail 登录。
|
||
- MX/SPF/DKIM/DMARC。
|
||
- 内部互发、外部收信、外部发信。
|
||
- Next.js 表单通知 SMTP 配置。
|
||
|
||
## E022 - Next.js 工程初始化和构建证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T036、T022
|
||
- 类型:命令输出摘要
|
||
- 命令:
|
||
|
||
```bash
|
||
npm install
|
||
npm run generate:legacy
|
||
npm run lint
|
||
npx tsc --noEmit
|
||
npm run build
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 依赖安装完成。
|
||
- `generate:legacy` 从 `doc/index.html` 生成 12 个页面数据。
|
||
- `lint` 通过。
|
||
- TypeScript `--noEmit` 通过。
|
||
- `next build` 通过,生成 `/`、`/[page]`、`/api/submissions`、`/ask`、`/start`、`/thanks`、`/robots.txt`、`/sitemap.xml`。
|
||
|
||
## E023 - Prisma schema 和 migration 证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T037
|
||
- 类型:文件和命令证据
|
||
- 文件:
|
||
- `prisma/schema.prisma`
|
||
- `prisma/migrations/20260706120000_init/migration.sql`
|
||
- `.env.example`
|
||
- 命令:
|
||
|
||
```bash
|
||
npm run prisma:generate
|
||
npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script
|
||
```
|
||
|
||
- 结果摘要:
|
||
- Prisma Client 生成成功。
|
||
- schema 包含 `Submission` 和 `SubmissionFile`。
|
||
- `.env.example` 只保留占位 `DATABASE_URL`,未写入真实密码。
|
||
- 待补:
|
||
- 生产 PostgreSQL 执行 `npx prisma migrate deploy`。
|
||
- 成功入库后记录 `submission_id`。
|
||
|
||
## E024 - Services CTA 和 legal 日期修复证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T017、T029
|
||
- 类型:源码和 HTTP 产物证据
|
||
- 命令:
|
||
|
||
```bash
|
||
rg -n "contact|Last updated" doc/index.html
|
||
curl -s http://localhost:8082/services | rg -n 'href="/start"|Expert consultation|Attorney Referral'
|
||
curl -s http://localhost:8082/terms | rg -n "Last updated: July 6, 2026"
|
||
```
|
||
|
||
- 结果摘要:
|
||
- `doc/index.html` 中 Services 04/05/06 已不再指向不存在的 `contact`。
|
||
- `/services` 产物中 Expert consultation、Agency representation、Attorney Referral 的 CTA 均为 `href="/start"`。
|
||
- legal 页面显示 `Last updated: July 6, 2026`。
|
||
|
||
## E025 - 本地生产 8082 路由冒烟证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T003-T011、T015、T020、T039
|
||
- 类型:HTTP 状态码证据
|
||
- 命令:
|
||
|
||
```bash
|
||
npm run start -- -p 8082
|
||
for p in / /press /judging /scholarly /services /why /resources /faq /start /ask /thanks /terms /privacy /disclaimer /robots.txt /sitemap.xml; do
|
||
code=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8082$p)
|
||
printf '%s %s\n' "$code" "$p"
|
||
done
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 所有列出的路径均返回 `200`。
|
||
- `robots.txt` 输出 `Sitemap: https://paprikalaw.com/sitemap.xml`。
|
||
- `sitemap.xml` 包含核心公开路径。
|
||
- 备注:
|
||
- 这是本地生产服务验收,不等同于远程服务器和 HTTPS 验收。
|
||
|
||
## E026 - 表单 API 校验证据
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T012、T013、T038、T044
|
||
- 类型:API 响应证据
|
||
- 命令:
|
||
|
||
```bash
|
||
curl -s -X POST http://localhost:8082/api/submissions \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{"type":"ask","name":"","email":"bad","question":"","consentAccepted":false}'
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 返回 `Validation failed`。
|
||
- 字段错误包含 `name`、`email`、`consentAccepted`、`question`。
|
||
- 待补:
|
||
- 配置 `DATABASE_URL` 后提交有效 `/start` 和 `/ask` 表单,记录 `submission_id` 和数据库查询结果。
|
||
- 未配置 `DATABASE_URL` 时,有效提交会返回 500,不能作为入库成功证据。
|
||
|
||
## E027 - npm audit 结果
|
||
|
||
- 日期:2026-07-06
|
||
- 关联任务:T023、T036
|
||
- 类型:安全扫描摘要
|
||
- 命令:
|
||
|
||
```bash
|
||
npm audit --audit-level=moderate --json
|
||
```
|
||
|
||
- 结果摘要:
|
||
- 剩余 2 个 `moderate` vulnerability。
|
||
- 来源为 `next` 依赖链中的 `postcss <8.5.10` 公告。
|
||
- 当前项目已使用 registry 当前稳定版本 Next `16.2.10`。
|
||
- npm 给出的 `fixAvailable` 会降级到 `next@9.3.3`,属于不合理破坏性修复,未执行。
|
||
- 后续:
|
||
- 等待 Next/PostCSS 依赖链发布可用修复版本后升级。
|
||
|
||
## 待补证据清单
|
||
|
||
| 编号 | 关联任务 | 需要补充的证据 |
|
||
| --- | --- | --- |
|
||
| E008 | T003-T011 | 桌面浏览器截图,覆盖 home、press、judging、scholarly、services、why、resources、faq |
|
||
| E009 | T018 | 移动端截图,至少 390px 宽度覆盖 home、services、faq、start |
|
||
| E010 | T012/T013 | 表单提交成功记录、submission id、后台记录截图或 webhook job_id |
|
||
| E011 | T016/T017 | 法务审核记录、确认人、确认日期 |
|
||
| E012 | T023 | 自动化测试命令和结果 |
|
||
| E013 | T024/T025 | 部署 URL、systemd 状态、Nginx 测试、证书、job_id、commit hash |
|
||
| E014 | T026 | PDF 或截图归档路径 |
|
||
| E015 | T030 | SSH key 或密钥管理方式确认,不能包含明文密码 |
|
||
| E020 | T041/T042 | 邮箱后台截图、DNS 查询输出、收发测试截图 |
|
||
| E021 | T043 | 表单通知邮件 message id 或测试截图 |
|
||
| E028 | T044 | PostgreSQL `DATABASE_URL` 配置后的真实表单提交、`submission_id` 和数据库查询结果 |
|
||
|
||
## 证据模板
|
||
|
||
### EXXX - 标题
|
||
|
||
- 日期:
|
||
- 关联任务:
|
||
- 类型:
|
||
- 命令或页面:
|
||
- 结果:
|
||
- 文件或链接:
|
||
- job_id/report_id/submission_id:
|
||
- 备注:
|