diff --git a/.trellis/tasks/05-29-page-design-rules-audit/design.md b/.trellis/tasks/05-29-page-design-rules-audit/design.md index 8b180dbb..a4f66daa 100644 --- a/.trellis/tasks/05-29-page-design-rules-audit/design.md +++ b/.trellis/tasks/05-29-page-design-rules-audit/design.md @@ -1308,25 +1308,36 @@ V1 业务口径:固定资产不另做复杂财务固定资产系统,而是 ## 5. 后续实施优先级 -P0:不继续整改,保持当前已收敛方向 +本轮已拆成 8 个后续实施 Trellis 子任务。执行时一次只启动一个子任务,避免单人开发同时改动过多页面。每个子任务必须先按自己的 `prd.md` 给实现方案,再进入代码改造、前端构建和聚焦 Playwright/截图验证。 + +P0:保持当前已收敛方向,不单独开实施任务 - 工作台:保持任务优先,不恢复快速上手常驻区。 - 待我处理:保持查看处理优先,不恢复 HR/考勤 OA 快批。 - 报销列表:保持我的报销 + 台账工具模式。 -P1:建议下一批优先优化 +P1:下一批优先实施 -- 报销详情:减少重复付款/摘要展示,进一步规范更多区和右侧动作区。 -- 采购页:从后台双栏表单改为任务/状态/证据/动作顺序。 -- 请假记录、考勤、企微审批历史:统一企微主办镜像口径,避免误导为 OA 日常入口。 -- 个人设置:确认默认只保留个人资料、密码/安全、通知偏好、企微绑定,折叠组织/角色。 +| 子任务 | 页面范围 | 目标 | +| --- | --- | --- | +| `05-30-reimbursement-detail-evidence-actions` | 报销详情 | 减少重复付款/摘要展示,规范证据区、更多区和右侧动作区 | +| `05-30-purchase-request-task-layout` | 采购 PC/移动 | 从后台双栏表单改为任务卡、状态、证据、动作顺序 | +| `05-30-wecom-hr-boundary-pages` | 请假记录、考勤、企微审批历史、移动请假 | 统一企微主办镜像口径,避免误导为 OA 日常入口 | +| `05-30-profile-settings-boundary` | 个人设置、移动我的、管理入口 | 个人只保留个人资料、密码/安全、通知偏好、企微绑定;管理能力统一进管理 | -P2:低频/管理页统一规范 +P2:后续批次 -- 付款、AP、票据:统一“台账工具”与异常优先模式。 -- 项目、合同、资产:统一轻管理台账 + 详情命令面板。 -- 管理配置:统一管理聚合、命令栏、表格、风险确认和审计提示。 -- 移动端:统一焦点卡、卡片列表、底部动作和 HR/考勤企微边界文案。 +| 子任务 | 页面范围 | 目标 | +| --- | --- | --- | +| `05-30-finance-ledger-tools-redesign` | 付款、AP、票据 | 统一台账工具、异常优先、付款动作集中和代账交接摘要 | +| `05-30-project-contract-ledger-detail-shell` | 项目、项目详情、合同台账 | 统一轻管理台账、详情命令面板和跨模块摘要跳转 | +| `05-30-asset-inventory-mobile-redesign` | 资产、盘点、移动资产扫码 | 统一资产责任链、盘点任务和移动扫码确认 | +| `05-30-mobile-light-action-surfaces` | 移动首页、审批、报销、采购、通知、我的 | 统一焦点卡、卡片列表、底部动作和移动轻动作边界 | + +P3:暂不拆独立任务 + +- 管理配置页整体重构:先由 `05-30-profile-settings-boundary` 收敛个人/管理边界;后续如仍复杂,再单独拆管理配置统一任务。 +- 差旅、预算、周报、公告、团队、Payroll、Performance、ERP 集成、切换控制台等低频/冻结/管理页面:仅在真实使用频率上升或前置任务发现入口冲突时再拆。 ## 6. 回写建议 diff --git a/.trellis/tasks/05-29-page-design-rules-audit/prd.md b/.trellis/tasks/05-29-page-design-rules-audit/prd.md index d643b5b9..93073924 100644 --- a/.trellis/tasks/05-29-page-design-rules-audit/prd.md +++ b/.trellis/tasks/05-29-page-design-rules-audit/prd.md @@ -83,15 +83,16 @@ - `2026-05-30`:财务台账 V1 只做付款准备、付款批次、回单留痕、AP 状态、票据/OCR 状态和代账交接摘要,不做完整财务软件。银行直连真实支付、银行流水自动导入、ERP/总账、凭证生成、自动对账和税务申报不进入当前财务页面;真实付款继续在线下银行或既有财务/代账流程完成,OA 只记录状态、证据和交接摘要。 - `2026-05-30`:个人设置和管理配置彻底分离。`个人设置` 只放个人资料、密码/安全、通知偏好和企业微信绑定;组织、角色、审批规则、功能开关、主数据、审计日志、人员维护和系统配置统一进入 `管理`,不出现在普通员工路径或个人资料页里。 - `2026-05-30`:多角色用户不做全局身份切换器。用户一人多岗时,页面按当前任务自动显示最相关视角;需要跨范围查看时,只在具体台账内提供 `我相关 / 我负责 / 财务处理 / 全范围` 等授权范围切换,不要求用户先选择“员工/财务/管理员”身份再使用系统。 +- `2026-05-30`:后续页面整改已拆成 8 个 Trellis 子任务。P1 先做报销详情、采购、企微主办 HR/考勤、个人设置边界;P2 再做财务台账、项目/合同、资产/盘点/移动扫码、移动端轻动作统一。工作台、待我处理和报销列表保持当前已收敛方向,不单独开实施任务。 ## Acceptance Criteria -- [ ] `design.md` 覆盖当前路由清单中的所有页面或页面族,并给出布局/操作/降噪建议。 -- [ ] 规则能直接指导工作台、报销列表、报销详情、审批列表、审批详情、通知、管理配置、移动端等后续页面整改。 -- [ ] 明确 A/B/C 页面分级和优先级,能用于拆分后续 Trellis 实施任务。 -- [ ] 明确 OA/企业微信边界,避免请假、补卡、外出、加班等日常 HR/考勤流程在 OA 中重复处理。 -- [ ] 明确哪些规则应回写到长期事实源,哪些仅保留为本任务审查建议。 -- [ ] 验证计划覆盖文档治理校验,不把“规则梳理”误报为页面已整改或已部署。 +- [x] `design.md` 覆盖当前路由清单中的所有页面或页面族,并给出布局/操作/降噪建议。 +- [x] 规则能直接指导工作台、报销列表、报销详情、审批列表、审批详情、通知、管理配置、移动端等后续页面整改。 +- [x] 明确 A/B/C 页面分级和优先级,能用于拆分后续 Trellis 实施任务。 +- [x] 明确 OA/企业微信边界,避免请假、补卡、外出、加班等日常 HR/考勤流程在 OA 中重复处理。 +- [x] 明确哪些规则应回写到长期事实源,哪些仅保留为本任务审查建议。 +- [x] 验证计划覆盖文档治理校验,不把“规则梳理”误报为页面已整改或已部署。 ## Test Plan diff --git a/.trellis/tasks/05-29-page-design-rules-audit/task.json b/.trellis/tasks/05-29-page-design-rules-audit/task.json index 4505b73c..e7a49caa 100644 --- a/.trellis/tasks/05-29-page-design-rules-audit/task.json +++ b/.trellis/tasks/05-29-page-design-rules-audit/task.json @@ -18,7 +18,16 @@ "commit": null, "pr_url": null, "subtasks": [], - "children": [], + "children": [ + "05-30-reimbursement-detail-evidence-actions", + "05-30-purchase-request-task-layout", + "05-30-wecom-hr-boundary-pages", + "05-30-profile-settings-boundary", + "05-30-finance-ledger-tools-redesign", + "05-30-project-contract-ledger-detail-shell", + "05-30-asset-inventory-mobile-redesign", + "05-30-mobile-light-action-surfaces" + ], "parent": null, "relatedFiles": [ ".trellis/tasks/05-29-page-design-rules-audit/prd.md", diff --git a/.trellis/tasks/05-30-asset-inventory-mobile-redesign/check.jsonl b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/check.jsonl new file mode 100644 index 00000000..1acb8103 --- /dev/null +++ b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and focused visual/Playwright checks"} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Check no secret, raw path or high-sensitive electronic asset leakage"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-asset-inventory-mobile-redesign/design.md b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/design.md new file mode 100644 index 00000000..c7dbc92f --- /dev/null +++ b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/design.md @@ -0,0 +1,19 @@ +# 资产盘点与移动扫码页面重构设计 + +## Page Template + +资产页使用 `主从工作台`,盘点页使用盘点任务工作台,移动扫码使用移动焦点卡 + 单一确认动作。 + +## Implementation Shape + +- 资产台账主列聚焦资产编号、名称、类型、责任人/保管人、位置、状态和最近盘点。 +- 固定资产 `FA` 区分领用、归还、调拨、盘点和处置确认。 +- 电子资产只展示责任、权限回收、验证和归档索引,不做文件库。 +- 盘点任务与资产台账主动作分离。 +- 移动扫码先展示资产摘要,再确认盘点/归还/转交等动作。 + +## Verification Focus + +- 固定资产、电子资料、盘点任务和分类维护不混在一个首屏。 +- 电子资产不展示密钥、源码、完整路径或备份内容。 +- 移动扫码在二维码不可用时可用资产编号或序列号兜底。 diff --git a/.trellis/tasks/05-30-asset-inventory-mobile-redesign/implement.jsonl b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/implement.jsonl new file mode 100644 index 00000000..8c75e16c --- /dev/null +++ b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/implement.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Master-detail, mobile scan, sensitive action and page template rules"} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Electronic asset, secret and sensitive path display boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-asset-inventory-mobile-redesign/prd.md b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/prd.md new file mode 100644 index 00000000..236c1768 --- /dev/null +++ b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/prd.md @@ -0,0 +1,51 @@ +# 资产盘点与移动扫码页面重构 + +## Goal + +统一资产台账、盘点任务和移动扫码页面,让资产页面优先回答“资产在哪、谁在用、谁负责、状态如何、是否需要盘点或离职交接”,避免把固定资产、电子资料、分类维护、盘点和流转动作混成后台大表单。 + +## Scope + +- In scope:资产台账、盘点任务、移动资产扫码页面的信息结构、动作区和验证断言。 +- Out of scope:完整财务固定资产账、折旧凭证、密码库、源码托管、备份内容浏览和强制拍照盘点。 + +## Pages + +- `client/src/pages/AssetRegistryPage.tsx` +- `client/src/pages/InventoryChecksPage.tsx` +- `client/src/pages/MobileAssetScanPage.tsx` + +## Requirements + +- 资产台账默认展示资产编号、名称、类型、责任人/保管人、位置、状态、最近盘点和下一步。 +- 固定资产 `FA` 突出二维码/序列号、领用/归还/调拨、盘点和处置确认。 +- 电子资料/系统/仓库/备份资产只展示索引、负责人、权限回收、备份/恢复验证和归档摘要,不做文件库、密码库或源码托管。 +- 采购/报销来源只作为资产候选和来源关联,不自动生成资产卡片。 +- 盘点页是盘点任务工作台,不和资产台账主动作混淆。 +- 移动扫码优先扫码,二维码不可用时允许输入资产编号或序列号;扫码后先展示摘要再确认动作。 + +## Out of Scope + +- 不做完整财务固定资产账、折旧、残值、会计科目或月度折旧凭证。 +- 不保存密码、token、Secret、源码包、完整配置、真实完整路径或备份内容。 +- 不强制复杂拍照盘点,不给不适合贴标的资产硬贴标签。 + +## Acceptance Criteria + +- [ ] 资产台账不把分类维护、盘点任务、资产流转和 ERP 同步混成一组首屏按钮。 +- [ ] 资产详情能说明责任链、位置、状态、来源和下一步。 +- [ ] 盘点任务和移动扫码动作清楚、单一、可确认。 +- [ ] 高敏电子资产只展示脱敏索引和责任摘要。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 聚焦资产、盘点、移动资产扫描相关 Playwright/截图。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 优先按 `FA` 固定资产主路径收敛页面,再处理电子资料索引展示。 +- 处置、下载、导出等高风险动作必须二次确认并展示对象摘要。 diff --git a/.trellis/tasks/05-30-asset-inventory-mobile-redesign/task.json b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/task.json new file mode 100644 index 00000000..b36203cc --- /dev/null +++ b/.trellis/tasks/05-30-asset-inventory-mobile-redesign/task.json @@ -0,0 +1,26 @@ +{ + "id": "asset-inventory-mobile-redesign", + "name": "asset-inventory-mobile-redesign", + "title": "资产盘点与移动扫码页面重构", + "description": "统一资产台账、盘点任务和移动扫码页面:固定资产责任链、二维码/序列号兜底、流转和处置动作归位。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P2", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file diff --git a/.trellis/tasks/05-30-finance-ledger-tools-redesign/check.jsonl b/.trellis/tasks/05-30-finance-ledger-tools-redesign/check.jsonl new file mode 100644 index 00000000..5b0111f2 --- /dev/null +++ b/.trellis/tasks/05-30-finance-ledger-tools-redesign/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and focused visual/Playwright checks"} +{"file": ".trellis/spec/hyb-oa/reimbursement-invoice-ocr.md", "reason": "Check finance/payment/invoice boundary compliance"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and sensitive report rules"} diff --git a/.trellis/tasks/05-30-finance-ledger-tools-redesign/design.md b/.trellis/tasks/05-30-finance-ledger-tools-redesign/design.md new file mode 100644 index 00000000..40c23d28 --- /dev/null +++ b/.trellis/tasks/05-30-finance-ledger-tools-redesign/design.md @@ -0,0 +1,18 @@ +# 财务台账工具与异常优先重构设计 + +## Page Template + +付款、应付账款、票据使用 `业务台账列表`。首屏突出待复核、待付款、待补回单、异常和导出/交接状态;低频工具进入台账工具。 + +## Implementation Shape + +- 统一财务状态 strip 和命令栏。 +- 付款动作集中在付款/财务处理详情或明确任务面板。 +- AP、票据和付款页面各自保持语义,不把三类能力混成一个首屏。 +- 导出、全范围、批量和代账交接进入台账工具或选中后上下文条。 + +## Verification Focus + +- 财务/出纳默认看到待处理财务事项。 +- 普通业务详情不直接执行付款动作。 +- 导出和回单相关操作受权限和审计提示约束。 diff --git a/.trellis/tasks/05-30-finance-ledger-tools-redesign/implement.jsonl b/.trellis/tasks/05-30-finance-ledger-tools-redesign/implement.jsonl new file mode 100644 index 00000000..1e84bd14 --- /dev/null +++ b/.trellis/tasks/05-30-finance-ledger-tools-redesign/implement.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Finance ledger, table, command bar and payment action placement rules"} +{"file": ".trellis/spec/hyb-oa/reimbursement-invoice-ocr.md", "reason": "Reimbursement, invoice, payment batch and AP export boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and sensitive report rules"} diff --git a/.trellis/tasks/05-30-finance-ledger-tools-redesign/prd.md b/.trellis/tasks/05-30-finance-ledger-tools-redesign/prd.md new file mode 100644 index 00000000..bb359a0b --- /dev/null +++ b/.trellis/tasks/05-30-finance-ledger-tools-redesign/prd.md @@ -0,0 +1,51 @@ +# 财务台账工具与异常优先重构 + +## Goal + +统一付款、应付账款和票据页面的财务台账体验:默认看待复核、待付款、待补回单、异常和导出/交接状态;真实付款仍在线下银行或既有财务流程完成,OA 只记录状态、证据和代账交接摘要。 + +## Scope + +- In scope:付款、应付账款、票据页面的台账工具、异常优先、付款入口和财务验证断言。 +- Out of scope:银行直连、ERP/总账、凭证生成、自动对账、税务申报和真实付款执行。 + +## Pages + +- `client/src/pages/PaymentBatchesPage.tsx` +- `client/src/pages/ApOperationsPage.tsx` +- `client/src/pages/InvoicePoolPage.tsx` +- 必要时影响报销列表/详情中的付款入口展示。 + +## Requirements + +- 财务页面默认按 `待复核/待付款/待补回单/异常` 组织,不默认进入全量大表。 +- `导出`、`批量`、`全范围`、`高级筛选`、`代账交接` 进入台账工具或选中后上下文工具。 +- 付款动作只在付款/财务处理详情或明确财务任务面板中执行,并展示金额、对象、来源单据、线下付款说明、证据和回单要求。 +- 票据池面向财务/OCR 状态和异常处理,不作为普通员工主导航和万能发票入口。 +- AP、报销、付款、票据概念清楚分开,不在一个首屏混合所有财务能力。 + +## Out of Scope + +- 不做银行直连、银行流水导入、ERP/总账、凭证生成、自动对账或税务申报。 +- 不改变付款批次后端状态机或财务权限,除非现有 UI 暴露出必要只读字段缺口。 +- 不把真实回单、发票原件或敏感付款信息写入自动化报告。 + +## Acceptance Criteria + +- [ ] 财务/出纳默认看到最需要处理的财务事项和异常。 +- [ ] 报销、采购、合同、项目普通详情不直接执行付款动作。 +- [ ] 财务导出和批量操作不作为首屏主按钮,并说明范围和敏感内容。 +- [ ] 票据、AP、付款页面文案使用自然中文,不使用 `AP 运营` 等内部平台词作为用户主语义。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 聚焦付款、AP、票据和报销付款入口相关 Playwright/截图。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 优先复用 finance/ops 状态条、列表卡和命令栏样式。 +- 财务页面的高风险动作必须有对象摘要、后果和审计路径。 diff --git a/.trellis/tasks/05-30-finance-ledger-tools-redesign/task.json b/.trellis/tasks/05-30-finance-ledger-tools-redesign/task.json new file mode 100644 index 00000000..6831ec70 --- /dev/null +++ b/.trellis/tasks/05-30-finance-ledger-tools-redesign/task.json @@ -0,0 +1,26 @@ +{ + "id": "finance-ledger-tools-redesign", + "name": "finance-ledger-tools-redesign", + "title": "财务台账工具与异常优先重构", + "description": "统一付款、应付账款、票据页面的台账工具、异常优先、付款动作集中和代账交接摘要边界。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P2", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file diff --git a/.trellis/tasks/05-30-mobile-light-action-surfaces/check.jsonl b/.trellis/tasks/05-30-mobile-light-action-surfaces/check.jsonl new file mode 100644 index 00000000..827ffe58 --- /dev/null +++ b/.trellis/tasks/05-30-mobile-light-action-surfaces/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and representative mobile screenshot checks"} +{"file": ".trellis/spec/hyb-oa/wecom-boundary.md", "reason": "Check mobile HR/attendance ownership boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-mobile-light-action-surfaces/design.md b/.trellis/tasks/05-30-mobile-light-action-surfaces/design.md new file mode 100644 index 00000000..057e1aec --- /dev/null +++ b/.trellis/tasks/05-30-mobile-light-action-surfaces/design.md @@ -0,0 +1,19 @@ +# 移动端轻动作页面统一重构设计 + +## Page Template + +移动端是 PC 六类模板的移动表达:顶部状态/焦点卡、卡片列表或分区详情、底部安全区主动作。不创建 PC 管理台缩小版。 + +## Implementation Shape + +- 移动首页只展示状态摘要、今日待处理和条件出现的进度/提醒。 +- 移动列表统一搜索/状态筛选 + 卡片列表 + 一个主动作。 +- 移动详情统一顶部焦点卡 + 分区内容 + 底部动作。 +- 移动通知只做事件卡片流,点击直达目标业务或任务。 +- HR/考勤移动入口继续遵循企业微信主办边界。 + +## Verification Focus + +- 代表性移动视口截图覆盖首页、审批、报销、采购、通知和我的。 +- 底部动作不遮挡内容,危险动作进入确认面板。 +- 移动端不出现全范围管理、批量导出、流程配置和宽表。 diff --git a/.trellis/tasks/05-30-mobile-light-action-surfaces/implement.jsonl b/.trellis/tasks/05-30-mobile-light-action-surfaces/implement.jsonl new file mode 100644 index 00000000..8144fe53 --- /dev/null +++ b/.trellis/tasks/05-30-mobile-light-action-surfaces/implement.jsonl @@ -0,0 +1,5 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Mobile shell, card list, focus card and bottom action rules"} +{"file": ".trellis/spec/hyb-oa/wecom-boundary.md", "reason": "Mobile Enterprise WeChat and HR/attendance ownership boundaries"} +{"file": ".trellis/spec/hyb-oa/reimbursement-invoice-ocr.md", "reason": "Mobile reimbursement and invoice capture boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-mobile-light-action-surfaces/prd.md b/.trellis/tasks/05-30-mobile-light-action-surfaces/prd.md new file mode 100644 index 00000000..f89d816c --- /dev/null +++ b/.trellis/tasks/05-30-mobile-light-action-surfaces/prd.md @@ -0,0 +1,58 @@ +# 移动端轻动作页面统一重构 + +## Goal + +统一移动首页、移动审批、移动报销、移动采购、移动通知和移动我的的轻动作体验。手机和企业微信 WebView 只服务提交、补材料、查状态、处理待办、扫码/上传和消息直达,不复制 PC 管理台。 + +## Scope + +- In scope:移动首页、移动审批、移动报销、移动采购、移动通知、移动我的和移动发票上传的统一轻动作结构。 +- Out of scope:原生 App、离线同步、服务端权限/状态机、全范围管理和移动端批量财务/审批工具。 + +## Pages + +- `client/src/pages/MobilePortalPage.tsx` +- `client/src/pages/MobileApprovalsPage.tsx` +- `client/src/pages/MobileReimbursementsPage.tsx` +- `client/src/pages/MobileReimbursementDetailPage.tsx` +- `client/src/pages/MobilePurchaseRequestsPage.tsx` +- `client/src/pages/MobilePurchaseRequestDetailPage.tsx` +- `client/src/pages/MobileNotificationsPage.tsx` +- `client/src/pages/MobileMePage.tsx` +- `client/src/pages/MobileProfilePage.tsx` +- `client/src/pages/MobileCapturePage.tsx` + +## Requirements + +- 移动首页使用顶部状态摘要、今日待处理和条件出现的进度/提醒,不放模块大全。 +- 移动列表统一为搜索/状态筛选、卡片列表和一个主动作,不使用宽表。 +- 移动详情统一为顶部焦点卡、分区内容和底部安全区动作。 +- 移动审批只处理 OA 主办审批;企微主办 HR/考勤回企微处理或只看历史/镜像。 +- 移动通知是事件卡片流,点击直达业务详情、审批任务或失败解释页,不复制审批列表。 +- 底部动作不遮挡内容,危险动作进入确认面板。 + +## Out of Scope + +- 不在移动端承接全范围管理、批量导出、批量审批、批量付款、流程配置、功能开关、复杂筛选和管理配置。 +- 不新增原生 App 能力、离线同步或真机专属功能。 +- 不改变服务端权限和状态机。 + +## Acceptance Criteria + +- [ ] 移动端所有核心页面都符合焦点卡/卡片列表/底部动作的统一结构。 +- [ ] 小屏按钮文字完整可读,底部动作避开安全区和键盘遮挡。 +- [ ] 移动通知不复制待办处理列表。 +- [ ] 移动 HR/考勤不误导为 OA 日常提交入口。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 代表性移动视口 Playwright/截图:移动首页、审批、报销、采购、通知、我的。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 这是跨多个移动页面的统一任务,实施时应分页面小步提交或至少分阶段验证截图。 +- 若发现 PC 与移动共享组件冲突,优先保留移动轻动作语义,不把 PC 管理壳搬到移动端。 diff --git a/.trellis/tasks/05-30-mobile-light-action-surfaces/task.json b/.trellis/tasks/05-30-mobile-light-action-surfaces/task.json new file mode 100644 index 00000000..d2975428 --- /dev/null +++ b/.trellis/tasks/05-30-mobile-light-action-surfaces/task.json @@ -0,0 +1,26 @@ +{ + "id": "mobile-light-action-surfaces", + "name": "mobile-light-action-surfaces", + "title": "移动端轻动作页面统一重构", + "description": "统一移动首页、移动审批、移动报销、移动采购、移动通知、移动我的的焦点卡、卡片列表和底部动作规则。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P2", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file diff --git a/.trellis/tasks/05-30-profile-settings-boundary/check.jsonl b/.trellis/tasks/05-30-profile-settings-boundary/check.jsonl new file mode 100644 index 00000000..0b827c21 --- /dev/null +++ b/.trellis/tasks/05-30-profile-settings-boundary/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and focused visual/Playwright checks"} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Check no role code, secret or sensitive account leakage"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-profile-settings-boundary/design.md b/.trellis/tasks/05-30-profile-settings-boundary/design.md new file mode 100644 index 00000000..b4c6c3bb --- /dev/null +++ b/.trellis/tasks/05-30-profile-settings-boundary/design.md @@ -0,0 +1,18 @@ +# 个人设置与管理配置边界重构设计 + +## Page Template + +个人设置使用轻量账号详情页;管理配置继续使用 `管理配置页`。二者入口、字段和动作分离,不共享复杂配置表单。 + +## Implementation Shape + +- 个人设置主区只保留个人资料、安全、通知偏好和企微绑定。 +- 组织归属、直属上级和角色摘要折叠展示,隐藏权限 code 和维护动作。 +- 管理能力在 `SystemSettingsPage` 或对应管理页分组承接。 +- 移动我的只保留账号、通知、企微绑定和退出登录。 + +## Verification Focus + +- 普通员工从工作台进入个人资料不会看到管理配置。 +- 管理员仍能从管理入口进入人员、组织、规则和系统配置。 +- 移动我的不展示管理矩阵。 diff --git a/.trellis/tasks/05-30-profile-settings-boundary/implement.jsonl b/.trellis/tasks/05-30-profile-settings-boundary/implement.jsonl new file mode 100644 index 00000000..8327df78 --- /dev/null +++ b/.trellis/tasks/05-30-profile-settings-boundary/implement.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Profile, management page, shell and action placement rules"} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Sensitive account, role and identity information display boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-profile-settings-boundary/prd.md b/.trellis/tasks/05-30-profile-settings-boundary/prd.md new file mode 100644 index 00000000..1d50d5ee --- /dev/null +++ b/.trellis/tasks/05-30-profile-settings-boundary/prd.md @@ -0,0 +1,52 @@ +# 个人设置与管理配置边界重构 + +## Goal + +把个人设置、移动我的和管理配置边界彻底拆清:个人页面只服务本人资料、安全、通知偏好和企业微信绑定;组织、角色、审批规则、功能开关、主数据、审计和系统配置统一进入管理。 + +## Scope + +- In scope:个人设置、移动我的、移动个人资料、管理入口边界和相关导航/入口断言。 +- Out of scope:权限模型、角色体系、账号绑定后端、企业微信 OAuth 后端和管理配置完整重构。 + +## Pages + +- `client/src/pages/ProfilePage.tsx` +- `client/src/pages/MobileMePage.tsx` +- `client/src/pages/MobileProfilePage.tsx` +- `client/src/pages/SystemSettingsPage.tsx` +- 必要时同步管理入口页中与个人设置混淆的链接。 + +## Requirements + +- 个人设置默认只展示个人资料、密码/安全、通知偏好、企业微信绑定。 +- 组织归属、直属上级、角色摘要可以折叠查看,但不提供维护矩阵或权限 code。 +- 移动我的只放账号身份、企微绑定、通知、退出登录和必要个人入口。 +- 管理配置统一承接人员、组织、角色、审批规则、主数据、通知渠道、外部系统、功能开关和审计。 +- 普通员工路径不展示系统配置、人员维护、流程定义或功能开关入口。 + +## Out of Scope + +- 不改权限模型、不新增角色、不改变已有管理接口。 +- 不开发新的账号绑定后端或企业微信 OAuth 能力。 +- 不重做管理配置完整信息架构,只收敛个人/管理边界和入口误导。 + +## Acceptance Criteria + +- [ ] 从工作台或快速入口进入个人资料时,用户不会看到复杂组织/权限/系统配置表单。 +- [ ] 个人设置没有审批规则、功能开关、主数据、审计日志和人员维护入口。 +- [ ] 管理配置入口能清楚承接低频系统能力。 +- [ ] 移动我的不出现管理矩阵。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 聚焦个人设置、移动我的、管理配置入口和导航相关 Playwright/截图。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 优先通过信息分组和入口显隐解决,不新增复杂设置框架。 +- 所有权限和数据范围仍由服务端校验,前端只做体验收敛。 diff --git a/.trellis/tasks/05-30-profile-settings-boundary/task.json b/.trellis/tasks/05-30-profile-settings-boundary/task.json new file mode 100644 index 00000000..60ce99d9 --- /dev/null +++ b/.trellis/tasks/05-30-profile-settings-boundary/task.json @@ -0,0 +1,26 @@ +{ + "id": "profile-settings-boundary", + "name": "profile-settings-boundary", + "title": "个人设置与管理配置边界重构", + "description": "重构个人设置、移动我的和管理配置入口边界:个人只放个人资料/安全/通知/企微绑定,管理能力统一进管理。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P1", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file diff --git a/.trellis/tasks/05-30-project-contract-ledger-detail-shell/check.jsonl b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/check.jsonl new file mode 100644 index 00000000..b565b9e2 --- /dev/null +++ b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and focused visual/Playwright checks"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and sensitive material report rules"} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Check no sensitive contract/project material leakage"} diff --git a/.trellis/tasks/05-30-project-contract-ledger-detail-shell/design.md b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/design.md new file mode 100644 index 00000000..dde90fa7 --- /dev/null +++ b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/design.md @@ -0,0 +1,18 @@ +# 项目合同轻台账与详情命令面板重构设计 + +## Page Template + +项目列表和合同台账使用 `业务台账列表`,项目详情和未来合同详情使用 `详情工作区`。关联区只做摘要和跳转。 + +## Implementation Shape + +- 项目列表按我负责/我参与、进行中、有风险和近期跟进排序。 +- 项目详情按状态、负责人、里程碑/任务、风险、交付和关联业务摘要组织。 +- 合同台账突出待补附件、即将到期、待归档和关联缺失。 +- 合同附件和高敏材料默认摘要展示,查看/下载走授权路径。 + +## Verification Focus + +- 项目和合同页面不承诺完整 PM/CLM 能力。 +- 关联采购、报销、付款、资产时不复制对方流程。 +- 无权限用户不能因关联摘要看到高敏字段。 diff --git a/.trellis/tasks/05-30-project-contract-ledger-detail-shell/implement.jsonl b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/implement.jsonl new file mode 100644 index 00000000..c8d9014b --- /dev/null +++ b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/implement.jsonl @@ -0,0 +1,5 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Ledger/detail template, relation summary and sensitive action placement rules"} +{"file": ".trellis/spec/hyb-oa/approval-workflow.md", "reason": "Approval action boundaries if project/contract links to workflow tasks"} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Sensitive contract, attachment and project information display boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and sensitive material report rules"} diff --git a/.trellis/tasks/05-30-project-contract-ledger-detail-shell/prd.md b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/prd.md new file mode 100644 index 00000000..6fcf91b6 --- /dev/null +++ b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/prd.md @@ -0,0 +1,50 @@ +# 项目合同轻台账与详情命令面板重构 + +## Goal + +统一项目和合同页面的轻台账、详情命令面板和跨模块关联方式。项目只做状态、负责人/成员、里程碑/任务、风险、交付记录和关联业务摘要;合同只做登记、归档、到期/续签提醒和关联项目/采购/付款。 + +## Scope + +- In scope:项目列表、项目详情、合同台账的轻台账结构、详情命令面板和关联摘要展示。 +- Out of scope:完整项目管理软件、完整 CLM、电子签、条款库、合同审批工作台和正式成本核算。 + +## Pages + +- `client/src/pages/ProjectsPage.tsx` +- `client/src/pages/ProjectDetailPage.tsx` +- `client/src/pages/ContractsRegistryPage.tsx` + +## Requirements + +- 项目列表默认展示我负责/我参与,优先进行中、有风险、近期需跟进项目。 +- 项目详情按状态、负责人、下一步、风险/里程碑、交付记录、关联报销/采购/合同/付款摘要组织。 +- 合同台账默认展示我负责/我可见,突出待补附件、即将到期、待归档、关联缺失和敏感下载待审计。 +- 合同详情使用状态与下一步、相对方、负责人、到期/续签提醒、附件完整性、关联项目/采购/付款、审计记录。 +- 跨模块关联只展示摘要和跳转,不直接审批采购、标记付款、处理发票/OCR、下载合同正文或处理资产。 + +## Out of Scope + +- 不做完整项目管理软件、甘特图、复杂依赖、工时、资源排期、OKR 或项目组合管理。 +- 不做完整 CLM、电子签、条款库、红线审查、版本协同或法务会签工作台。 +- 不新增项目预算控制或正式成本核算。 + +## Acceptance Criteria + +- [ ] 项目页能看清当前项目状态、风险、下一步和关联业务摘要。 +- [ ] 合同页能看清到期、附件完整性、归档和关联上下文。 +- [ ] 项目/合同关联区不突破原业务模块权限。 +- [ ] 高敏合同正文、报价、银行材料不出现在普通列表和自动化截图中。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 聚焦项目、项目详情、合同台账相关 Playwright/截图。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 先统一项目和合同的列表/详情信息顺序,再考虑抽取轻台账详情分区。 +- 如合同未来需要审批,仍跳转统一审批中心,不在合同台账内自建审批工作台。 diff --git a/.trellis/tasks/05-30-project-contract-ledger-detail-shell/task.json b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/task.json new file mode 100644 index 00000000..7e1c659c --- /dev/null +++ b/.trellis/tasks/05-30-project-contract-ledger-detail-shell/task.json @@ -0,0 +1,26 @@ +{ + "id": "project-contract-ledger-detail-shell", + "name": "project-contract-ledger-detail-shell", + "title": "项目合同轻台账与详情命令面板重构", + "description": "统一项目和合同轻台账、详情命令面板、跨模块摘要跳转和敏感资料边界。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P2", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file diff --git a/.trellis/tasks/05-30-purchase-request-task-layout/check.jsonl b/.trellis/tasks/05-30-purchase-request-task-layout/check.jsonl new file mode 100644 index 00000000..d1fbaee7 --- /dev/null +++ b/.trellis/tasks/05-30-purchase-request-task-layout/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and focused visual/Playwright checks"} +{"file": ".trellis/spec/hyb-oa/approval-workflow.md", "reason": "Check approval action placement"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-purchase-request-task-layout/design.md b/.trellis/tasks/05-30-purchase-request-task-layout/design.md new file mode 100644 index 00000000..340a4e27 --- /dev/null +++ b/.trellis/tasks/05-30-purchase-request-task-layout/design.md @@ -0,0 +1,18 @@ +# 采购申请任务化页面重构设计 + +## Page Template + +PC 使用 `业务台账列表` 或轻量 `主从工作台`,移动使用卡片列表和分区详情。列表/左栏只查找和看状态,处理动作进入当前对象详情或审批任务。 + +## Implementation Shape + +- 顶部增加采购任务卡,覆盖草稿、审批中、退回/待补材料、待验收/归档。 +- 默认范围为我发起/我相关,全范围、导出和高级筛选进入台账工具。 +- 详情区按状态、业务摘要、明细/供应商、材料证据、关联摘要、历史和动作组织。 +- 审批、付款、资产建卡和合同正文下载均回到归属模块。 + +## Verification Focus + +- 普通员工、审批人、采购/管理角色的默认视角。 +- 采购草稿、审批中、退回、已通过和待验收状态。 +- PC 与移动页面不会复制高风险动作。 diff --git a/.trellis/tasks/05-30-purchase-request-task-layout/implement.jsonl b/.trellis/tasks/05-30-purchase-request-task-layout/implement.jsonl new file mode 100644 index 00000000..772dd7d0 --- /dev/null +++ b/.trellis/tasks/05-30-purchase-request-task-layout/implement.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Business ledger/master-detail template and action placement rules"} +{"file": ".trellis/spec/hyb-oa/approval-workflow.md", "reason": "Approval action ownership and workflow boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-purchase-request-task-layout/prd.md b/.trellis/tasks/05-30-purchase-request-task-layout/prd.md new file mode 100644 index 00000000..b2d5ad76 --- /dev/null +++ b/.trellis/tasks/05-30-purchase-request-task-layout/prd.md @@ -0,0 +1,52 @@ +# 采购申请任务化页面重构 + +## Goal + +把采购申请页从偏后台表单/双栏页面收敛为小团队可理解的任务化业务页:先看草稿、审批中、退回待补、待验收/归档等事项,再进入当前采购对象详情处理材料、状态和关联。 + +## Scope + +- In scope:采购申请 PC 页面、移动采购列表/详情、采购状态/证据/动作展示和对应测试。 +- Out of scope:采购后端状态机、采购订单全生命周期、库存、ERP 和供应商生命周期。 + +## Pages + +- `client/src/pages/PurchaseRequestsPage.tsx` +- `client/src/pages/MobilePurchaseRequestsPage.tsx` +- `client/src/pages/MobilePurchaseRequestDetailPage.tsx` + +## Requirements + +- PC 顶部展示采购任务卡:草稿待完善、审批中、退回/待补材料、待验收或待归档。 +- 默认视角按当前用户收敛为 `我发起/我相关`,管理或全范围入口进入台账工具。 +- 列表只展示采购编号、对象、金额/数量、项目/合同摘要、当前状态、证据完整性和下一步。 +- 详情按状态、业务摘要、明细/供应商、材料证据、关联项目/合同/报销/资产候选/付款摘要、历史和动作组织。 +- 审批动作不在采购列表或普通详情直接执行;进入 `待我处理` 或审批详情。 +- 付款/AP 只展示状态和入口,不直接执行付款动作。 +- 资产候选只表示后续可能建卡,不自动入库、不自动形成固定资产。 + +## Out of Scope + +- 不做采购订单全生命周期、库存、三单匹配、招采评标、供应商生命周期或 ERP 入账。 +- 不改采购审批规则和服务端状态机,除非 UI 发现必须补充只读状态字段。 +- 不新增合同审批或付款执行能力。 + +## Acceptance Criteria + +- [ ] 普通员工进入采购页先看到自己相关任务和下一步,不默认进入全范围管理视图。 +- [ ] 采购列表没有直接审批、付款、合同下载或资产建卡动作。 +- [ ] 采购详情能清楚说明是否可提交、可补材料、可查看进度或需进入审批任务。 +- [ ] 移动采购只保留卡片列表、详情摘要和必要保存/提交/补附件动作。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 聚焦采购申请 PC/移动 Playwright 或截图断言。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 与报销列表已有“任务卡 + 台账工具”模式对齐。 +- 跨模块关联只做摘要和跳转,避免采购页成为项目、合同、报销、付款和资产的混合后台。 diff --git a/.trellis/tasks/05-30-purchase-request-task-layout/task.json b/.trellis/tasks/05-30-purchase-request-task-layout/task.json new file mode 100644 index 00000000..5af03c98 --- /dev/null +++ b/.trellis/tasks/05-30-purchase-request-task-layout/task.json @@ -0,0 +1,26 @@ +{ + "id": "purchase-request-task-layout", + "name": "purchase-request-task-layout", + "title": "采购申请任务化页面重构", + "description": "按全页面设计规则重构采购申请页:任务卡、状态/证据/动作顺序、跨模块摘要跳转和审批动作归位。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P1", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file diff --git a/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/check.jsonl b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/check.jsonl new file mode 100644 index 00000000..57c6e3a7 --- /dev/null +++ b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and focused visual/Playwright checks"} +{"file": ".trellis/spec/hyb-oa/reimbursement-invoice-ocr.md", "reason": "Check reimbursement/OCR/payment boundary compliance"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/design.md b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/design.md new file mode 100644 index 00000000..c90304c5 --- /dev/null +++ b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/design.md @@ -0,0 +1,18 @@ +# 报销详情证据与动作区重构设计 + +## Page Template + +使用 `详情工作区`:顶部概览 + 主区事实证据 + 右侧摘要/命令 + 历史。移动或窄屏按顶部焦点卡、分区详情、底部动作降级。 + +## Implementation Shape + +- 先审计现有 `ReimbursementDetailPage.tsx` 中重复摘要、付款状态、更多区和动作区。 +- 保留既有数据读取和权限判断,优先重排展示结构。 +- 证据分区按明细、PDF 发票、普通附件、付款/回单摘要和跨模块关联组织。 +- 付款动作只保留跳转入口,不在报销详情执行。 + +## Verification Focus + +- 草稿、审批中、被驳回、已通过、待付款、已付款状态。 +- 发票/附件缺失与完整状态。 +- 财务角色和普通员工看到的动作差异。 diff --git a/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/implement.jsonl b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/implement.jsonl new file mode 100644 index 00000000..6b8df896 --- /dev/null +++ b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/implement.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Detail page template, action placement, evidence structure and frontend validation rules"} +{"file": ".trellis/spec/hyb-oa/reimbursement-invoice-ocr.md", "reason": "Reimbursement, invoice, attachment, payment and OCR implementation boundaries"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/prd.md b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/prd.md new file mode 100644 index 00000000..bc07ebaa --- /dev/null +++ b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/prd.md @@ -0,0 +1,52 @@ +# 报销详情证据与动作区重构 + +## Goal + +按全页面设计规则重构报销详情页,让用户先看清状态、下一步、业务摘要和证据,再处理补材料、查看进度、导出或付款相关入口。目标是降低报销详情首屏信息噪音,避免普通报销详情复制财务付款动作。 + +## Scope + +- In scope:报销详情 PC 页面、相关详情分区组件、报销详情断言和必要视觉截图。 +- Out of scope:报销列表、报销后端状态机、OCR 服务、付款后端和公网部署。 + +## Pages + +- `client/src/pages/ReimbursementDetailPage.tsx` +- 相关共享组件和 E2E:仅在确有复用价值或断言需要时调整。 + +## Requirements + +- 顶部固定展示报销单状态、下一步、报销人、金额、项目/事由和当前节点。 +- 主区按统一顺序组织:业务摘要、明细、PDF 发票、普通附件、风险/校验提示、审批/处理历史。 +- 右侧命令区只放当前对象可执行动作和原因说明,不重复付款状态、摘要或历史。 +- 付款相关动作只显示付款状态、回单状态、`查看付款`、`补回单` 或进入付款记录入口;不直接放 `标记已付款`、`取消付款`、`批量付款`、`执行付款`。 +- 发票、附件、合同材料、资产候选和付款记录按“摘要 + 跳转”展示,不复制对方模块流程。 +- 普通用户不展示 UUID、taskId、内部状态码、OCR provider、原始 payload 或完整本地路径。 + +## Out of Scope + +- 不改报销状态机、审批规则、付款后端逻辑或 OCR 识别逻辑。 +- 不新增银行直连、ERP/总账、自动对账或真实付款能力。 +- 不改变附件存储、下载权限和审计策略,除非发现现有 UI 与既有接口不一致。 + +## Acceptance Criteria + +- [ ] 报销详情第一屏能回答“现在是什么状态、谁要处理、下一步是什么、证据是否完整”。 +- [ ] 已通过/待付款/已付款状态下,报销详情不出现可直接执行的付款动作。 +- [ ] 发票、附件、付款和跨模块关联都按摘要、缺失提示和跳转组织。 +- [ ] PC 详情右侧动作区和移动/窄屏布局不遮挡内容。 +- [ ] 现有报销主链路 Playwright 断言更新并通过。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 聚焦报销详情、报销主流程和视觉壳层相关 Playwright。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 先盘点当前详情页重复展示的付款、摘要和更多区,再收敛结构。 +- 优先复用 `PageHeader`、`WorkspaceHeader`、`PrimaryTable`、`ops-*` 和既有状态/附件组件。 +- 若需要新增共享详情分区组件,必须确认采购、合同、项目是否会复用;否则保持页面内小改。 diff --git a/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/task.json b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/task.json new file mode 100644 index 00000000..37b67a43 --- /dev/null +++ b/.trellis/tasks/05-30-reimbursement-detail-evidence-actions/task.json @@ -0,0 +1,26 @@ +{ + "id": "reimbursement-detail-evidence-actions", + "name": "reimbursement-detail-evidence-actions", + "title": "报销详情证据与动作区重构", + "description": "按全页面设计规则重构报销详情:状态与下一步先行,证据材料居中,付款动作集中,右侧动作区降噪。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P1", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file diff --git a/.trellis/tasks/05-30-wecom-hr-boundary-pages/check.jsonl b/.trellis/tasks/05-30-wecom-hr-boundary-pages/check.jsonl new file mode 100644 index 00000000..3c4fcb4d --- /dev/null +++ b/.trellis/tasks/05-30-wecom-hr-boundary-pages/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Required task validation and commit gate"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Required frontend typecheck/build and focused visual/Playwright checks"} +{"file": ".trellis/spec/hyb-oa/wecom-boundary.md", "reason": "Check no Enterprise WeChat write or HR ownership drift"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and privacy rules for WeCom/HR reports"} diff --git a/.trellis/tasks/05-30-wecom-hr-boundary-pages/design.md b/.trellis/tasks/05-30-wecom-hr-boundary-pages/design.md new file mode 100644 index 00000000..8093775d --- /dev/null +++ b/.trellis/tasks/05-30-wecom-hr-boundary-pages/design.md @@ -0,0 +1,18 @@ +# 企微主办 HR 考勤页面收敛设计 + +## Page Template + +请假记录、考勤和企微审批历史使用 `业务台账列表` 的只读/镜像表达;移动请假使用移动卡片列表和状态详情,不做 PC 表单壳。 + +## Implementation Shape + +- 页面首屏固定说明企业微信主办,OA 只做留存、镜像、异常和应急。 +- 移除或弱化普通员工日常提交主动作;仅在应急或管理状态显示说明型入口。 +- 历史和考勤异常只展示摘要、同步状态、审批链/打卡摘要和下一步。 +- 不新增任何企业微信写入调用。 + +## Verification Focus + +- 请假、补卡、外出、加班不会出现 OA 快批误导。 +- 同步失败、未映射、无权限等状态使用自然中文。 +- 移动端入口和 PC 入口口径一致。 diff --git a/.trellis/tasks/05-30-wecom-hr-boundary-pages/implement.jsonl b/.trellis/tasks/05-30-wecom-hr-boundary-pages/implement.jsonl new file mode 100644 index 00000000..f80a79cd --- /dev/null +++ b/.trellis/tasks/05-30-wecom-hr-boundary-pages/implement.jsonl @@ -0,0 +1,5 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task, approval and solo-developer execution constraints"} +{"file": ".trellis/spec/hyb-oa/frontend-react-vite-design.md", "reason": "Page template, mobile and shell rules"} +{"file": ".trellis/spec/hyb-oa/wecom-boundary.md", "reason": "Enterprise WeChat ownership and write-gate boundaries"} +{"file": ".trellis/spec/hyb-oa/approval-workflow.md", "reason": "Approval action boundaries for OA vs WeCom-owned flows"} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence and report privacy rules"} diff --git a/.trellis/tasks/05-30-wecom-hr-boundary-pages/prd.md b/.trellis/tasks/05-30-wecom-hr-boundary-pages/prd.md new file mode 100644 index 00000000..9431cadd --- /dev/null +++ b/.trellis/tasks/05-30-wecom-hr-boundary-pages/prd.md @@ -0,0 +1,51 @@ +# 企微主办 HR 考勤页面收敛 + +## Goal + +统一请假记录、考勤、企微审批历史和移动请假的页面口径:企业微信主办打卡、请假、补卡、外出、加班等日常动作;OA 只做镜像、历史、审计、异常解释和明确应急接管。 + +## Scope + +- In scope:请假记录、考勤、企微审批历史、移动请假页面文案、入口和动作显隐。 +- Out of scope:企业微信写入、模板创建、真实审批提交、深度考勤排班和应急接管后端。 + +## Pages + +- `client/src/pages/LeaveRequestPage.tsx` +- `client/src/pages/AttendancePage.tsx` +- `client/src/pages/WecomApprovalArchivePage.tsx` +- `client/src/pages/MobileLeavePage.tsx` + +## Requirements + +- 页面标题和首屏文案明确 `企业微信主办`、`OA 留存/镜像`、`仅历史/异常/应急`。 +- 默认不突出 `提交请假`、`补卡`、`外出`、`加班` 等 OA 日常主动作;只有应急模式或管理场景才展示。 +- 企微审批历史只读展示摘要、外部单号、同步状态、审批链和失败下一步,不出现 OA 快批。 +- 考勤页展示月度/周期摘要、异常、同步状态和解释记录,不做打卡入口。 +- 移动请假默认是状态/历史查看,不误导用户在 OA 里重复发起。 + +## Out of Scope + +- 不写企业微信、不创建企微审批模板、不提交真实审批单。 +- 不开发深度考勤排班、假期额度、恢复回写或应急接管后端。 +- 不改已有归档数据结构和审批链校验。 + +## Acceptance Criteria + +- [ ] HR/考勤页面不会让普通员工误以为 OA 是日常请假/打卡主入口。 +- [ ] 企微历史页没有通过、驳回、退回、转审等 OA 审批动作。 +- [ ] 异常状态说明同步来源、影响和下一步,不展示接口错误或原始 payload。 +- [ ] 移动端符合顶部状态/卡片列表/底部轻动作规则。 + +## Test Plan + +- `cd client && npm run typecheck` +- `cd client && npm run build` +- 聚焦请假、考勤、企微历史、移动请假相关 Playwright/截图。 +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` + +## Implementation Notes + +- 只读和异常解释优先,不新增企微写入。 +- 页面文案使用自然中文,不暴露企微 API 细节、模板 ID 或回调 payload。 diff --git a/.trellis/tasks/05-30-wecom-hr-boundary-pages/task.json b/.trellis/tasks/05-30-wecom-hr-boundary-pages/task.json new file mode 100644 index 00000000..794f9f02 --- /dev/null +++ b/.trellis/tasks/05-30-wecom-hr-boundary-pages/task.json @@ -0,0 +1,26 @@ +{ + "id": "wecom-hr-boundary-pages", + "name": "wecom-hr-boundary-pages", + "title": "企微主办 HR 考勤页面收敛", + "description": "收敛请假记录、考勤、企微审批历史和移动请假页面:明确企微主办,OA 只做镜像、历史、异常和应急。", + "status": "planning", + "dev_type": null, + "scope": "frontend-page-redesign", + "package": null, + "priority": "P1", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-30", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": "05-29-page-design-rules-audit", + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file