# 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` 包含 `
`、内联 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=||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` 页面字段使用 `
`,提交入口是 `Submit Profile`。 - `ask` 页面字段使用 `
`,提交入口是 `Send Question`。 - 当前没有 `
`、`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: - 备注: