Files
MeetPaprika/working/06-决策记录.md

196 lines
9.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 06-决策记录
本文件记录已经做出的工程、产品和流程决策。后续若要改变决策,需要新增记录说明原因,不直接覆盖旧记录。
## D001 - 当前基线按静态单文件 mockup 记录
- 日期2026-07-06
- 决策:当前以 `doc/index.html` 作为项目基线,而不是假设已有完整前端工程。
- 原因:
- 当前目录未发现 `package.json`、构建配置或后端代码。
- `doc/index.html` 已包含页面、样式和路由脚本。
- 用户本轮要求是在 `working` 中编写推进文档。
- 影响:
- 当前验收以静态页面可打开、路由可渲染、视觉可检查为主。
- 表单、部署、测试、工程化都作为后续任务单独推进。
## D002 - 表单不按真实功能验收
- 日期2026-07-06
- 决策:`start``ask` 当前只能记为表单视觉 mockup不能记为真实线索收集功能。
- 原因:
- 字段是 `<div>`,不是输入控件。
- 提交按钮是跳转链接,不会提交数据。
- 没有后端、第三方表单服务、文件上传或校验逻辑。
- 影响:
- `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 入库验收。