From ce26c869194f3bb7a6aa403ea44d50a5f058d8d1 Mon Sep 17 00:00:00 2001 From: shunli Date: Thu, 28 May 2026 09:10:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=88=B6=E5=BA=A6=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=A4=8D=E5=AE=A1=E4=BB=BB=E5=8A=A1=EF=BC=8805-28-oa-?= =?UTF-8?q?policy-flow-review=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../05-28-oa-policy-flow-review/check.jsonl | 4 + .../implement.jsonl | 4 + .../05-28-oa-policy-flow-review/implement.md | 28 +++++ .../tasks/05-28-oa-policy-flow-review/prd.md | 71 ++++++++++++ .../research/policy-flow-review.md | 101 ++++++++++++++++++ .../05-28-oa-policy-flow-review/task.json | 34 ++++++ 6 files changed, 242 insertions(+) create mode 100644 .trellis/tasks/05-28-oa-policy-flow-review/check.jsonl create mode 100644 .trellis/tasks/05-28-oa-policy-flow-review/implement.jsonl create mode 100644 .trellis/tasks/05-28-oa-policy-flow-review/implement.md create mode 100644 .trellis/tasks/05-28-oa-policy-flow-review/prd.md create mode 100644 .trellis/tasks/05-28-oa-policy-flow-review/research/policy-flow-review.md create mode 100644 .trellis/tasks/05-28-oa-policy-flow-review/task.json diff --git a/.trellis/tasks/05-28-oa-policy-flow-review/check.jsonl b/.trellis/tasks/05-28-oa-policy-flow-review/check.jsonl new file mode 100644 index 00000000..cb25b361 --- /dev/null +++ b/.trellis/tasks/05-28-oa-policy-flow-review/check.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Verify task metadata, Trellis governance and commit requirements."} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Verify evidence summaries use repo-relative refs and avoid sensitive data."} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Verify no sensitive original material, secrets or full paths are recorded."} +{"file": ".trellis/tasks/05-28-oa-policy-flow-review/research/policy-flow-review.md", "reason": "Verify review conclusions match PRD scope and acceptance criteria."} diff --git a/.trellis/tasks/05-28-oa-policy-flow-review/implement.jsonl b/.trellis/tasks/05-28-oa-policy-flow-review/implement.jsonl new file mode 100644 index 00000000..6643abf5 --- /dev/null +++ b/.trellis/tasks/05-28-oa-policy-flow-review/implement.jsonl @@ -0,0 +1,4 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task contract, scope, approval and commit requirements for this review task."} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Evidence report rules, repo-relative paths and sensitive summary boundaries."} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Sensitive company data and secret handling exclusions."} +{"file": ".trellis/tasks/05-28-oa-policy-flow-review/research/policy-flow-review.md", "reason": "Primary review artifact and follow-up recommendations."} diff --git a/.trellis/tasks/05-28-oa-policy-flow-review/implement.md b/.trellis/tasks/05-28-oa-policy-flow-review/implement.md new file mode 100644 index 00000000..60797273 --- /dev/null +++ b/.trellis/tasks/05-28-oa-policy-flow-review/implement.md @@ -0,0 +1,28 @@ +# 实施说明 + +## Approach + +本任务是审查与证据整理任务,不做业务代码实现。执行顺序: + +1. 补齐 Trellis PRD,明确目标、范围、验收、测试和不做事项。 +2. 基于现有 OA 事实源、Trellis 历史审查结论和公司资料脱敏索引,产出制度映射与业务流程复审矩阵。 +3. 同步运行 OAOPS1 只读巡检,把证据写入 OAOPS1 当前任务目录。 +4. 运行 task validate、Trellis governance、diff check 和敏感信息边界扫描。 + +## Constraints + +- 公司资料只使用类别和脱敏结论,不复制 S3/S4 原文。 +- 不写生产配置、不部署、不写企业微信、不创建真实业务数据、不执行付款、不恢复数据库。 +- 发现需要功能改造时,只登记后续 Trellis task 建议。 + +## Evidence + +- 审查报告:`research/policy-flow-review.md` +- OAOPS1 Day3 巡检:`.trellis/tasks/05-26-oa-seven-day-trial-live-ops/research/day3-oa-real-use-daily/summary.json` + +## Verification + +- `python3 ./.trellis/scripts/task.py validate 05-28-oa-policy-flow-review` +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` +- 敏感信息边界扫描,确认没有完整本地路径、Secret、账号凭据或敏感原文。 diff --git a/.trellis/tasks/05-28-oa-policy-flow-review/prd.md b/.trellis/tasks/05-28-oa-policy-flow-review/prd.md new file mode 100644 index 00000000..9c3a22a5 --- /dev/null +++ b/.trellis/tasks/05-28-oa-policy-flow-review/prd.md @@ -0,0 +1,71 @@ +# 制度流程映射与业务流程复审 + +## Goal + +在 OAOPS1 真实试运行继续执行的同时,低风险并行完成一次“公司制度资料类别 -> OA 模块/流程/角色/证据”的脱敏映射,并复审当前核心业务流程是否适合 10 人以下小团队真实使用。产物只形成审查结论、缺口排序和后续任务建议,不导入公司原始资料,不改业务代码,不触发生产写入。 + +## What I Already Know + +- 当前主线仍是 `05-26-oa-seven-day-trial-live-ops`,7 天真实试运行和 Day 7 Go/No-Go 不能被本任务替代。 +- 既有审查已形成页面、流程、测试、制度和发票验真矩阵,结论是系统主流程基本可试运行,但制度签收、用印台账、真实 Day 7 证据、发票验真 provider 和备份恢复仍需继续收口。 +- 当前 docs 已固定小团队 V1 口径:报销、付款、AP、采购、合同、项目、资产由 OA 主办;HR/考勤日常审批优先企业微信,OA 做留存、审计和后续兜底。 +- 公司资料区包含制度、财务、合同、采购、资产、人事、项目和历史归档等类别;资料默认按保密规则处理,只能使用脱敏索引、类别摘要和非敏感结论。 +- `docs/产品设计规则.md` 只保留产品体验事实;前端视觉和交互裁决已经以 `frontend-design` 为准。本任务不做前端视觉改造。 + +## Scope + +- 写入当前 Trellis task 的 PRD、研究结论和必要治理说明。 +- 使用现有 docs、Trellis 历史审查结论、公司资料区脱敏索引和类别结构进行制度/流程映射。 +- 同步执行 OAOPS1 只读巡检,并把证据保存在 OAOPS1 当前任务目录。 +- 输出后续任务建议,不直接修改业务代码、schema、前端页面或生产配置。 + +## Assumptions + +- 用户已批准“真实试运行同步执行,其他任务并行完成”,本任务只做审查和证据整理,可在当前会话直接推进。 +- 制度资料只按类别和脱敏规则引用,不读取或复制 S3/S4 原文正文。 +- 如审查发现需要改 schema、页面、权限或流程规则,另建 Trellis task 后实施。 + +## Requirements + +- 盘点公司资料类别,输出脱敏类别清单,不包含真实完整路径、合同正文、银行资料、工资明细、账号、密钥、客户/供应商/项目真实名称或原始 payload。 +- 将制度类别映射到 OA 模块、业务流程、责任角色、现有证据和缺口。 +- 对当前核心业务流程做合理性复审:报销/PDF OCR、审批、财务付款/AP、采购费用、合同/项目、资产/交接、HR/考勤与企业微信入口。 +- 将缺口分为 P0/P1/P2,并标注是否阻断真实试运行或 Day 7 Go/No-Go。 +- 给出后续实施建议:哪些继续随 OAOPS1 收证据,哪些需要独立功能/规则任务,哪些应保持冻结。 +- 同步执行一次 OAOPS1 每日只读巡检,作为主线试运行继续推进的证据。 + +## Acceptance Criteria + +- [ ] `research/policy-flow-review.md` 存在,并包含脱敏制度映射矩阵、业务流程复审矩阵、风险排序和后续建议。 +- [ ] 不在任务文件、docs、报告或聊天中写入敏感原文、完整账号、Secret、真实票据、合同正文、银行资料、完整本地路径或原始 payload。 +- [ ] 至少执行一次 OAOPS1 只读巡检,并将结果写入 OAOPS1 当前任务证据目录;如外部配置阻断,记录为可解释 `SKIP/BLOCKED`。 +- [ ] 运行 Trellis task validate、Trellis governance gate 和 `git diff --check`。 +- [ ] 提交中文 commit,commit message 引用 `05-28-oa-policy-flow-review`。 + +## Definition Of Done + +- 审查产物能回答“现有公司制度资料对 OA 有哪些可落地点、哪些不能进 OA、哪些流程仍需完善”。 +- 主线 OAOPS1 没有被本任务修改、暂停或替代。 +- 没有生产写入、部署、真实付款、企业微信写入、数据库重置或敏感资料导入。 +- 后续任务建议清晰,能直接转成 Trellis task。 + +## Out Of Scope + +- 不导入公司原始制度、合同、工资、银行、票据、客户、供应商或项目资料。 +- 不新增 schema、API、前端页面、权限规则或审批状态机。 +- 不修改公网配置,不部署,不重启生产服务。 +- 不执行真实付款、真实企业微信写入、数据库恢复或数据清洗。 +- 不实现电子签章、复杂招采、预算硬控、ERP/银行直连、账号密码库或完整电子档案系统。 + +## Test Plan + +- `python3 ./.trellis/scripts/task.py validate 05-28-oa-policy-flow-review` +- `node scripts/qa/check-trellis-governance.mjs` +- `git diff --check` +- OAOPS1 只读巡检:`scripts/qa/run-oa-real-use-daily.sh`,报告目录写入 OAOPS1 当前任务 `research/day3-oa-real-use-daily/`。 + +## Technical Notes + +- 参考当前事实源:`docs/文档索引.md`、`docs/文档事实源状态矩阵.md`、`docs/管理员手册.md`、`docs/员工快速上手.md`、`docs/报销发票附件规则.md`、`docs/需求-采购费用审批规约.md`、`docs/需求-合同附件归档规约.md`、`docs/需求-资产管理规约.md`。 +- 参考既有审查证据:`.trellis/tasks/archive/2026-05/05-27-oa-product-flow-test-policy-audit/research/overall-audit-matrices.md`。 +- 公司资料安全依据:公司资料区的脱敏索引和脱密处理规则;本任务只保留类别级结论。 diff --git a/.trellis/tasks/05-28-oa-policy-flow-review/research/policy-flow-review.md b/.trellis/tasks/05-28-oa-policy-flow-review/research/policy-flow-review.md new file mode 100644 index 00000000..9ecfbd65 --- /dev/null +++ b/.trellis/tasks/05-28-oa-policy-flow-review/research/policy-flow-review.md @@ -0,0 +1,101 @@ +# 制度流程映射与业务流程复审 + +## Executive Conclusion + +本轮审查结论是:**继续 OAOPS1 真实试运行主线,同时把制度和流程缺口作为可执行清单收敛**。现有 OA 已能承载报销、PDF OCR、审批、付款批次、AP、合同台账、采购/费用、项目、资产和企业微信入口的 V1 试运行;当前不适合把公司资料原文批量导入 OA,也不适合在 Day 7 前混入复杂招采、预算硬控、电子签章、完整电子档案或账号密码库。 + +本任务只使用公司资料区的类别结构、脱敏索引和现有 OA 事实源,不复制原文,不记录完整本地路径、真实合同正文、银行资料、工资明细、账号、Secret、客户/供应商/项目真实名称或原始 payload。 + +优先级结论: + +1. **P0:不阻断试运行但必须守住安全边界**。S3/S4 原文、银行流水原件、账号凭据、敏感报价、合同正文、完整路径和未脱敏票面不得进入公网 OA、仓库、报告或聊天。 +2. **P1:继续收真实证据**。OAOPS1 Day 3-Day 7 继续收报销、审批、付款/AP、采购/费用、合同台账、项目、资产和权限只读证据。 +3. **P1:制度签收和用印台账需要轻量化落地**。公告阅读不能等同正式签收;用印台账可先由合同台账字段和人工记录承载,真实使用证明字段不足时再建实现任务。 +4. **P2:复杂制度参数后置**。预算硬控、复杂招采、供应商生命周期、电子签章、完整电子档案、ERP/银行直连和 AI 自动改规则继续冻结。 + +## Sanitized Company Document Inventory + +公司资料区可安全抽象为以下类别: + +| 类别 | 典型内容 | 保密判断 | OA 使用原则 | +| --- | --- | --- | --- | +| 保密索引与脱敏规则 | 分级、脱敏、外发前处理规则 | 可使用脱敏规则和统计摘要 | 作为 OA 资料边界和报告安全边界依据 | +| 制度与索引 | 保密权限、文件命名、资料台账、Git 管理 | 内部制度 | 转成 OA 操作规则、签收要求和资产/资料台账字段 | +| 公司基础资料 | 证照、章程、印章授权、办公资料 | 多数敏感 | OA 只登记摘要、负责人、归档位置摘要和用印留痕 | +| 人事与招聘 | 劳动合同、员工制度、录用入职、候选人材料 | 高敏个人信息 | OA 只处理员工档案摘要、入离职、签收和权限回收;候选人原文不进 OA | +| 财务税务 | 报销、发票回单、代账、工资社保、银行流水 | 高敏财务资料 | OA 承载报销/付款/AP 摘要和必要附件;银行流水、工资明细和原始敏感资料不进仓库/报告 | +| 合同法务 | 合同模板、审查记录、已签/待审合同、保密/IP | 高敏合同资料 | OA 建合同台账、审批、归档位置和非涉密证明;正文/报价按敏感级别决定是否只留线下索引 | +| 项目与交付 | 项目调研、交付材料、客户资料、方案报价、软著 | 商业秘密 | OA 记录项目摘要、里程碑、风险、交付索引;客户资料、报价和技术细节不贴原文 | +| 采购与资产 | 供应商资料、采购资料、设备资产台账 | 供应商/财务敏感 | OA 承载采购/费用申请、资产台账、供应商摘要和附件边界 | +| 历史归档与收件箱 | 历年资料、待分类/待脱敏/待归档材料 | 混合敏感 | 先做脱敏索引和分类治理,不做自动导入 | + +脱敏索引统计显示公司资料中存在大量 S4/S3 材料,因此 OA 的合理定位应是**业务流、责任、摘要、编号、归档位置摘要和审计证据系统**,不是原文资料库。 + +## Policy To OA Mapping Matrix + +| 制度/资料主题 | OA 对应模块 | 现有承载能力 | 缺口 | 建议 | +| --- | --- | --- | --- | --- | +| 财务报销、发票、付款、代账 | 报销、票据/OCR、付款批次、银行回单附件、AP 导出、审计 | 主链路完整,PDF-only、查重、付款/AP 和回单附件已有规则 | 自动发票验真 provider 未生产启用;Day 7 真实样本仍需继续收 | 不阻断试运行;发票验真单独 POC,真实付款继续银行侧 | +| 合同、用印、归档 | 合同台账、统一审批、项目关联、附件审计、归档位置 | 合同台账和敏感资料边界已有规约 | 用印专用字段、版本/份数/归档证明是否够用需真实样本验证 | 先用合同台账 + 人工台账承载;阻断再做 schema/UI 小改 | +| 采购、费用、供应商 | 采购/费用申请、审批、附件、项目/合同关联 | 申请、审批、审计边界清晰 | 比价、供应商准入、预算硬控未落地 | V1 先保留用途、供应商摘要、附件边界和审批;复杂招采 P2 | +| 员工制度、劳动规章、签收 | 公告、员工档案、培训/签收记录候选 | 员工手册已有“公告不等于签收”口径 | OA 缺正式签收回执模型 | 近期用纸面/电子签收;如试运行依赖,建“制度签收轻量回执”任务 | +| 保密、知识产权、资料分级 | 资产台账、合同/项目敏感级别、资料归档位置摘要 | 资产规约支持 EA-DOC/EA-SYS/EA-REPO/EA-BKP | 历史资料只做脱敏索引,未全量入 OA | 继续只登记摘要、hash、敏感级别和责任人;禁止 S3/S4 原文入公网 OA | +| 固定资产、电子资产、备份 | 统一资产台账、编号族、领用/归还/盘点、备份资产 | ASSET1 已完成统一资产台账 V1 | 备份恢复演练证据仍属 OALAUNCH1 门禁 | OAOPS1/OALAUNCH1 继续收证据;账号资产 EA-ACC 暂缓 | +| 账号权限、入离职交接 | 人员、角色、企业微信绑定、离职 checklist、审计 | 管理员手册已明确主管链、角色和权限边界 | 权限回收和制度签收证据需要真实执行 | 不做密码库;只做权限回收清单和审计摘要 | +| 项目、交付、客户沟通 | 项目轻管理、合同关联、采购/费用/报销关联、交付摘要 | 项目轻管理和客户沟通回填规则已有口径 | 客户资料、报价、技术方案高敏,不能全量入 OA | OA 记录结果摘要、下一步和归档索引;正文继续线下受控 | + +## Business Flow Review Matrix + +| 业务流程 | 当前合理性 | 主要风险 | 是否阻断试运行 | 改进建议 | +| --- | --- | --- | --- | --- | +| 员工报销 -> PDF OCR -> 审批 -> 财务复核 -> 付款/AP | 合理,符合小团队“少选项、财务少核错”目标 | 自动验真未生产启用;真实样本数量仍少 | 否 | OAOPS1 继续收真实报销证据;验真 provider 单独 POC | +| 统一审批中心 | 合理,OA 主办域和企微主办域边界清楚 | 自审、无审批人、admin 误用为业务审批必须阻断 | 否,前提是规则继续巡检 | 保持负责人本人兜底、主管链和角色只读巡检 | +| 财务付款、银行回单、AP、代账交接 | 合理,真实支付仍在线下银行侧 | 银行流水原件、工资、回单原件敏感;AP/月结真实证据待收 | 否 | OA 只留付款批次、回单附件、AP 导出和审计摘要;代账交接继续人工核对 | +| 采购/费用 | 基本合理,V1 轻量 | 预算阈值、比价、供应商尽调未制度化 | 否 | 不硬编码未经确认金额;先用说明、附件和审批留痕 | +| 合同/项目 | 合理,台账优先于原文库 | 涉密正文、报价和客户资料误传风险高 | 条件性阻断:一旦误传应暂停对应流程 | 页面和手册继续强调线下归档位置;真实样本验证字段是否够用 | +| 资产/离职交接 | 合理,统一资产台账 V1 可用 | 电子资料、系统、仓库、备份资产的盘点和权限回收需真实执行 | 否 | 继续 EA-DOC/EA-SYS/EA-REPO/EA-BKP;EA-ACC 暂缓 | +| HR/考勤、企业微信入口 | 合理,企业微信主办 HR/考勤,OA 留存 | 深度镜像、应急接管、恢复回写和 RuleOps 仍未进入正式能力 | 否 | 保持冻结;仅按既有路线图推进 | +| 通知、公告、制度签收 | 公告可用,但签收不完整 | 员工制度正式生效证据不足 | 不阻断 OAOPS1,但会影响制度治理完成度 | 建轻量签收任务或先线下/电子签收 | + +## Risk And Gap Ranking + +| 优先级 | 缺口 | 原因 | 建议动作 | +| --- | --- | --- | --- | +| P0 | 敏感原文误入 OA、仓库、报告或聊天 | 公司资料中 S4/S3 占比高,泄露影响大 | 继续执行脱敏规则;自动化报告只写摘要和别名 | +| P0 | 自审、无审批人、越权查看附件 | 直接破坏审批和权限可信度 | 保持只读巡检,发现当天修复或暂停流程 | +| P1 | OAOPS1 Day 3-Day 7 真实证据不足 | Go/No-Go 需要真实使用证据 | 每日跑只读巡检,人工补业务闭环反馈 | +| P1 | 制度签收无正式 OA 回执 | 公告阅读不等于正式签收 | 先线下/电子签收;如需要系统化,建轻量签收任务 | +| P1 | 用印台账字段是否够用未验证 | 合同台账能承载 V1,但真实场景可能需要字段 | 先用现有字段试运行,阻断再改 | +| P1 | 备份恢复演练证据 | OALAUNCH1 最终门禁要求 | 单独沿 OALAUNCH1 完成,不混入本任务 | +| P2 | 发票自动验真生产 provider | 有 provider 抽象但未配置真实 provider | 单独 POC,优先费用可控方案 | +| P2 | 复杂招采、预算硬控、供应商生命周期 | 小团队 V1 不需要成为前置 | 继续冻结,真实需求稳定后再拆任务 | +| P2 | 电子签章、完整电子档案、账号密码库 | 成本和风险高,超出 OA V1 定位 | 不做正式启用前置 | + +## Recommended Follow-Up Tasks + +| 建议任务 | 目标 | 触发条件 | 风险 | +| --- | --- | --- | --- | +| 继续 OAOPS1 Day 3-Day 7 | 真实试运行证据和问题登记 | 当前立即继续 | 低 | +| OALAUNCH1 备份恢复证据补齐 | Day 7 Go/No-Go 前最终门禁 | 试运行接近收口时 | 中,需严格只读/演练边界 | +| 制度签收轻量回执 | 公告/制度发布后形成签收证据 | 用户希望 OA 内闭环签收 | 中,涉及员工证据和权限 | +| 用印台账 V1 小改 | 用印事项、文件版本、份数、责任人、归档证明更清楚 | 真实合同/用印样本证明现字段不足 | 中 | +| 发票验真 provider POC | 验证成本、准确率、限流和降级策略 | 样票授权和预算确认后 | 中 | +| 流程测试矩阵扩展 | 把制度签收、用印、备份恢复纳入自动/人工门禁 | 对应功能或证据任务启动后 | 低到中 | + +## Decision + +本任务不建议立刻改代码。更稳的路线是: + +1. 今天继续 OAOPS1 只读巡检,保持真实试运行主线。 +2. 用本矩阵指导 Day 3-Day 7 人工记录:真实流程是否卡在制度签收、用印、附件敏感边界、付款/AP、权限或备份证据。 +3. 只有当真实样本证明现有字段/流程不够用时,再拆独立 Trellis task 做小改。 + +## References + +- `docs/管理员手册.md` +- `docs/员工快速上手.md` +- `docs/报销发票附件规则.md` +- `docs/需求-采购费用审批规约.md` +- `docs/需求-合同附件归档规约.md` +- `docs/需求-资产管理规约.md` +- `.trellis/tasks/archive/2026-05/05-27-oa-product-flow-test-policy-audit/research/overall-audit-matrices.md` diff --git a/.trellis/tasks/05-28-oa-policy-flow-review/task.json b/.trellis/tasks/05-28-oa-policy-flow-review/task.json new file mode 100644 index 00000000..30303cf0 --- /dev/null +++ b/.trellis/tasks/05-28-oa-policy-flow-review/task.json @@ -0,0 +1,34 @@ +{ + "id": "oa-policy-flow-review", + "name": "oa-policy-flow-review", + "title": "制度流程映射与业务流程复审", + "description": "脱敏梳理公司制度资料类别与 OA 模块、流程、角色和证据的对应关系,复审核心业务流程合理性,并同步 OAOPS1 只读巡检证据。", + "status": "in_progress", + "dev_type": "docs-review", + "scope": "trellis-task-research-and-oaops1-readonly-evidence", + "package": null, + "priority": "P2", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-28", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": null, + "relatedFiles": [ + "docs/管理员手册.md", + "docs/员工快速上手.md", + "docs/报销发票附件规则.md", + "docs/需求-采购费用审批规约.md", + "docs/需求-合同附件归档规约.md", + "docs/需求-资产管理规约.md", + ".trellis/tasks/05-26-oa-seven-day-trial-live-ops/research/day3-oa-real-use-daily/summary.json" + ], + "notes": "", + "meta": {} +}