# 06-决策记录 本文件记录已经做出的工程、产品和流程决策。后续若要改变决策,需要新增记录说明原因,不直接覆盖旧记录。 ## D001 - 当前基线按静态单文件 mockup 记录 - 日期:2026-07-06 - 决策:当前以 `doc/index.html` 作为项目基线,而不是假设已有完整前端工程。 - 原因: - 当前目录未发现 `package.json`、构建配置或后端代码。 - `doc/index.html` 已包含页面、样式和路由脚本。 - 用户本轮要求是在 `working` 中编写推进文档。 - 影响: - 当前验收以静态页面可打开、路由可渲染、视觉可检查为主。 - 表单、部署、测试、工程化都作为后续任务单独推进。 ## D002 - 表单不按真实功能验收 - 日期:2026-07-06 - 决策:`start` 和 `ask` 当前只能记为表单视觉 mockup,不能记为真实线索收集功能。 - 原因: - 字段是 `
`,不是输入控件。 - 提交按钮是跳转链接,不会提交数据。 - 没有后端、第三方表单服务、文件上传或校验逻辑。 - 影响: - `T012`、`T013`、`T014` 保持 `TODO`。 - 上线前必须实现真实提交,或在页面明确标注不可提交。 ## D003 - 任务推进以任务矩阵为唯一入口 - 日期:2026-07-06 - 决策:后续开发先查 `04-任务矩阵.md`,每个任务必须有编号、状态、验收标准和依赖。 - 原因: - 用户明确要求防止重复做。 - 当前项目范围包含内容、前端、表单、法务、部署和证据留存,容易混线。 - 影响: - 新工作不得只写在聊天记录里。 - 完成任务必须同步推进台账和验收证据。 ## D004 - 法务内容按草稿处理 - 日期:2026-07-06 - 决策:Terms、Privacy、Disclaimer 当前按草稿记录,正式上线前需要法务或负责人确认。 - 原因: - 页面涉及 non-law-firm statement、attorney-client relationship、refund、privacy、file upload、attorney referral、immigration outcome guarantee 等高风险内容。 - 页面曾使用 `Last updated: July 10, 2026`,晚于当前日期 `2026-07-06`;R007 已修正日期,但内容仍需审核。 - 影响: - `T016` 标为 `BLOCKED`,等待法务/负责人输入。 - `T017` 后续已完成日期修正;法务内容审核仍不关闭。 ## D005 - 本轮不改 doc/index.html - 日期:2026-07-06 - 决策:R002 只补强 `working` 文档,不修改 `doc/index.html`。 - 原因: - 用户要求是在 `working` 中编写文档体系。 - 当前还没有要求开始代码修复或工程化迁移。 - 影响: - `T029` 虽已识别,但仍为 `TODO`。 - 后续修复死链时应单独开一轮并记录证据。 ## D006 - 长期文档不保存明文服务器密码 - 日期:2026-07-06 - 决策:用户提供的 SSH 密码只视为临时交接信息,不写入 `working` 长期文档。 - 原因: - `working` 文档会作为后续推进资料,可能被复制、上传或纳入版本控制。 - 明文密码进入项目文件会扩大泄露面。 - 影响: - 服务器信息保留 host、user、port、domain。 - `T030` 要求改用 SSH key、部署密钥或受控密钥库。 ## D007 - 目标部署端口采用 8082 - 日期:2026-07-06 - 决策:部署方案默认内部服务监听 `8082`,HTTPS 由域名和反向代理对外提供。 - 原因: - 用户明确给出端口号 `8082`。 - 用户说明 `8080-8099` 已开放。 - HTTPS 通常由 Nginx/Caddy/负载均衡终止,再转发到本地应用端口。 - 影响: - `T024` 验收服务器本地 `127.0.0.1:8082`。 - `T025` 验收 `https://paprikalaw.com/`。 ## D008 - Services 的 contact 路由判定为缺陷 - 日期:2026-07-06 - 决策:Services 页面 04/05/06 CTA 指向 `contact` 是缺陷,不按设计接受。 - 原因: - `pageData` 没有 `contact` 页面。 - 当前路由逻辑会把未知页面回退到 `home`。 - CTA 文案是 Start Here,合理目标应为 `start`,除非新增真实 Contact 页面。 - 影响: - 新增 `T029`。 - 修复前 `T006` 只能保持 `VERIFY`,不能标为 `DONE`。 ## D009 - Outlet/network 名称正式发布前需确认 - 日期:2026-07-06 - 决策:Press 和 Judging 页面中的 outlet/network 名称上线前必须由负责人确认,或改成示例类型表达。 - 原因: - 页面列出大量媒体和 judging/network 名称,可能被理解为合作关系、可保证 placement 或背书。 - 这类陈述涉及商业真实性和法律风险。 - 影响: - 新增 `T031`,状态 `BLOCKED`。 - 未确认前不建议直接正式上线。 ## D010 - 完全对标必须包含视觉和源码结构 - 日期:2026-07-06 - 决策:后续提到“完全对标 `doc/index.html`”时,不能只记录页面文案,还必须覆盖 CSS token、组件类、函数清单、CTA 映射、FAQ 编号、Legal section、未调用模块和源码缺陷。 - 原因: - `doc/index.html` 是 3423 行单文件 mockup,页面内容、视觉规范和路由逻辑耦合在一起。 - 如果只记录页面功能,工程化拆分时容易丢失视觉细节或保留隐藏缺陷。 - 影响: - `01-项目功能内容.md` 增加源码级对标附录。 - `02-项目程序开发详细步骤.md` 增加完全对标核验清单。 - 新增 `T034` 和 `E016`。 ## D011 - 正式开发架构采用 Next.js + React + PostgreSQL - 日期:2026-07-06 - 决策:正式开发技术架构采用 Next.js + React,数据库使用 PostgreSQL。 - 默认补充决策: - 使用 TypeScript。 - 使用 Next.js App Router。 - 使用 Prisma 作为 PostgreSQL ORM。 - 使用 Next.js Route Handlers 或 Server Actions 处理表单提交。 - 生产服务监听 `8082`,HTTPS 由反向代理处理。 - 原因: - 用户明确指定 `Next+ React` 和 `PostGreSQL`。 - 项目需要真实表单、数据持久化、后续可能的文件上传和后台线索管理,单纯静态站不够。 - Next.js 可同时承接页面、API、SEO、构建和生产服务。 - 影响: - `02-项目程序开发详细步骤.md` 中工程化路线改为 Next.js + PostgreSQL。 - 新增 `T035-T039`。 - 后续不再优先推进 Vite/纯静态拆分,除非另有新决策。 ## D012 - PostgreSQL 已安装但仍需远程验证 - 日期:2026-07-06 - 决策:将服务器 PostgreSQL 状态记录为“用户确认已安装,待远程验证”,不直接视为已完成数据库接入。 - 原因: - 用户已明确说明 PostgreSQL 在服务器安装完成。 - 但尚未执行服务状态、版本、数据库列表、应用数据库、应用用户和连接字符串验证。 - 影响: - 新增 `T040` 远程验证 PostgreSQL 安装。 - `T037` PostgreSQL + Prisma 接入仍保持 `TODO`。 - 继续执行不保存明文密码的凭据规则。 ## D013 - 邮箱账号统一记录但不保存初始密码 - 日期:2026-07-06 - 决策:记录 `paprikalaw.com` 邮箱入口、管理员账号和 10 个普通邮箱账号,但不在长期文档保存用户提供的统一初始密码。 - 原因: - 邮箱账号属于项目基础设施,网站联系、表单通知和法务联系需要引用。 - 多账号共用初始密码存在安全风险,进入文档会扩大泄露面。 - 影响: - 新增 `T041-T043`。 - 创建或确认邮箱后,应尽快改为独立强密码并记录验证证据。 - Next.js SMTP 凭据只能放服务器环境变量或受控密钥库。 ## D014 - 保留 doc/index.html 作为对标基线,同时以 Next.js 为正式工程 - 日期:2026-07-06 - 决策:不删除 `doc/index.html`,正式代码在根目录 Next.js 工程中维护。 - 原因: - `doc/index.html` 是既有视觉、文案和路由逻辑的完整基线。 - 新工程需要持续对标旧 mockup,避免内容迁移漂移。 - `scripts/extract-legacy-pages.mjs` 可从旧基线重新生成静态页面 CSS 和 HTML 数据。 - 影响: - 静态内容页面暂由 `lib/legacy-pages.ts` 和 `LegacyPage` 渲染。 - `/start`、`/ask`、`/thanks` 已由 React 页面接管,不再使用旧 mockup 表单。 ## D015 - 文件上传暂不启用 - 日期:2026-07-06 - 决策:Start/Ask 表单当前不启用 CV/resume 上传。 - 原因: - 文件上传涉及存储位置、大小限制、访问权限、隐私保留期限和删除策略。 - 未确认前收集 CV 会扩大敏感数据风险。 - 影响: - `SubmissionFile` 表作为未来能力预留。 - 前端表单明确说明 file upload 暂停,直到存储和隐私方案获批。 ## D016 - 表单入库任务不在缺少 DATABASE_URL 时关闭 - 日期:2026-07-06 - 决策:虽然 `/api/submissions` 已实现 Prisma 写入代码,但在没有真实 PostgreSQL `DATABASE_URL` 和成功 `submission_id` 证据前,T038/T044 不标为 `DONE`。 - 原因: - API 代码通过构建不等于数据已经成功持久化。 - 生产数据库连接、migration、权限和网络策略都可能导致运行时失败。 - 影响: - T012/T013/T038 保持 `VERIFY`。 - 新增 T044,专门记录真实 PostgreSQL 入库验收。