diff --git a/.trellis/tasks/05-31-deploy-menu-naming-public-check/check.jsonl b/.trellis/tasks/05-31-deploy-menu-naming-public-check/check.jsonl new file mode 100644 index 00000000..543daec5 --- /dev/null +++ b/.trellis/tasks/05-31-deploy-menu-naming-public-check/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "收口时检查 Trellis validate、governance、git diff 与提交规则"} +{"file": ".trellis/spec/hyb-oa/deployment-trialrun.md", "reason": "检查部署后必须报告 commit、ready、公网 smoke 和是否可测试"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "公网视觉/文案复检判定旧命名、台账工具和页面操作区是否回退"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "检查复检报告、截图证据和任务记录是否只保留安全摘要"} diff --git a/.trellis/tasks/05-31-deploy-menu-naming-public-check/implement.jsonl b/.trellis/tasks/05-31-deploy-menu-naming-public-check/implement.jsonl new file mode 100644 index 00000000..0f6adf13 --- /dev/null +++ b/.trellis/tasks/05-31-deploy-menu-naming-public-check/implement.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task、部署审批、提交与证据记录要求"} +{"file": ".trellis/spec/hyb-oa/deployment-trialrun.md", "reason": "公网部署命令、SYNC_ENV=0、ready/smoke/live 检查边界"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "菜单命名、业务页面操作区、去除台账工具和成熟企业页面基线"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "公网复检证据路径、报告摘要和敏感信息排除规则"} diff --git a/.trellis/tasks/05-31-deploy-menu-naming-public-check/implement.md b/.trellis/tasks/05-31-deploy-menu-naming-public-check/implement.md new file mode 100644 index 00000000..6bb64f80 --- /dev/null +++ b/.trellis/tasks/05-31-deploy-menu-naming-public-check/implement.md @@ -0,0 +1,58 @@ +# 实施记录 + +## 执行方案 + +1. 补齐 Trellis PRD、上下文和验证口径。 +2. 启动任务后执行部署前只读检查。 +3. 使用 `SYNC_ENV=0 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash deploy/trialrun/deploy.sh` 部署当前 `main`。 +4. 部署后执行公网 `/ready`、public bundle scan、live smoke readiness。 +5. 使用 Playwright/浏览器保存重点页面截图,并检查是否仍出现旧命名或通用 `台账工具`。 +6. 将部署 hash、检查命令、结果和限制写回本文件,提交任务证据。 + +## 结果 + +已完成。 + +## 部署记录 + +- 部署基线:`df26922` +- 目标地址:`https://oa.hyinda.com` +- 部署命令: + +```bash +SYNC_ENV=0 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash deploy/trialrun/deploy.sh +``` + +- `.env` 同步:跳过,保留远端 `/opt/hyb-oa-trialrun/deploy/trialrun/.env`。 +- 远端目录:`/opt/hyb-oa-trialrun` + +## 检查结果 + +- `node deploy/trialrun/validate-env-contract.js`:通过。 +- `git diff --check`:通过。 +- `bash -n deploy/trialrun/deploy.sh`:通过。 +- `node --check server/src/scripts/smoke-trialrun-runtime.js`:通过。 +- 部署脚本:通过。 + - 远端 frontend build/typecheck:通过。 + - Prisma migration deploy/status:无待执行迁移,通过。 + - external deps smoke:企业微信、SMTP、腾讯 OCR、消息桥接配置通过。 + - runtime smoke:通过。 + - live smoke:3 passed。 + - public bundle scan:`findings=0`。 +- 独立 `/ready`:`{"requestId":"eb85630d-465f-4789-ad44-693b377b5045","data":{"ok":true}}` +- 独立 `node scripts/qa/check-public-bundle-copy.mjs https://oa.hyinda.com`:`findings=0`。 +- 独立 `LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh`:通过,报告目录 `artifacts/qa-flow/live-smoke-readiness-20260531-151949`。 + - pending OCR 扫描:`SKIP`,原因是本地 shell 缺少 `DATABASE_URL`。 + - live smoke:3 passed。 + - live OCR 辅助复核:1 passed,样票终态为可解释的重复票据类别。 +- 公网视觉/文案复检:通过,截图目录 `output/playwright/05-31-deploy-menu-naming-public-check/`。 + - 检查页面:`/portal`、`/workflow/tasks`、`/reimbursements`、`/purchase-requests`、`/contracts-registry`、`/projects`、`/assets`、`/payment-batches`、`/ap-operations`、`/invoice-pool`。 + - 检查角色:财务主管 live smoke 角色。 + - 未发现可见旧文案:`台账工具`、`合同台账`、`资产台账`、`票据中心`。 + +## 视觉审计摘要 + +- 菜单命名已统一为短名:`报销`、`采购`、`合同`、`项目`、`资产`、`付款`、`应付账款`、`票据`。 +- 采购、合同、资产、付款、应付账款、票据均为单列表首屏,没有再出现默认左列表/右详情分栏。 +- 业务页操作区使用具体动作,如 `新增合同`、`新建采购`、`新增资产`、`上传票据`、`导出`、`筛选`,未出现通用 `台账工具`。 +- 工作台和待我处理页仍有试运行数据与提醒数字,这是数据状态,不是本次部署回退。 diff --git a/.trellis/tasks/05-31-deploy-menu-naming-public-check/prd.md b/.trellis/tasks/05-31-deploy-menu-naming-public-check/prd.md new file mode 100644 index 00000000..7cb46321 --- /dev/null +++ b/.trellis/tasks/05-31-deploy-menu-naming-public-check/prd.md @@ -0,0 +1,104 @@ +# 部署菜单命名改动并公网复检 + +## Goal + +将当前 `main` 上已完成并本地验证通过的菜单命名、业务页面操作区和去除通用 `台账工具` 的改动部署到公网 OA,并完成公网健康、live readiness 和重点页面视觉/文案复检。部署通过后才告知用户可以在线查看。 + +## What I Already Know + +- 用户已确认继续执行部署与公网复检。 +- 最新业务改造提交为 `43efc9e 统一菜单命名并移除剩余台账工具(05-31-unified-menu-remove-ledger-tools-wave2)`,归档提交为 `df26922`。 +- 本地验证已通过:前端 typecheck/build、聚焦 Playwright、Trellis validate/governance 和 `git diff --check`。 +- 目标公网为 `https://oa.hyinda.com`,属于准生产试运行环境。 +- 部署必须使用 `SYNC_ENV=0 bash deploy/trialrun/deploy.sh`,不得覆盖远端 `.env`。 +- 当前产品边界固定:系统不接 ERP;不使用通用 `台账工具` 文案;菜单统一为 `报销`、`采购`、`合同`、`项目`、`资产`、`付款`、`应付账款`、`票据` 等短名称。 + +## Scope + +- 使用现有部署脚本将当前 `main` 部署到公网 OA。 +- 部署后执行 `/ready`、public bundle scan、live smoke readiness 和重点页面视觉/文案复检。 +- 允许修复阻塞本次部署或只读复检完成的部署脚本、smoke 基线或证据记录问题。 +- 记录部署提交、命令、检查结果、截图/报告位置和是否可让用户测试。 + +## Out of Scope + +- 不同步或覆盖公网 `.env`。 +- 不执行真实付款、银行流水导入、真实支付接口、企业微信写入或数据库重置。 +- 不执行真实业务写入;公网页面复检以只读和登录 smoke 为主。 +- 不新增页面设计改造;如公网发现新的 UI 问题,优先记录并另建最小修复任务。 + +## Requirements + +- 部署前确认工作区状态和部署环境契约。 +- 部署脚本必须完成远端构建、Prisma 迁移部署/状态检查、seed、`/ready`、external deps smoke、runtime smoke 和公网 bundle 文案扫描。 +- 部署后独立复核: + - `https://oa.hyinda.com/ready` + - public bundle copy scan + - live smoke readiness + - 重点业务页面没有回退到 `台账工具`、`合同台账`、`资产台账`、`票据中心` 等旧命名。 +- 如本地缺少 `LIVE_SMOKE_*` 凭据,必须记录为 SKIP/BLOCKED,不能声明完整登录 smoke 通过。 +- 若部署或公网 smoke 失败,不告知用户“可以测试”,先记录失败点并处理或提出回滚/修复建议。 + +## Test Plan + +部署前: + +```bash +node deploy/trialrun/validate-env-contract.js +git diff --check +``` + +部署: + +```bash +SYNC_ENV=0 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash deploy/trialrun/deploy.sh +``` + +部署后: + +```bash +curl -fsS https://oa.hyinda.com/ready +node scripts/qa/check-public-bundle-copy.mjs https://oa.hyinda.com +LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh +``` + +视觉/文案复检: + +- 使用 Playwright/浏览器访问公网,保存截图到 `output/playwright/05-31-deploy-menu-naming-public-check/`。 +- 检查工作台、报销、采购、合同、项目、资产、付款、应付账款、票据等入口和页面标题/操作区。 + +收口: + +```bash +python3 ./.trellis/scripts/task.py validate 05-31-deploy-menu-naming-public-check +node scripts/qa/check-trellis-governance.mjs +git diff --check +``` + +## Acceptance Criteria + +- [x] 当前 `main` 成功部署到公网 OA,并记录部署基线提交 hash。 +- [x] 部署使用 `SYNC_ENV=0`,未覆盖远端 `.env`。 +- [x] 公网 `/ready` 通过。 +- [x] public bundle copy scan 通过,且重点旧文案没有回退。 +- [x] live smoke readiness 通过;如凭据缺失,按规则记录 SKIP,不声明真实登录通过。 +- [x] 重点页面视觉/文案复检有截图或脚本证据。 +- [x] 本任务记录部署和复检结果,并明确用户是否可以线上测试。 + +## Deployment Result + +- 部署基线提交:`df26922 归档菜单命名与台账工具任务(05-31-unified-menu-remove-ledger-tools-wave2)` +- 部署命令:`SYNC_ENV=0 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash deploy/trialrun/deploy.sh` +- 部署结论:通过。 +- 公网 `/ready`:`{"ok":true}`。 +- 部署脚本内检查:环境契约、远端构建、migration deploy/status、seed、`/ready`、external deps smoke、runtime smoke、live smoke 3/3、公网资源文案扫描均通过。 +- 独立 live readiness:通过,报告目录 `artifacts/qa-flow/live-smoke-readiness-20260531-151949`;其中 pending OCR 扫描因当前本地 shell 未配置 `DATABASE_URL` 记录为 `SKIP`,不影响 live smoke 和 live OCR 复核结论。 +- 视觉/文案复检:通过,截图目录 `output/playwright/05-31-deploy-menu-naming-public-check/`,未发现可见 `台账工具`、`合同台账`、`资产台账`、`票据中心`。 +- 用户可测试:可以,公网地址 `https://oa.hyinda.com`。 + +## Technical Notes + +- 部署规范:`.trellis/spec/hyb-oa/deployment-trialrun.md` +- 前端视觉/交互规范:`.trellis/spec/hyb-oa/frontend-react-vite-design.md` 与 `frontend-design` skill +- 项目治理:`.trellis/spec/hyb-oa/project-governance.md` +- 试运行手册:`docs/试运行与自动化验证手册.md` diff --git a/.trellis/tasks/05-31-deploy-menu-naming-public-check/task.json b/.trellis/tasks/05-31-deploy-menu-naming-public-check/task.json new file mode 100644 index 00000000..37ad3bda --- /dev/null +++ b/.trellis/tasks/05-31-deploy-menu-naming-public-check/task.json @@ -0,0 +1,26 @@ +{ + "id": "deploy-menu-naming-public-check", + "name": "deploy-menu-naming-public-check", + "title": "部署菜单命名改动并公网复检", + "description": "部署当前 main 的菜单命名与去除台账工具改动,并完成公网 ready、live smoke 与视觉/文案复检。", + "status": "in_progress", + "dev_type": null, + "scope": "deployment", + "package": null, + "priority": "P2", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-31", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": null, + "relatedFiles": [], + "notes": "", + "meta": {} +}