补齐第二轮降噪部署验证任务(frontend-simplification-wave2-deploy-verify)
这个提交包含在:
@@ -0,0 +1,6 @@
|
||||
{"file": ".trellis/spec/hyb-oa/deployment-trialrun.md", "reason": "Check public deployment safety mode and required postdeploy evidence."}
|
||||
{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Check comparison output and frontend validation against task-first simplification rules."}
|
||||
{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Check generated evidence summaries avoid absolute paths and sensitive fields."}
|
||||
{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Check task artifacts and report summaries do not leak secrets or confidential data."}
|
||||
{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Check Trellis validate/governance/commit flow."}
|
||||
{"file": ".trellis/tasks/05-29-frontend-simplification-wave2-deploy-verify/research/deploy-verify-context.md", "reason": "Check task-specific expected evidence outputs."}
|
||||
@@ -0,0 +1,6 @@
|
||||
{"file": ".trellis/spec/hyb-oa/deployment-trialrun.md", "reason": "Public trial-run deployment command, env sync boundary, postdeploy reporting requirements."}
|
||||
{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Frontend design verification and PC task-first simplification rules."}
|
||||
{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence/report path and summary hygiene for generated QA artifacts."}
|
||||
{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Sensitive data and report redaction boundaries."}
|
||||
{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, validation and commit governance for this deployment task."}
|
||||
{"file": ".trellis/tasks/05-29-frontend-simplification-wave2-deploy-verify/research/deploy-verify-context.md", "reason": "Task-specific deployment and comparison evidence plan."}
|
||||
@@ -0,0 +1,52 @@
|
||||
# Implementation Plan
|
||||
|
||||
## Sequence
|
||||
|
||||
1. Finish task planning artifacts and validate the Trellis task.
|
||||
2. Build the second wave before/after comparison:
|
||||
- Capture "before" screenshots from the commit before `5f10b83`.
|
||||
- Capture "after" screenshots from current `main`.
|
||||
- Use the existing Playwright mock visual suites so business data is synthetic.
|
||||
- Write `output/playwright/frontend-simplification-wave2-compare/index.html`.
|
||||
3. Run deployment preflight checks:
|
||||
- frontend typecheck/build
|
||||
- UI design rule checker
|
||||
- deployment env contract checker
|
||||
- `git diff --check`
|
||||
4. Deploy with the approved safe command:
|
||||
- `SYNC_ENV=0 bash deploy/trialrun/deploy.sh`
|
||||
5. Run post-deploy readonly verification:
|
||||
- live smoke readiness
|
||||
- permission matrix
|
||||
- PC readonly visual matrix
|
||||
- mobile entry matrix
|
||||
- WeCom rendering matrix
|
||||
6. Record a concise postdeploy summary under `research/`, using only relative report references and redacted conclusions.
|
||||
7. Run Trellis governance and final whitespace check.
|
||||
|
||||
## Screenshot Strategy
|
||||
|
||||
- Prefer a temporary git worktree for the "before" commit so the current working tree remains intact.
|
||||
- Do not use destructive checkout/reset commands in the main worktree.
|
||||
- Reuse test-generated screenshots where available:
|
||||
- `output/playwright/pc-core-workflow-visual-wave2/`
|
||||
- `output/playwright/pc-detail-mobile-visual-wave3/`
|
||||
- If the old and new screenshot filenames differ, normalize them by copying the selected images into the comparison output directory with stable names.
|
||||
|
||||
## Stop Conditions
|
||||
|
||||
- Unexpected dirty files outside the current task or generated comparison output.
|
||||
- Deployment script fails.
|
||||
- Public `/ready` fails.
|
||||
- Permission matrix reports a blocker.
|
||||
- PC readonly visual matrix reports a P1 blocker.
|
||||
- Any generated report contains secrets, raw payloads, full accounts or full local paths.
|
||||
|
||||
## Safety Boundaries
|
||||
|
||||
- No remote `.env` overwrite.
|
||||
- No real business write automation.
|
||||
- No Enterprise WeChat writes.
|
||||
- No real payment, bank import or ERP write.
|
||||
- No database reset, restore or manual migration.
|
||||
- No production config edits.
|
||||
@@ -0,0 +1,128 @@
|
||||
# 部署并复检前端降噪第二轮
|
||||
|
||||
## Goal
|
||||
|
||||
将已完成并提交的第二轮前端降噪改动部署到公网试运行环境,并完成本地、截图对比和公网只读验证,确认审批中心与报销详情的新信息架构已经在试运行版本生效,且没有引入登录、审批、报销、移动入口或企业微信渲染回归。
|
||||
|
||||
本任务只做已提交前端改动的部署、对比和只读验证;不继续扩大页面重构范围,不写真实业务数据,不覆盖远端 `.env`。
|
||||
|
||||
## What I Already Know
|
||||
|
||||
- 用户已经确认第一轮对比效果,并要求“保持这样,作为统一设计规则”。
|
||||
- 用户批准按建议继续执行下一步:部署第二轮降噪并生成第二轮前后对比。
|
||||
- 第二轮前端降噪已完成并提交:
|
||||
- `5f10b83 重构审批中心与报销详情降噪(approval-detail-simplification-refactor)`
|
||||
- `79f50b0 归档审批详情降噪任务(approval-detail-simplification-refactor)`
|
||||
- 第二轮改动范围包括审批中心、报销详情、详情操作区和相关 Playwright 视觉/主流程测试。
|
||||
- 已存在第一轮对比页:`output/playwright/frontend-simplification-compare/index.html`。
|
||||
- 公网部署必须使用 `SYNC_ENV=0 bash deploy/trialrun/deploy.sh`,不得同步或覆盖远端 `.env`。
|
||||
|
||||
## Requirements
|
||||
|
||||
- 部署前补齐当前 Trellis 任务材料,记录执行边界、验证计划和脱敏证据位置。
|
||||
- 生成第二轮前后对比页:
|
||||
- 输出目录:`output/playwright/frontend-simplification-wave2-compare/`
|
||||
- 覆盖审批中心和报销详情 PC 页面。
|
||||
- 对比基准使用第二轮重构前后 commit,视口和 mock 数据保持一致。
|
||||
- 页面样式保持清爽、可扫读,不引入营销化说明。
|
||||
- 部署前必须复跑本地门禁:
|
||||
- `cd client && npm run typecheck`
|
||||
- `cd client && npm run build`
|
||||
- `node scripts/qa/check-ui-design-rules.mjs --strict`
|
||||
- `node deploy/trialrun/validate-env-contract.js`
|
||||
- `git diff --check`
|
||||
- 公网部署必须使用安全模式:
|
||||
- `SYNC_ENV=0 bash deploy/trialrun/deploy.sh`
|
||||
- 不覆盖远端 `.env`
|
||||
- 不做数据库重置、恢复或手工迁移
|
||||
- 部署后必须执行公网只读验证:
|
||||
- `/ready` 和部署脚本自带 runtime smoke 结论
|
||||
- live smoke / OCR readiness
|
||||
- OA 权限矩阵
|
||||
- OAFRONT3 PC 只读视觉矩阵
|
||||
- 移动入口矩阵和企业微信渲染矩阵
|
||||
- 验证报告只登记相对路径、状态和脱敏摘要;不得写入密码、token、完整账号、完整本地路径、真实票据或 raw payload。
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [x] 用户明确批准继续执行部署与第二轮对比。
|
||||
- [ ] `prd.md`、`implement.md` 和上下文登记完成,并通过 Trellis task validate。
|
||||
- [ ] 第二轮前后对比页生成完成,可从 `output/playwright/frontend-simplification-wave2-compare/index.html` 查看。
|
||||
- [ ] 部署前本地门禁通过。
|
||||
- [ ] `SYNC_ENV=0 bash deploy/trialrun/deploy.sh` 成功,未覆盖远端 `.env`。
|
||||
- [ ] 部署后公网 `/ready` 通过。
|
||||
- [ ] live smoke / OCR readiness 通过或有可解释 SKIP/PASS_WITH_FINDINGS。
|
||||
- [ ] 权限矩阵通过。
|
||||
- [ ] PC 只读视觉矩阵无 P1 blocker。
|
||||
- [ ] 移动入口和企业微信渲染矩阵通过。
|
||||
- [ ] 当前任务记录公网验证摘要和报告相对路径。
|
||||
- [ ] Trellis governance 和 `git diff --check` 通过。
|
||||
|
||||
## Definition Of Done
|
||||
|
||||
- 公网试运行环境部署到包含第二轮降噪改动的 commit。
|
||||
- 第二轮视觉对比页与公网验证报告可用于说明“审批中心/报销详情已按统一降噪规则生效”。
|
||||
- 结论明确为 `READY_FOR_USER_TEST`、`READY_WITH_FINDINGS` 或 `BLOCKED_POSTDEPLOY_VERIFICATION`。
|
||||
- 只有在部署与公网只读检查通过或可解释后,才告知用户可以测试。
|
||||
|
||||
## Out Of Scope
|
||||
|
||||
- 不继续重构其他页面。
|
||||
- 不启动或重置真实 7 天试运行计数。
|
||||
- 不创建、提交、审批、付款任何真实业务单据。
|
||||
- 不写企业微信消息、通讯录、审批或回调数据。
|
||||
- 不改远端 `.env`、生产配置、Caddy 配置或生产数据库。
|
||||
- 不执行真实付款、银行流水导入、ERP 写入或支付接口联调。
|
||||
|
||||
## Test Plan
|
||||
|
||||
规划与上下文:
|
||||
|
||||
```bash
|
||||
python3 ./.trellis/scripts/task.py validate 05-29-frontend-simplification-wave2-deploy-verify
|
||||
```
|
||||
|
||||
截图对比:
|
||||
|
||||
```bash
|
||||
cd client && npx playwright test tests/e2e/pc-core-workflow-visual-wave2.spec.ts --workers=1 --reporter=list
|
||||
cd client && npx playwright test tests/e2e/pc-detail-mobile-visual-wave3.spec.ts --grep "PC" --workers=1 --reporter=list
|
||||
```
|
||||
|
||||
部署前:
|
||||
|
||||
```bash
|
||||
cd client && npm run typecheck
|
||||
cd client && npm run build
|
||||
node scripts/qa/check-ui-design-rules.mjs --strict
|
||||
node deploy/trialrun/validate-env-contract.js
|
||||
git diff --check
|
||||
```
|
||||
|
||||
部署:
|
||||
|
||||
```bash
|
||||
SYNC_ENV=0 bash deploy/trialrun/deploy.sh
|
||||
```
|
||||
|
||||
部署后:
|
||||
|
||||
```bash
|
||||
LIVE_SMOKE_BASE_URL=https://oa.hyinda.com LIVE_SMOKE_READINESS_DIR=.trellis/tasks/05-29-frontend-simplification-wave2-deploy-verify/research/postdeploy-live-smoke-readiness bash scripts/qa/run-live-smoke-readiness.sh
|
||||
LIVE_SMOKE_BASE_URL=https://oa.hyinda.com OA_PERMISSION_MATRIX_REPORT_DIR=.trellis/tasks/05-29-frontend-simplification-wave2-deploy-verify/research/postdeploy-permission-matrix node scripts/qa/check-oa-permission-matrix.mjs
|
||||
bash scripts/qa/run-oafront3-pc-readonly-visual.sh
|
||||
cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list
|
||||
cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts --workers=1 --reporter=list
|
||||
node scripts/qa/check-trellis-governance.mjs
|
||||
git diff --check
|
||||
```
|
||||
|
||||
## Technical Notes
|
||||
|
||||
- Deployment spec: `.trellis/spec/hyb-oa/deployment-trialrun.md`
|
||||
- Frontend spec: `.trellis/spec/hyb-oa/frontend-react-vite-design.md`
|
||||
- Evidence spec: `.trellis/spec/hyb-oa/docs-and-evidence.md`
|
||||
- Privacy spec: `.trellis/spec/hyb-oa/security-privacy.md`
|
||||
- Governance spec: `.trellis/spec/hyb-oa/project-governance.md`
|
||||
- Trial run runbook: `docs/试运行与自动化验证手册.md`
|
||||
- First wave comparison reference: `output/playwright/frontend-simplification-compare/index.html`
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
# Deploy Verify Context
|
||||
|
||||
## Relevant Existing Evidence
|
||||
|
||||
- Second wave implementation commit: `5f10b83`.
|
||||
- Second wave archive commit: `79f50b0`.
|
||||
- First wave comparison page: `output/playwright/frontend-simplification-compare/index.html`.
|
||||
- Prior public deploy verification task: `.trellis/tasks/archive/2026-05/05-26-oa-frontend-postdeploy-public-verification/`.
|
||||
|
||||
## Derived Constraints
|
||||
|
||||
- Deployment uses `SYNC_ENV=0 bash deploy/trialrun/deploy.sh`; remote `.env` must not be overwritten.
|
||||
- Reports should use task `research/` paths or existing QA artifact directories and only store relative references.
|
||||
- Screenshot comparison uses mocked Playwright data, not real business data.
|
||||
- User-facing "can test" conclusion is only allowed after deployment and public checks pass or have a clearly documented non-blocking finding.
|
||||
|
||||
## Planned Evidence Outputs
|
||||
|
||||
- `output/playwright/frontend-simplification-wave2-compare/index.html`
|
||||
- `.trellis/tasks/05-29-frontend-simplification-wave2-deploy-verify/research/postdeploy-summary.md`
|
||||
- `.trellis/tasks/05-29-frontend-simplification-wave2-deploy-verify/research/postdeploy-live-smoke-readiness/summary.json`
|
||||
- `.trellis/tasks/05-29-frontend-simplification-wave2-deploy-verify/research/postdeploy-permission-matrix/summary.json`
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "frontend-simplification-wave2-deploy-verify",
|
||||
"name": "frontend-simplification-wave2-deploy-verify",
|
||||
"title": "部署并复检前端降噪第二轮",
|
||||
"description": "",
|
||||
"status": "in_progress",
|
||||
"dev_type": null,
|
||||
"scope": null,
|
||||
"package": null,
|
||||
"priority": "P2",
|
||||
"creator": "shunli",
|
||||
"assignee": "shunli",
|
||||
"createdAt": "2026-05-29",
|
||||
"completedAt": null,
|
||||
"branch": null,
|
||||
"base_branch": "main",
|
||||
"worktree_path": null,
|
||||
"commit": null,
|
||||
"pr_url": null,
|
||||
"subtasks": [],
|
||||
"children": [],
|
||||
"parent": null,
|
||||
"relatedFiles": [],
|
||||
"notes": "",
|
||||
"meta": {}
|
||||
}
|
||||
@@ -1186,12 +1186,12 @@ export function PortalHomePage() {
|
||||
title={`你好,${payload.greeting.name}`}
|
||||
className="workbench-hero--compact"
|
||||
subtitle={roleCapabilities.canUseFinance
|
||||
? "先处理今天的付款、风险和审批。"
|
||||
? "优先办理今天的付款、风险和审批。"
|
||||
: roleCapabilities.canManageSystem
|
||||
? "先处理待办,再进入管理入口。"
|
||||
? "优先办理待办,再进入管理入口。"
|
||||
: isManagerView
|
||||
? "先处理待办,再看团队状态。"
|
||||
: "先处理待办,再发起申请。"}
|
||||
? "优先办理待办,再看团队状态。"
|
||||
: "优先办理待办,再发起申请。"}
|
||||
actions={
|
||||
!payload.workspace.persisted && canSetupWorkspace ? (
|
||||
<Button asChild variant="secondary" type="button">
|
||||
|
||||
在新工单中引用
屏蔽一个用户