From 10bc95d05dbf05b11f07c39465c90d99401efb02 Mon Sep 17 00:00:00 2001 From: julia Date: Wed, 29 Jul 2026 15:43:20 +0800 Subject: [PATCH] docs: add Chinese task descriptions --- .../agriculture_003/description_zh.md | 12 ++++ .../agriculture_007/description_zh.md | 12 ++++ .../agriculture_011/description_zh.md | 58 ++++++++++++++++++ .../agriculture_012/description_zh.md | 36 +++++++++++ .../agriculture_013/description_zh.md | 37 +++++++++++ .../agriculture_016/description_zh.md | 12 ++++ .../agriculture_020/description_zh.md | 12 ++++ .../agriculture_021/description_zh.md | 12 ++++ .../agriculture_022/description_zh.md | 13 ++++ .../agriculture_031/description_zh.md | 22 +++++++ .../agriculture_038/description_zh.md | 13 ++++ .../agriculture_042/description_zh.md | 22 +++++++ .../multi-m/Media/media_006/description_zh.md | 39 ++++++++++++ .../multi-m/Media/media_011/description_zh.md | 14 +++++ .../multi-m/Media/media_012/description_zh.md | 37 +++++++++++ .../multi-m/Media/media_016/description_zh.md | 19 ++++++ .../multi-m/Media/media_020/description_zh.md | 24 ++++++++ .../multi-m/Media/media_024/description_zh.md | 22 +++++++ .../multi-m/Media/media_027/description_zh.md | 20 ++++++ .../multi-m/Media/media_029/description_zh.md | 20 ++++++ .../multi-m/Media/media_033/description_zh.md | 19 ++++++ .../multi-m/Media/media_035/description_zh.md | 21 +++++++ .../multi-m/Media/media_060/description_zh.md | 23 +++++++ .../multi-m/Media/media_063/description_zh.md | 13 ++++ .../multi-m/Media/media_065/description_zh.md | 21 +++++++ .../multi-m/Media/media_066/description_zh.md | 19 ++++++ .../multi-m/Media/media_067/description_zh.md | 22 +++++++ .../multi-m/Media/media_068/description_zh.md | 22 +++++++ .../multi-m/Media/media_069/description_zh.md | 23 +++++++ .../multi-m/Media/media_070/description_zh.md | 23 +++++++ .../multi-m/Media/media_072/description_zh.md | 22 +++++++ .../multi-m/Media/media_073/description_zh.md | 22 +++++++ .../Business/business_023/description_zh.md | 22 +++++++ .../Business/business_031/description_zh.md | 20 ++++++ .../Business/business_032/description_zh.md | 20 ++++++ .../Business/business_051/description_zh.md | 15 +++++ .../Business/business_052/description_zh.md | 16 +++++ .../Business/business_062/description_zh.md | 23 +++++++ .../Business/business_065/description_zh.md | 39 ++++++++++++ .../Business/business_084/description_zh.md | 27 ++++++++ .../Business/business_110/description_zh.md | 37 +++++++++++ .../Business/business_121/description_zh.md | 61 +++++++++++++++++++ .../Business/business_135/description_zh.md | 42 +++++++++++++ .../Business/business_143/description_zh.md | 37 +++++++++++ .../Business/business_144/description_zh.md | 49 +++++++++++++++ .../Business/business_155/description_zh.md | 41 +++++++++++++ .../Business/business_302/description_zh.md | 38 ++++++++++++ .../healthcare_001/description_zh.md | 18 ++++++ .../healthcare_002/description_zh.md | 18 ++++++ .../healthcare_007/description_zh.md | 15 +++++ .../healthcare_013/description_zh.md | 17 ++++++ .../healthcare_015/description_zh.md | 18 ++++++ .../healthcare_017/description_zh.md | 19 ++++++ .../healthcare_019/description_zh.md | 17 ++++++ .../healthcare_021/description_zh.md | 16 +++++ .../healthcare_023/description_zh.md | 14 +++++ .../healthcare_025/description_zh.md | 15 +++++ .../healthcare_026/description_zh.md | 29 +++++++++ .../healthcare_030/description_zh.md | 16 +++++ .../healthcare_034/description_zh.md | 15 +++++ .../healthcare_038/description_zh.md | 16 +++++ .../healthcare_045/description_zh.md | 16 +++++ .../healthcare_048/description_zh.md | 17 ++++++ .../Software/software_002/description_zh.md | 16 +++++ .../Software/software_004/description_zh.md | 17 ++++++ .../Software/software_005/description_zh.md | 18 ++++++ .../Software/software_006/description_zh.md | 17 ++++++ .../Software/software_008/description_zh.md | 17 ++++++ .../Software/software_009/description_zh.md | 17 ++++++ .../Software/software_012/description_zh.md | 14 +++++ .../Software/software_014/description_zh.md | 18 ++++++ .../Software/software_018/description_zh.md | 13 ++++ .../Software/software_021/description_zh.md | 17 ++++++ .../Software/software_023/description_zh.md | 17 ++++++ .../Software/software_024/description_zh.md | 17 ++++++ .../Software/software_025/description_zh.md | 20 ++++++ .../Software/software_026/description_zh.md | 17 ++++++ .../Software/software_027/description_zh.md | 18 ++++++ .../Software/software_029/description_zh.md | 22 +++++++ .../Software/software_030/description_zh.md | 17 ++++++ .../Software/software_031/description_zh.md | 20 ++++++ .../Software/software_032/description_zh.md | 19 ++++++ .../Software/software_033/description_zh.md | 17 ++++++ .../Software/software_034/description_zh.md | 17 ++++++ .../Software/software_035/description_zh.md | 17 ++++++ .../Software/software_038/description_zh.md | 19 ++++++ .../Software/software_039/description_zh.md | 19 ++++++ .../Software/software_040/description_zh.md | 18 ++++++ .../Software/software_041/description_zh.md | 17 ++++++ .../Software/software_042/description_zh.md | 17 ++++++ .../Software/software_043/description_zh.md | 13 ++++ .../Software/software_044/description_zh.md | 33 ++++++++++ .../Software/software_046/description_zh.md | 17 ++++++ .../Software/software_047/description_zh.md | 17 ++++++ .../Teamwork/teamwork_009/description_zh.md | 13 ++++ .../Teamwork/teamwork_011/description_zh.md | 33 ++++++++++ .../Teamwork/teamwork_014/description_zh.md | 29 +++++++++ .../Teamwork/teamwork_020/description_zh.md | 28 +++++++++ .../Teamwork/teamwork_030/description_zh.md | 16 +++++ .../Teamwork/teamwork_032/description_zh.md | 34 +++++++++++ .../Teamwork/teamwork_042/description_zh.md | 34 +++++++++++ .../Teamwork/teamwork_043/description_zh.md | 30 +++++++++ .../Teamwork/teamwork_052/description_zh.md | 25 ++++++++ .../Teamwork/teamwork_074/description_zh.md | 34 +++++++++++ .../Teamwork/teamwork_082/description_zh.md | 17 ++++++ .../Teamwork/teamwork_083/description_zh.md | 53 ++++++++++++++++ 106 files changed, 2367 insertions(+) create mode 100644 tasks/multi-m/Agriculture/agriculture_003/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_007/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_011/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_012/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_013/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_016/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_020/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_021/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_022/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_031/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_038/description_zh.md create mode 100644 tasks/multi-m/Agriculture/agriculture_042/description_zh.md create mode 100644 tasks/multi-m/Media/media_006/description_zh.md create mode 100644 tasks/multi-m/Media/media_011/description_zh.md create mode 100644 tasks/multi-m/Media/media_012/description_zh.md create mode 100644 tasks/multi-m/Media/media_016/description_zh.md create mode 100644 tasks/multi-m/Media/media_020/description_zh.md create mode 100644 tasks/multi-m/Media/media_024/description_zh.md create mode 100644 tasks/multi-m/Media/media_027/description_zh.md create mode 100644 tasks/multi-m/Media/media_029/description_zh.md create mode 100644 tasks/multi-m/Media/media_033/description_zh.md create mode 100644 tasks/multi-m/Media/media_035/description_zh.md create mode 100644 tasks/multi-m/Media/media_060/description_zh.md create mode 100644 tasks/multi-m/Media/media_063/description_zh.md create mode 100644 tasks/multi-m/Media/media_065/description_zh.md create mode 100644 tasks/multi-m/Media/media_066/description_zh.md create mode 100644 tasks/multi-m/Media/media_067/description_zh.md create mode 100644 tasks/multi-m/Media/media_068/description_zh.md create mode 100644 tasks/multi-m/Media/media_069/description_zh.md create mode 100644 tasks/multi-m/Media/media_070/description_zh.md create mode 100644 tasks/multi-m/Media/media_072/description_zh.md create mode 100644 tasks/multi-m/Media/media_073/description_zh.md create mode 100644 tasks/uni-m/Business/business_023/description_zh.md create mode 100644 tasks/uni-m/Business/business_031/description_zh.md create mode 100644 tasks/uni-m/Business/business_032/description_zh.md create mode 100644 tasks/uni-m/Business/business_051/description_zh.md create mode 100644 tasks/uni-m/Business/business_052/description_zh.md create mode 100644 tasks/uni-m/Business/business_062/description_zh.md create mode 100644 tasks/uni-m/Business/business_065/description_zh.md create mode 100644 tasks/uni-m/Business/business_084/description_zh.md create mode 100644 tasks/uni-m/Business/business_110/description_zh.md create mode 100644 tasks/uni-m/Business/business_121/description_zh.md create mode 100644 tasks/uni-m/Business/business_135/description_zh.md create mode 100644 tasks/uni-m/Business/business_143/description_zh.md create mode 100644 tasks/uni-m/Business/business_144/description_zh.md create mode 100644 tasks/uni-m/Business/business_155/description_zh.md create mode 100644 tasks/uni-m/Business/business_302/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_001/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_002/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_007/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_013/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_015/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_017/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_019/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_021/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_023/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_025/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_026/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_030/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_034/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_038/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_045/description_zh.md create mode 100644 tasks/uni-m/Healthcare/healthcare_048/description_zh.md create mode 100644 tasks/uni-m/Software/software_002/description_zh.md create mode 100644 tasks/uni-m/Software/software_004/description_zh.md create mode 100644 tasks/uni-m/Software/software_005/description_zh.md create mode 100644 tasks/uni-m/Software/software_006/description_zh.md create mode 100644 tasks/uni-m/Software/software_008/description_zh.md create mode 100644 tasks/uni-m/Software/software_009/description_zh.md create mode 100644 tasks/uni-m/Software/software_012/description_zh.md create mode 100644 tasks/uni-m/Software/software_014/description_zh.md create mode 100644 tasks/uni-m/Software/software_018/description_zh.md create mode 100644 tasks/uni-m/Software/software_021/description_zh.md create mode 100644 tasks/uni-m/Software/software_023/description_zh.md create mode 100644 tasks/uni-m/Software/software_024/description_zh.md create mode 100644 tasks/uni-m/Software/software_025/description_zh.md create mode 100644 tasks/uni-m/Software/software_026/description_zh.md create mode 100644 tasks/uni-m/Software/software_027/description_zh.md create mode 100644 tasks/uni-m/Software/software_029/description_zh.md create mode 100644 tasks/uni-m/Software/software_030/description_zh.md create mode 100644 tasks/uni-m/Software/software_031/description_zh.md create mode 100644 tasks/uni-m/Software/software_032/description_zh.md create mode 100644 tasks/uni-m/Software/software_033/description_zh.md create mode 100644 tasks/uni-m/Software/software_034/description_zh.md create mode 100644 tasks/uni-m/Software/software_035/description_zh.md create mode 100644 tasks/uni-m/Software/software_038/description_zh.md create mode 100644 tasks/uni-m/Software/software_039/description_zh.md create mode 100644 tasks/uni-m/Software/software_040/description_zh.md create mode 100644 tasks/uni-m/Software/software_041/description_zh.md create mode 100644 tasks/uni-m/Software/software_042/description_zh.md create mode 100644 tasks/uni-m/Software/software_043/description_zh.md create mode 100644 tasks/uni-m/Software/software_044/description_zh.md create mode 100644 tasks/uni-m/Software/software_046/description_zh.md create mode 100644 tasks/uni-m/Software/software_047/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_009/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_011/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_014/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_020/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_030/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_032/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_042/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_043/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_052/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_074/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_082/description_zh.md create mode 100644 tasks/uni-m/Teamwork/teamwork_083/description_zh.md diff --git a/tasks/multi-m/Agriculture/agriculture_003/description_zh.md b/tasks/multi-m/Agriculture/agriculture_003/description_zh.md new file mode 100644 index 0000000..5d9e074 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_003/description_zh.md @@ -0,0 +1,12 @@ +**任务要求:** +在 e-label 中,创建一张新的数字葡萄酒标签,名称为 'Estate Pinot Noir 2024'。填写所有必需的合规字段:Producer ('Boutique Organic Farm')、Vintage 2024、AOC Burgundy、Grape Variety 100% Pinot Noir、Alcohol 13.5% vol、Volume 750 mL,以及 Allergen 'Sulphites'。然后,利用领域知识填写感官字段:为 Pinot Noir 设定合适的饮用温度,选择 Burgundy 酒杯类型,至少指定两种具体的餐酒搭配(例如,duck breast),并撰写一段少于 100 个字符的品鉴描述。导出为带二维码的 PDF。 + +**步骤:** +1. 在 e-label 中创建一条新的葡萄酒记录。 +2. 以精确格式填写所有必需的合规字段。 +3. 基于 Pinot Noir 的特征推断并填写感官字段。 +4. 将标签导出为带二维码的 PDF。 + +**登录凭据:** + +- e-label: Admin / Admin2024!Pass diff --git a/tasks/multi-m/Agriculture/agriculture_007/description_zh.md b/tasks/multi-m/Agriculture/agriculture_007/description_zh.md new file mode 100644 index 0000000..4dfd9ad --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_007/description_zh.md @@ -0,0 +1,12 @@ +**任务要求:** +Grocy 中的 Tomatoes 目前库存过剩。访问 Recipya,搜索一个使用 tomatoes 的保存或罐装食谱(例如,'Tomato Sauce' 或 'Canned Tomatoes')。读取所选食谱的完整配料表。将这些配料与 Grocy 当前库存进行交叉比对。把任何缺少的辅助配料(例如特定香草、vinegar 或 canning salt)添加到 Grocy 的购物清单中,并在购物清单条目里注明食谱名称。 + +**步骤:** +1. 在 Recipya 中搜索一个使用 tomatoes 的保存类食谱。 +2. 将该食谱的配料表与 Grocy 库存进行比较。 +3. 将缺少的物品添加到 Grocy 购物清单,并关联到该食谱。 + +**登录凭据:** + +- grocy: admin / admin +- recipya: admin@recipya.com / mw-admin-123 diff --git a/tasks/multi-m/Agriculture/agriculture_011/description_zh.md b/tasks/multi-m/Agriculture/agriculture_011/description_zh.md new file mode 100644 index 0000000..99f5ac8 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_011/description_zh.md @@ -0,0 +1,58 @@ +**任务要求:** + +步骤 1 - 顺序视觉分析: +先检查 `tasks/multi-m/inputs/farmos_crop_043.jpg`(整块田地概览):注意整体冠层状况,以及从远处是否可检测到虫害。然后检查 `tasks/multi-m/inputs/farmos_crop_044.jpg`(穗部/叶鞘近景):观察是否有密集的蚜虫群、蜕皮以及叶片损伤。结合两张图的观察结果,依据下表判断严重程度: + +| 严重程度 | 视觉标准 | 干预措施 | +|----------|----------------|--------------| +| Low | 零散虫体,无聚集,无可见叶片损伤 | 仅监测,3 天后复查 | +| Medium | 局部聚集,轻微黄化或卷叶 | 使用 Neem Oil(OMRI-listed) | +| **High** | 穗部/叶鞘处有密集虫群,可见蜕皮 | 使用 Pyrethrin(OMRI-listed) | + +步骤 2 - 在 FarmOS 中定位玉米植株资产: +找到现有的 corn / maize 植株资产。它可能显示为中文名称(例如 '玉米-大棚1号')或英文名称(例如 'Corn Greenhouse 1')。在继续之前,确认这两个名称指向同一个单一资产 - 不要创建重复项。 + +步骤 3 - 创建四条日志(所有字段内容必须为英文): + +**Log A - Emergency Observation Log(今天):** +- Log type: Observation +- Asset: corn plant asset +- Attach `tasks/multi-m/inputs/farmos_crop_044.jpg` as the photo evidence +- In the notes field, record: (1) what tasks/multi-m/inputs/farmos_crop_043.jpg shows about overall canopy condition (note that it cannot confirm or rule out aphid density at distance), (2) what tasks/multi-m/inputs/farmos_crop_044.jpg shows about dense aphid clustering at the tassel/leaf sheath base (shed skins visible), (3) final severity determination: "High" +- Set a `severity` annotation to "High" + +**Log B - Input Log(今天):** +- Log type: Input +- Asset: corn plant asset (same as Log A) +- Notes must include: pesticide name "Pyrethrin (OMRI-listed)", application rate "200 mL/acre", organic certification number "OMRI-2023-PY-001", operator "Li Shifu", equipment "Power Sprayer No. 1" + +**Log C - Follow-up Observation Log(今天 + 7 天):** +- Log type: Observation +- Asset: corn plant asset (same as Log A) +- Date must be exactly 7 calendar days after today (handle cross-month arithmetic correctly, e.g. Jan 27 + 7 = Feb 3, not Jan 34) +- Notes must describe: aphid count reduced by approximately 70%, recommend continued monitoring for 7 more days before deciding on re-application + +**Log D - Maintenance Log(今天):** +- Log type: Maintenance +- Asset: **equipment asset** "Power Sprayer No. 1" (NOT the corn plant asset) +- Notes: post-spray equipment cleaning with water rinse to prevent organic pesticide cross-contamination + +**步骤:** +1. 依次检查 tasks/multi-m/inputs/farmos_crop_043.jpg(整田)和 tasks/multi-m/inputs/farmos_crop_044.jpg(近景);记录你的观察结果。 +2. 在 FarmOS 中定位现有的 corn 植株资产(同时尝试中文和英文名称变体)。 +3. 在 corn plant asset 上创建 Emergency Observation Log(今天):附加 tasks/multi-m/inputs/farmos_crop_044.jpg,记录双图观察结果,注明严重程度 "High"。 +4. 在 corn plant asset 上创建 Input Log(今天):包含 Pyrethrin、200 mL/acre、cert# OMRI-2023-PY-001、operator Li Shifu、equipment Power Sprayer No. 1。 +5. 在 corn plant asset 上创建 Follow-up Observation Log(今天 + 7 天):约 70% 减少,建议继续监测。 +6. 在 **equipment** 资产 "Power Sprayer No. 1" 上创建 Maintenance Log(今天):喷洒后用清水冲洗设备。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/farmos_crop_043.jpg` + - Type: image + - Role: full_field_overview_corn +- **File 2:** `tasks/multi-m/inputs/farmos_crop_044.jpg` + - Type: image + - Role: close_up_aphid_infestation_tassel + +**登录凭据:** + +- farmos: admin / admin123456 diff --git a/tasks/multi-m/Agriculture/agriculture_012/description_zh.md b/tasks/multi-m/Agriculture/agriculture_012/description_zh.md new file mode 100644 index 0000000..a603b84 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_012/description_zh.md @@ -0,0 +1,36 @@ +**任务要求:** + +步骤 1 - 在 e-label 中创建一条新的葡萄酒记录,并填写所有必需的合规字段: + +| Field | Required value | +|-------|---------------| +| Producer | Farm/winery name as recorded in FarmOS (must match exactly) | +| Vintage | 2023 | +| AOC / Appellation | The certified organic production region for this farm | +| Grape Variety | Pinot Noir, 100% | +| Alcohol % | Must use format "13.5% vol" (not "13.5%" or "13.5度") | +| Net Volume | 750 mL | +| Allergens | Must include the text "Sulphites" or "亚硫酸盐" (exact substring) | + +所有七个必填字段都必须非空。缺少任意一个都会使标签不合规。 + +步骤 2 - 使用侍酒师级别的领域推断填写面向消费者的感官字段: +基于声明的葡萄品种(Pinot Noir)及其已知特征,完成以下字段。取值必须基于 Pinot Noir 的真实特性 - 不能使用通用默认值: + +- Serving temperature: Pinot Noir is a light-bodied red; correct range is 12–16°C (not the 8–10°C used for white wines) +- Glass type: Burgundy glass (not Bordeaux glass — Pinot Noir's aromatics require a wider bowl) +- Food pairings: at least 2 specific dish names appropriate for Pinot Noir (e.g. duck breast with cherry sauce, mushroom risotto, Burgundy-style beef) +- Tasting description: ≤100 characters; must mention at least one of: aroma profile, tannin level, acidity, or finish of Pinot Noir + +步骤 3 - 导出 / 生成带二维码的数字标签预览: +保存记录后,触发二维码 PDF 导出。输出内容必须包含一个可正常扫描的二维码,嵌入在文档中 - 不是装饰性图形。 + +**步骤:** +1. 在 e-label 中创建一条新的葡萄酒记录。按指定填写全部 7 个必需合规字段。 +2. 使用 Pinot Noir 的领域知识填写 serving temperature(12–16°C)、glass type(Burgundy)、food pairings(≥2 个具体菜品)以及 tasting description(≤100 chars,需提到 aroma/tannin/acidity/finish)。 +3. 在保存前,验证 Producer 字段与 FarmOS 中已有的 farm/winery 名称完全一致。 +4. 将 e-label 记录导出为带二维码的 PDF。 + +**登录凭据:** + +- e-label: Admin / Admin2024!Pass diff --git a/tasks/multi-m/Agriculture/agriculture_013/description_zh.md b/tasks/multi-m/Agriculture/agriculture_013/description_zh.md new file mode 100644 index 0000000..ae2cc30 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_013/description_zh.md @@ -0,0 +1,37 @@ +**任务要求:** + +步骤 1 - 视觉分析与关键词推导: +仔细检查菜品照片(`tasks/multi-m/inputs/recipya_recipe_545.jpg`)。根据可见食材(颜色、形状、质地)、烹饪方式、地区菜系线索识别菜品类型。推导 1-3 个文本搜索关键词,以便在食谱数据库中定位这道菜。不要随机猜测 - 应用烹饪领域知识(例如,层叠的彩色蔬菜、法式乡村风格 → 可考虑使用 "ratatouille" 作为搜索词)。 + +步骤 2 - Recipya 关键词搜索与匹配判断: +使用推导出的关键词搜索 Recipya。判断结果是否构成有效匹配:匹配要求与可见菜品内容的食材重合度 ≥70%(而不只是名称相似)。 + +- **如果找到匹配食谱:** 读取 Recipya 中完整的配料表及其数量。 +- **如果没有找到有效匹配:** 至少从照片中直接识别出 5 种可见食材(并估计数量),然后在 Recipya 中创建新食谱(包括:名称、≥5 种配料、至少 4 个烹饪步骤)。 + +步骤 3 - 按配料检查 Grocy 库存: +对于步骤 2 中食谱里的每一种配料,检查 Grocy 当前库存: +- 库存充足(> 500 g 或 > 5 units)→ 标记为 "available" +- 库存不足或缺货 → 添加到 Grocy 购物清单,并在备注中包含:所需数量以及餐厅名称 "Bistrot Provençal" + +步骤 4 - 创建 Grocy Recipe: +在 Grocy 中创建新的 Recipe 条目: +- Name: 与 Recipya 食谱名称相同(无论是匹配到的还是新建的) +- Ingredient list: 关联到 Grocy products(必须与 Recipya 食材列表匹配;需要语义匹配 - Recipya 中的 "Aubergine" 在 Grocy 中可能是 "Eggplant" 或 "茄子") +- 将菜品照片(`tasks/multi-m/inputs/recipya_recipe_545.jpg`)作为 Recipe 的图片附件上传(不是作为 product image) + +**步骤:** +1. 检查菜品照片(`tasks/multi-m/inputs/recipya_recipe_545.jpg`);识别菜品类型并推导 1-3 个文本搜索关键词。 +2. 使用关键词搜索 Recipya。判断是否存在匹配(≥70% 食材重合)。如果没有匹配,则创建一个新的 Recipya 食谱,包含 ≥5 种配料和 ≥4 个烹饪步骤。 +3. 对确认的食谱中的每种配料,检查 Grocy 库存。将缺货物品添加到 Grocy 购物清单,并注明数量和 "Bistrot Provençal"。 +4. 在 Grocy 中创建一个与 Recipya 食谱同名的 Recipe,完整配料列表关联到 Grocy products,并将菜品照片(`tasks/multi-m/inputs/recipya_recipe_545.jpg`)作为 recipe image 上传。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/recipya_recipe_545.jpg` + - Type: image + - Role: dish_photo_from_restaurant_partner + +**登录凭据:** + +- grocy: admin / admin +- recipya: admin@recipya.com / mw-admin-123 diff --git a/tasks/multi-m/Agriculture/agriculture_016/description_zh.md b/tasks/multi-m/Agriculture/agriculture_016/description_zh.md new file mode 100644 index 0000000..f5162bf --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_016/description_zh.md @@ -0,0 +1,12 @@ +**任务要求:** +在 FarmOS 中,找到经过认证的 garlic 地块的植株资产。记录一条今天的 input log,详细说明使用 'Backpack Sprayer #2' 以 150 mL/acre 施用 neem oil(OMRI-2024-NO-007)。备注中包含 'applied during cooler morning hours to avoid leaf burn'。紧接着,再记录一条针对 'Backpack Sprayer #2' equipment asset 的 maintenance log,内容为 'triple-rinse clean with clean water'。 + +**步骤:** +1. 在 FarmOS 中找到 garlic 地块资产。 +2. 记录一条 input log,包含 OMRI 证书、用量、设备以及具体备注。 +3. 找到 'Backpack Sprayer #2' equipment asset。 +4. 记录一条 maintenance log,说明三次冲洗清洁。 + +**登录凭据:** + +- farmos: admin / admin123456 diff --git a/tasks/multi-m/Agriculture/agriculture_020/description_zh.md b/tasks/multi-m/Agriculture/agriculture_020/description_zh.md new file mode 100644 index 0000000..0eeab98 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_020/description_zh.md @@ -0,0 +1,12 @@ +**任务要求:** +在 Recipya 中搜索 'Ratatouille',以获取真实的配料清单。对于食谱中列出的每一种主要蔬菜配料(例如,Aubergine、Courgette、Bell Pepper、Tomato),检查 Grocy 中当前的库存水平。如果库存大于 500g(或 5 units),则在本地标记为 available。对于任何库存不足或缺失的配料,将其添加到 Grocy 购物清单中,数量需补足到 500g/5 units,并附上备注 'Bistrot Provençal menu expansion'。 + +**步骤:** +1. 在 Recipya 中搜索 Ratatouille 食谱并提取主要蔬菜配料。 +2. 在 Grocy 中检查这些特定配料的库存水平,并考虑名称变体。 +3. 将任何不足的配料添加到 Grocy 购物清单,并使用指定的餐厅备注。 + +**登录凭据:** + +- recipya: admin@recipya.com / mw-admin-123 +- grocy: admin / admin diff --git a/tasks/multi-m/Agriculture/agriculture_021/description_zh.md b/tasks/multi-m/Agriculture/agriculture_021/description_zh.md new file mode 100644 index 0000000..079bed6 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_021/description_zh.md @@ -0,0 +1,12 @@ +**任务要求:** +遍历 Grocy 中所有在其 'batch_number' 自定义用户字段中分配了批次号的产品。对于每个批次号,查询 FarmOS 中是否存在对应的 harvest log,且该 harvest log 的 name 与批次号完全相同。如果某个 Grocy 产品的批次号在 FarmOS 中没有匹配项,则编辑该 Grocy 产品,在其 description 字段中追加 'AUDIT FLAG: Missing FarmOS harvest log'。 + +**步骤:** +1. 从 Grocy 产品的自定义用户字段中检索所有批次号。 +2. 将每个批次号与 FarmOS harvest log 名称进行交叉比对。 +3. 对于任何未匹配的批次,在 Grocy 产品描述中追加差异标记。 + +**登录凭据:** + +- grocy: admin / admin +- farmos: admin / admin123456 diff --git a/tasks/multi-m/Agriculture/agriculture_022/description_zh.md b/tasks/multi-m/Agriculture/agriculture_022/description_zh.md new file mode 100644 index 0000000..7064148 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_022/description_zh.md @@ -0,0 +1,13 @@ +**任务要求:** +在 Grocy 中,检索所有带有真实批次标识的产品列表 - 具体来说,就是 `stock` 表中 `stock_id` 不是自动生成占位符的条目(即 `stock_id` 不以 `x` 开头)。对于每一个这样的 `stock_id`,通过 FarmOS 的 JSON:API 端点 `/api/log/harvest` 进行查询,并检查是否存在任一 harvest log 的 `attributes.lot_number` 值与该 `stock_id` **完全相等**。如果某个 Grocy 产品的 `stock_id` 没有对应的 FarmOS harvest log,你必须执行两项操作:1)在 Grocy 产品 description 中添加备注 'DISCREPANCY: No matching FarmOS harvest log found',以及 2)在产品名称后追加 '[REVIEW REQUIRED]'。不要修改那些 `stock_id` 在 FarmOS harvest log 中有匹配项的产品。 + +**步骤:** +1. 提取所有批次标识 - 即 Grocy 的 `stock` 表中 `stock_id` 不以 `x` 开头的行。 +2. 对于每个 `stock_id`,在 FarmOS harvest logs 中搜索其 `lot_number` 属性完全等于该值的记录。 +3. 找出那些 `stock_id` 在 FarmOS harvest logs 中缺失匹配的 Grocy 产品。 +4. 通过在描述中追加差异备注并在名称后追加 `[REVIEW REQUIRED]` 来标记不一致的 Grocy 产品。 + +**登录凭据:** + +- grocy: admin / admin +- farmos: admin / admin123456 diff --git a/tasks/multi-m/Agriculture/agriculture_031/description_zh.md b/tasks/multi-m/Agriculture/agriculture_031/description_zh.md new file mode 100644 index 0000000..32271cb --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_031/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** +分析所提供的菜品照片以识别菜品。使用推导出的关键词在 Recipya 中搜索并找到精确食谱。读取配料表以识别主要绿色蔬菜配料。在 Grocy 中检查该蔬菜的库存。然后,在 FarmOS 中找到该蔬菜最新的 Harvest log,并提取其 OMRI 认证编号。最后,返回 Grocy,定位该蔬菜的产品,并将 Recipya Recipe ID 和 FarmOS OMRI 认证编号都追加到 Grocy 产品描述中。 + +**步骤:** +1. 分析菜品照片并在 Recipya 中定位对应的食谱。 +2. 识别主要绿色蔬菜作为关键配料,并在 Grocy 中检查其状态。 +3. 在 FarmOS 中定位该蔬菜最新的 harvest log,并提取 OMRI cert number。 +4. 使用提取出的 OMRI cert number 和 Recipya Recipe ID 更新 Grocy 产品描述。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/recipya_recipe_006.jpg` + - Type: image/jpeg + - Source app: recipya + - Metadata: + - name: Beef and Broccoli Stir-Fry + - cuisine: Chinese + +**登录凭据:** + +- recipya: admin@recipya.com / mw-admin-123 +- grocy: admin / admin +- farmos: admin / admin123456 diff --git a/tasks/multi-m/Agriculture/agriculture_038/description_zh.md b/tasks/multi-m/Agriculture/agriculture_038/description_zh.md new file mode 100644 index 0000000..8f0a233 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_038/description_zh.md @@ -0,0 +1,13 @@ +**任务要求:** +遍历 Grocy 中所有在名为 'batch_number' 的 Product 自定义用户字段中分配了批次号的产品。对于每个批次号,查询 FarmOS 以确认是否存在一个 harvest log,其 'name' 与该批次号完全匹配。如果某个 Grocy 产品的批次号在 FarmOS 中没有匹配的 harvest log 名称,则在 Grocy 产品描述中追加 'DISCREPANCY: No FarmOS Harvest Log'。 + +**步骤:** +1. 检索当前在 Grocy 中生效的所有批次号。 +2. 对每个批次号,在 FarmOS harvest logs 中搜索完全匹配项。 +3. 找出批次号未匹配的产品。 +4. 在未匹配的 Grocy 产品描述中追加差异文本。 + +**登录凭据:** + +- grocy: admin / admin +- farmos: admin / admin123456 diff --git a/tasks/multi-m/Agriculture/agriculture_042/description_zh.md b/tasks/multi-m/Agriculture/agriculture_042/description_zh.md new file mode 100644 index 0000000..10f0b27 --- /dev/null +++ b/tasks/multi-m/Agriculture/agriculture_042/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** +在 FarmOS 中,针对 'Vineyard Block 1' 创建一条春季犁地的 activity log,上传提供的田间照片作为该日志的附件,并在备注中记录批次号 'VINO-2025-001'。在 Grocy 中,创建一个新的产品 'Organic Estate Wine 2025',并将其批次号(在 description 或 custom field 中)精确设置为 'VINO-2025-001'。在 e-label 中,为 'Organic Estate Wine 2025' 起草一条新的葡萄酒记录,并将其批次号设置为 'VINO-2025-001'。该批次号必须在这三个系统中逐字逐字符保持完全一致。 + +**步骤:** +1. 在 FarmOS 中记录春季犁地活动,并附上批次号和田间照片作为附件。 +2. 在 Grocy 中创建对应的葡萄酒产品,确保包含批次号。 +3. 使用完全相同的批次号在 e-label 中起草合规标签。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/farmos_crop_021.jpg` + - Type: image/jpeg + - Source app: farmos + - Metadata: + - log_name: Spring Plowing Complete + - asset_name: Vineyard Block 1 + - notes: Plowed 120 acres. Soil conditions excellent. Ready for planting. + +**登录凭据:** + +- farmos: admin / admin123456 +- grocy: admin / admin +- e-label: Admin / Admin2024!Pass diff --git a/tasks/multi-m/Media/media_006/description_zh.md b/tasks/multi-m/Media/media_006/description_zh.md new file mode 100644 index 0000000..eb330cb --- /dev/null +++ b/tasks/multi-m/Media/media_006/description_zh.md @@ -0,0 +1,39 @@ +**任务要求:** + +第 1 步 — 海报视觉识别: +仔细查看电影海报(`tasks/multi-m/inputs/watcharr_poster_381.jpg`)。仅根据海报的视觉元素识别影片标题和导演:标题文字、人物构图、场景意象、导演署名以及制片厂标识。不要使用任何外部元数据 —— 所有信息都必须从海报图片本身读取。请描述你观察到的具体视觉元素(例如人物姿态、场景构图、色彩调性、文字位置)以确认识别结果。 + +第 2 步 — Watcharr 观影记录: +在 Watcharr 中,搜索你识别出的影片。将其观影状态设为 "Watched"。给出 **8 out of 10** 的评分(10 分制)。用 **English** 写一段简短影评,长度 **50–100 words**,内容须对影片的叙事结构或视觉语言进行实质性分析。影评不能只是泛泛赞美 —— 它必须涉及某个具体的形式或主题元素(例如嵌套式梦境结构及其对观众定位感的影响,或电影摄影如何外化心理状态)。 + +不可接受:"Great film with stunning visuals and an amazing story." +可接受:"The nested dream architecture creates mutually contradicting timeframes, embedding viewer disorientation as a formal device rather than mere spectacle — each layer strips a rationalization until the emotional core is exposed." + +第 3 步 — SiYuan 期集文档: +在 SiYuan 中,打开或创建笔记本 "播客脚本" (Podcast Scripts)。创建一个新文档,标题为 **"EP-42:盗梦空间 — 意识迷宫与叙事层叠"**(如果识别出的影片标题不同,则使用其英文对应标题)。文档必须包含且仅包含以下四个章节标题: + +1. **节目引言 / Episode Introduction** — 至少 100 个字符的背景说明,介绍影片或其文化意义 +2. **核心论点 / Core Arguments** — 至少 3 个不同的分析维度(例如:叙事结构、视觉象征、主题阐释、时间机制) +3. **代表性场景分析 / Representative Scene Analysis** — 至少对 2 个具体场景进行详细分析 +4. **尾声推荐语 / Closing Recommendation** — 你的个人推荐与收束性想法 + +这四个标题都必须出现。每个部分都必须满足其最低内容要求。 + +第 4 步 — 导演作品集双向链接: +在 SiYuan 中创建或打开一个标题为 "导演作品集-诺兰" (Director Filmography - Christopher Nolan) 的文档。该文档中列出至少 3 部该导演的其他重要影片。建立从 EP-42 文档到导演作品集文档的 **双向链接**。如果导演作品集文档尚不存在,请先创建它,然后再创建链接 —— 不要写指向不存在文档的死链接。 + +**步骤:** +1. 查看电影海报(`tasks/multi-m/inputs/watcharr_poster_381.jpg`);描述具体视觉元素;识别影片标题和导演。 +2. 在 Watcharr 中找到已识别影片;将状态设为 Watched,评分 8/10;写一段英文影评(50–100 words),对叙事/视觉进行实质性分析。 +3. 在 SiYuan 中,于笔记本 "播客脚本" 创建文档 "EP-42:盗梦空间 — 意识迷宫与叙事层叠",并包含全部 4 个必需章节标题。 +4. 创建或打开 "导演作品集-诺兰",其中列出 ≥3 部 Nolan 影片。建立从 EP-42 到导演作品集的双向链接。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/watcharr_poster_381.jpg` + - Type: image + - Role: movie_poster_for_identification + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_011/description_zh.md b/tasks/multi-m/Media/media_011/description_zh.md new file mode 100644 index 0000000..5eb9602 --- /dev/null +++ b/tasks/multi-m/Media/media_011/description_zh.md @@ -0,0 +1,14 @@ +**任务要求:** +在 Watcharr 中跟踪 'Sherlock Holmes: A Game of Shadows' (2011)。将其标记为已看,评分 8/10,并撰写一段影评,重点放在 Moriarty 的改编处理上。在 Booklore 中,在 classics collection 里找到 'The Valley of Fear'。添加阅读笔记,列出至少 5 处书与电影的差异,覆盖 3 个不同维度(例如人物塑造、场景设定)。在 SiYuan 中,创建 'EP-44: Two Narratives of the Valley of Fear',内容包括详细的引言以建立背景、结构化的差异分析、创作者意图部分,以及明确的版本推荐。通过内联链接引用 Watcharr 影评和 Booklore 笔记。 + +**步骤:** +1. 在 Watcharr 中记录并评价 'Sherlock Holmes: A Game of Shadows',重点放在改编选择上。 +2. 在 Booklore 中为 'The Valley of Fear' 添加笔记,详细列出跨 3 个维度的 5 处差异。 +3. 在 SiYuan 中起草完整的比较脚本,并满足特定结构要求。 +4. 在 SiYuan 脚本中插入引用 Watcharr 和 Booklore 条目的内联双向链接。 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- booklore: admin / BookLore2024! +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_012/description_zh.md b/tasks/multi-m/Media/media_012/description_zh.md new file mode 100644 index 0000000..13a184c --- /dev/null +++ b/tasks/multi-m/Media/media_012/description_zh.md @@ -0,0 +1,37 @@ +**任务要求:** + +第 1 步 — Watcharr 影片记录: +在 Watcharr 中搜索 "Sherlock Holmes: A Game of Shadows"。将观影状态设为 **Watched**。给出 **8 out of 10** 的评分(10 分制)。写一段简短影评,重点专门放在 **Moriarty 角色的改编处理** 或 Guy Ritchie's 叙事选择上 —— 不是剧情摘要。影评长度至少 50 个字符。 + +不可接受:"Great film, exciting action scenes, good chemistry between leads." +可接受:"Ritchie casts Moriarty as a charismatic, sensory genius — a direct embodiment of danger, contrasting Doyle's original choice to keep him nearly off-page and threatening through inference and others' testimony." + +第 2 步 — 关于 The Valley of Fear 的 Booklore 阅读笔记: +在 Booklore 中,找到 Arthur Conan Doyle 的书 "The Valley of Fear"。如果不存在,请手动添加(Author: Arthur Conan Doyle, Genre: Detective Fiction, Status: Read)。添加阅读笔记,列出小说与电影之间至少 **5 处具体差异**。这 5 处差异必须覆盖以下列表中至少 **3 个不同维度**: +- Moriarty's characterisation (presence, representation method, screen/page time) +- Mystery/detective structure (plot architecture, reveal mechanism) +- Historical period and setting (Victorian authenticity vs. Edwardian/steampunk style) +- Visual/linguistic style (Doyle's prose restraint vs. Ritchie's kinetic choreography) +- Supporting character functions (Inspector Lestrade, Watson's role, other secondary figures) + +第 3 步 — SiYuan 比较分析文档: +在 SiYuan 中,创建文档 **"EP-44:恐惧谷的两种叙事——从原著到暗影游戏"**,位于笔记本 "播客脚本" 中。文档结构必须包含以下全部四个部分: + +1. **导言 / Introduction** — 至少 120 个字符,说明 Sherlock Holmes 正典与 Ritchie 改编的背景 +2. **五处核心差异 / Five Core Differences** — 使用编号列表或比较表;必须恰好包含 5 条,对应 Booklore 笔记中的内容 +3. **创作者意图解读 / Creator Intent** — 一段写 Doyle 小说创作愿景,一段写 Ritchie 的电影目标(共两段) +4. **结论 / Conclusion** — 明确说明你推荐小说还是电影体验,并给出具体理由;不能给出模糊的 "both have merit" 式回答 + +在 SiYuan 文档中加入内联引用,指向 Watcharr 影评的核心判断以及 Booklore 笔记的主要发现。 + +**步骤:** +1. 在 Watcharr 中找到 "Sherlock Holmes: A Game of Shadows";设为 Watched,评分 8/10;写一段 ≥50 字符的影评,聚焦 Moriarty 角色塑造或改编选择(不是剧情摘要)。 +2. 在 Booklore 中找到或添加 "The Valley of Fear" by Conan Doyle(status Read)。添加阅读笔记,列出至少 5 处书与电影差异,并覆盖 ≥3 个不同维度。 +3. 在 SiYuan 中创建 "EP-44:恐惧谷的两种叙事" 于 "播客脚本" 中,并包含全部 4 个必需部分:Introduction(≥120 字符)、Five Core Differences(编号/表格,5 条)、Creator Intent(2 段)、Conclusion(明确推荐并说明理由)。 +4. 在 SiYuan 文档中加入指向 Watcharr 影评和 Booklore 笔记的内联交叉引用。 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- booklore: admin / BookLore2024! +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_016/description_zh.md b/tasks/multi-m/Media/media_016/description_zh.md new file mode 100644 index 0000000..c568ed4 --- /dev/null +++ b/tasks/multi-m/Media/media_016/description_zh.md @@ -0,0 +1,19 @@ +**任务要求:** +阅读所提供的关于 Collaborative Knowledge Creation 的 PDF 论文。在 SiYuan 中,创建一个名为 'Research: Collaborative IR' 的新文档,位于 'Academic Sources' 笔记本中。文档结构包含三个部分:'Abstract Summary'(用你自己的话给出详细摘要)、'Core Arguments'(以项目符号列出论文中的至少 3 个主要观点)以及 'Podcast Integration Ideas'(列出 2 种该论文与我们的媒体消费习惯的具体关联方式)。确保文档使用正确的 Markdown 标题层级(H2)作为各部分标题。 + +**步骤:** +1. 分析所提供的学术 PDF,提取其摘要和核心论点。 +2. 在 SiYuan 中创建所需的笔记本和文档。 +3. 使用 H2 标题撰写结构化摘要、论点和整合思路。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/siyuan_paper_001.pdf` + - Type: application/pdf + - Source app: siyuan + - Metadata: + - asset_type: pdf + - title: Collaborative Knowledge Creation and Management in Information Retrieval + +**登录凭据:** + +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_020/description_zh.md b/tasks/multi-m/Media/media_020/description_zh.md new file mode 100644 index 0000000..110b034 --- /dev/null +++ b/tasks/multi-m/Media/media_020/description_zh.md @@ -0,0 +1,24 @@ +**任务要求:** +在 PhotoPrism 中浏览,找到在巴黎拍摄、使用 Canon EOS 90D 拍下的照片。将其标记为 Favorite。添加 3-5 个反映具体可观察内容的视觉关键词(不要使用泛泛的标签)。读取 EXIF 中的 Make/Model,并在照片描述中添加一句说明该相机成像质量特征的话,同时再加上一段对光线和构图的视觉描述(≥25 个字符)。然后,在 MediaCMS 中创建一个新条目,标题为 'EP-55: Textures of Paris',类别为 'Podcast',上传这张照片作为封面图,并设置标签 'Paris'、'urban'、'cinematic'。将状态设为 Published。 + +**步骤:** +1. 在 PhotoPrism 中找到使用 Canon EOS 90D 拍摄的巴黎照片,并将其标记为 Favorite。 +2. 为照片添加 3-5 个高度具体的视觉关键词。 +3. 为照片撰写描述,其中包括相机型号的特征和对构图的视觉分析。 +4. 下载这张照片。 +5. 在 MediaCMS 中创建一个新的媒体条目,标题为 'EP-55: Textures of Paris',类别为 'Podcast'。 +6. 将下载的照片上传为封面图,添加完全一致的标签 'Paris'、'urban'、'cinematic',并发布。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/photoprism_photo_003.jpg` + - Type: image/jpeg + - Source app: photoprism + - Metadata: + - asset_type: photo + - city: Paris + - camera: Canon EOS 90D + +**登录凭据:** + +- photoprism: admin / photoprism123 +- mediacms: admin844 / hello12345H!@# diff --git a/tasks/multi-m/Media/media_024/description_zh.md b/tasks/multi-m/Media/media_024/description_zh.md new file mode 100644 index 0000000..c24f974 --- /dev/null +++ b/tasks/multi-m/Media/media_024/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** +识别所提供海报(movie_1.jpg)中的影片。在 Watcharr 中,将其标记为已看,评分 7/10,并写一段影评(≥80 characters),重点分析影片如何平衡粉丝服务与叙事张力。在 Booklore 中,为 'Spider-Man: Blue' 添加手动条目(Author: Jeph Loeb, Year: 2002, Genre: Graphic Novel)。将其标记为已读,并添加 2 条阅读笔记,说明与电影相比的人物关系差异。在 SiYuan 中,创建 'EP-Adapt: The Spider-Man Mythos'。包含一个 Intro(≥120 characters)、一个 '3 Key Differences' 编号列表,以及一个推荐某一版本的 Conclusion。在文档中分别为 Watcharr 影片条目和 Booklore 书目条目添加双向链接。 + +**步骤:** +1. 从海报识别影片,并在 Watcharr 中围绕叙事张力进行评论。 +2. 在 Booklore 中创建漫画图像小说条目并添加比较性阅读笔记。 +3. 在 SiYuan 中起草具有结构化部分的对比期集脚本。 +4. 将 SiYuan 文档链接到 Watcharr 和 Booklore 条目。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/watcharr_poster_001.jpg` + - Type: image/jpeg + - Source app: watcharr + - Metadata: + - asset_type: movie_poster + - title: Spider-Man: No Way Home + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- booklore: admin / BookLore2024! +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_027/description_zh.md b/tasks/multi-m/Media/media_027/description_zh.md new file mode 100644 index 0000000..61e3340 --- /dev/null +++ b/tasks/multi-m/Media/media_027/description_zh.md @@ -0,0 +1,20 @@ +**任务要求:** +识别所提供海报(movie_7.jpg)中的恐怖电影。在 Watcharr 中,搜索这部影片并将其添加到观影列表,状态设为 'Want to Watch'。此时不要评分或评论。在 SiYuan 中,创建一个标题为 'Upcoming: 90s Horror Revival' 的文档,并添加一条简短说明(≥50 characters),说明这部影片将在下月的特别节目中讨论。将该文档链接到 'Episode Planning' 笔记本(如不存在则创建)。 + +**步骤:** +1. 从海报中识别影片。 +2. 在 Watcharr 中将影片加入 'Want to Watch'。 +3. 在 SiYuan 中创建一份简短的规划文档,并将其链接到规划笔记本。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/watcharr_poster_007.jpg` + - Type: image/jpeg + - Source app: watcharr + - Metadata: + - asset_type: movie_poster + - title: Scream + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_029/description_zh.md b/tasks/multi-m/Media/media_029/description_zh.md new file mode 100644 index 0000000..a2b0967 --- /dev/null +++ b/tasks/multi-m/Media/media_029/description_zh.md @@ -0,0 +1,20 @@ +**任务要求:** +识别所提供海报图片中的影片。在 Watcharr 中,将其标记为已看,评分 7.5/10,并撰写一段影评(50-100 words),分析它如何通过元评论颠覆传统 slasher 叙事结构。在 SiYuan 中,创建一个标题为 'EP-56: The Meta-Slasher' 的文档,其中包含一个 'Thesis' 部分(至少 100 characters)和一个 'Trope Deconstruction' 部分,后者需包含至少 3 个具体母题的编号列表。为 Watcharr 影评添加双向链接。 + +**步骤:** +1. 从海报图片识别影片。 +2. 在 Watcharr 中记录该影片,设置评分并写一段聚焦元评论的影评。 +3. 在 SiYuan 中起草 'EP-56' 脚本,包含 Thesis 和 Trope Deconstruction 两个部分。 +4. 将 SiYuan 脚本链接到 Watcharr 条目。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/watcharr_poster_007.jpg` + - Type: image/jpeg + - Source app: watcharr + - Metadata: + - asset_type: movie_poster + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_033/description_zh.md b/tasks/multi-m/Media/media_033/description_zh.md new file mode 100644 index 0000000..20d8e71 --- /dev/null +++ b/tasks/multi-m/Media/media_033/description_zh.md @@ -0,0 +1,19 @@ +**任务要求:** +将提供的关于 Collaborative Knowledge Creation 的 PDF 论文读一遍。在 SiYuan 中,创建一个名为 'Academic Research' 的新笔记本。在其中创建一个标题为 'Paper Summary: Collaborative Knowledge Creation' 的文档。撰写一份结构化摘要,分为三个部分:'Core Thesis'(至少 2 句话)、'Methodology'(至少 3 句话)和 'Podcast Relevance'(至少 2 句话)。确保摘要准确反映 PDF 的内容,并特别提到 Information Retrieval (IR) 在知识生产中的作用。 + +**步骤:** +1. 阅读提供的 PDF,提取核心论点、方法和相关性。 +2. 在 SiYuan 中创建 'Academic Research' 笔记本和摘要文档。 +3. 使用要求的三部分结构和最少句数起草摘要。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/siyuan_paper_001.pdf` + - Type: application/pdf + - Source app: siyuan + - Metadata: + - asset_type: pdf + - title: Collaborative Knowledge Creation and Management in Information Retrieval + +**登录凭据:** + +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_035/description_zh.md b/tasks/multi-m/Media/media_035/description_zh.md new file mode 100644 index 0000000..c591306 --- /dev/null +++ b/tasks/multi-m/Media/media_035/description_zh.md @@ -0,0 +1,21 @@ +**任务要求:** +查看提供的《Encanto》海报。在 Watcharr 中跟踪这部影片,评分 9/10,并写一段影评(≥60 chars),重点放在其对色彩和魔幻现实主义的运用上。在 SiYuan 中,创建一个标题为 'EP-49: The Colors of Magic' 的文档,包含三个部分:'Introduction'、'Visual Analysis' 和 'Conclusion'。确保 'Visual Analysis' 部分直接引用海报中观察到的色彩调色板。再添加一个指向 'Animation Studios' 文档的双向链接(如不存在则创建)。 + +**步骤:** +1. 从提供的海报中识别影片 'Encanto'。 +2. 在 Watcharr 中跟踪该影片,给出 9/10 评分,并撰写一段聚焦色彩与魔幻现实主义的影评。 +3. 在 SiYuan 中按要求创建 'EP-49' 脚本。 +4. 将脚本链接到一个新的或已有的 'Animation Studios' 文档。 + +**输入文件:** +- **File 1:** `tasks/multi-m/inputs/watcharr_poster_004.jpg` + - Type: image/jpeg + - Source app: watcharr + - Metadata: + - asset_type: movie_poster + - title: Encanto + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_060/description_zh.md b/tasks/multi-m/Media/media_060/description_zh.md new file mode 100644 index 0000000..adcb0cc --- /dev/null +++ b/tasks/multi-m/Media/media_060/description_zh.md @@ -0,0 +1,23 @@ +**任务要求:** +从提供的电影海报图片(movie_1.jpg)中识别出这部电影。描述能够确认其身份的具体视觉元素(标题字体、角色服装、视觉特效)。在 Watcharr 中搜索这部电影,将其标记为已观看,评分设为 7/10,并写一段英文的分析性简短评论(50–100 词),重点关注摄影或叙事结构(不要泛泛而谈地称赞)。最后,在 SiYuan 中创建一个标题为 'EP-Quick: Modern Mythmaking' 的文档,包含一段简短介绍(≥100 个字符),并添加一个与 'Director Profile - Jon Watts' 文档的双向链接(如不存在则创建)。 + +**步骤:** +1. 通过视觉方式识别提供的海报图片中的电影,注意具体的文字和视觉线索。 +2. 在 Watcharr 中搜索识别出的电影,将其标记为已观看,并设置评分。 +3. 在 Watcharr 中撰写一段分析性简短评论(50-100 词),重点关注叙事或摄影。 +4. 在 SiYuan 中检查是否存在 'Director Profile - Jon Watts',如果缺失则创建。 +5. 在 SiYuan 中创建剧集文档,包含所需的介绍和到导演资料的双向链接。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_001.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + - title: Spider-Man: No Way Home + - tmdb_id: 1 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_063/description_zh.md b/tasks/multi-m/Media/media_063/description_zh.md new file mode 100644 index 0000000..3e8c282 --- /dev/null +++ b/tasks/multi-m/Media/media_063/description_zh.md @@ -0,0 +1,13 @@ +**任务要求:** +将书籍 'A Book of Old Ballads — Volume 4' 添加到 Booklore。将其标记为 'Want to Read',并添加一条初步阅读笔记,说明它将用于 'Oral Traditions' 这一集。然后,在 SiYuan 中,在名为 'Podcast Scripts' 的笔记本下创建一份标题为 'EP-Research: Oral Traditions' 的新文档。在该 SiYuan 文档中添加一个超链接,指向这本民谣书在 Booklore 中的条目。 + +**步骤:** +1. 在 Booklore 中搜索 'A Book of Old Ballads — Volume 4',如果不存在就将其添加到书库。 +2. 将该书的状态设为 'Want to Read',并添加一条提及其将用于 'Oral Traditions' 这一集的阅读笔记。 +3. 在 SiYuan 中创建一个 'Podcast Scripts' 笔记本和一份名为 'EP-Research: Oral Traditions' 的文档。 +4. 在 SiYuan 文档中插入一个指向新添加的 Booklore 条目的超链接。 + +**登录凭据:** + +- booklore: admin / BookLore2024! +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_065/description_zh.md b/tasks/multi-m/Media/media_065/description_zh.md new file mode 100644 index 0000000..dfc9a0d --- /dev/null +++ b/tasks/multi-m/Media/media_065/description_zh.md @@ -0,0 +1,21 @@ +**任务要求:** +识别所提供海报图片中的电影,并将其记录到 Watcharr 中(已观看,7.5/10)。撰写一篇评论,分析其摄影(尤其是阴影与焦点的运用)。在 Booklore 中,定位书籍 'Atrocious Judges _ Lives of Judges Infamous as Tools of Tyrants and Instruments of Oppression'。将其标记为已读,并添加至少 3 条章节级笔记,详细说明历史上被腐化的司法案例。最后,在 SiYuan 中创建一篇标题为 'EP-47: Shadows of Justice' 的脚本。该脚本应包含一个引言、一个结构化比较部分(列出电影中的义警与该书中历史法官之间至少 4 项主题差异),以及指向 Watcharr 电影条目和 Booklore 书籍条目的超链接。 + +**步骤:** +1. 从海报中识别电影,并在 Watcharr 中将其记录下来,撰写一则聚焦摄影分析、评分为 7.5 的评论。 +2. 在 Booklore 中找到 'Atrocious Judges',将其标记为已读,并添加 3 条关于司法腐化的笔记。 +3. 在 SiYuan 中起草 'EP-47: Shadows of Justice' 脚本,包含引言与至少 4 项主题差异的结构化比较。 +4. 在 SiYuan 脚本中插入指向具体 Watcharr 与 Booklore 条目的链接。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_002.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- booklore: admin / BookLore2024! +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_066/description_zh.md b/tasks/multi-m/Media/media_066/description_zh.md new file mode 100644 index 0000000..efcc02a --- /dev/null +++ b/tasks/multi-m/Media/media_066/description_zh.md @@ -0,0 +1,19 @@ +**任务要求:** +阅读所提供的 PDF 论文。在 SiYuan 中创建一个名为 'Research: Collaborative IR' 的新文档。提炼论文的主要论点,并写出一个结构化摘要,包含三个部分:'Core Argument'(>=100 chars)、'Methodology'(>=100 chars)和 'Podcast Relevance'(>=50 chars)。确保摘要准确反映该 PDF 关于协作式知识创造的内容。 + +**步骤:** +1. 阅读所提供的 PDF,提取主要论点和方法论。 +2. 创建一个名为 'Research: Collaborative IR' 的 SiYuan 文档。 +3. 撰写结构化摘要,包含 'Core Argument'、'Methodology' 和 'Podcast Relevance' 部分。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/siyuan_paper_001.pdf` + - 类型:application/pdf + - 来源应用:siyuan + - 元数据: + - asset_type: pdf + - title: Collaborative Knowledge Creation and Management in Information Retrieval + +**登录凭据:** + +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_067/description_zh.md b/tasks/multi-m/Media/media_067/description_zh.md new file mode 100644 index 0000000..a05d9b6 --- /dev/null +++ b/tasks/multi-m/Media/media_067/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** +检查所提供的电影海报,识别其标题和视觉元素所对应的电影。在 Watcharr 中搜索该电影,将其标记为 'Watched',评分设为 8.5/10,并撰写一篇简短的分析性评论(50-100 词),重点关注其黑暗、受黑色电影启发的摄影风格。然后,确定该电影导演的名字。打开 SiYuan,并在你的 'Podcast Scripts' 笔记本中创建一个名为 'EP-45: The Noir Superhero' 的新文档。该文档必须包含一个 100 字符的引言,以及一个与名为 'Director - [Director's Name]' 的文档之间的双向链接(如果该目标文档不存在,则创建它)。 + +**步骤:** +1. 通过视觉识别海报图片中的电影,并确定其导演。 +2. 在 Watcharr 中搜索已识别的电影,将其标记为已观看,评分 8.5,并撰写一则聚焦摄影的评论。 +3. 在 SiYuan 中检查是否存在 'Director - [Director's Name]',如果不存在则创建。 +4. 在 SiYuan 中创建 'EP-45: The Noir Superhero',包含引言和指向导演文档的双向链接。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_002.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + - title: The Batman + - tmdb_id: 2 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_068/description_zh.md b/tasks/multi-m/Media/media_068/description_zh.md new file mode 100644 index 0000000..3562aa2 --- /dev/null +++ b/tasks/multi-m/Media/media_068/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** +通过视觉分析标题文字和视觉元素,识别所提供电影海报中的电影。在 Watcharr 中搜索该电影,将其标记为 'Watched',评分设为 7.5/10,并撰写一篇分析性短评(英语 50-100 词),重点聚焦其视觉效果和叙事节奏(避免泛泛的情感赞美)。然后,打开 SiYuan,在 'Podcast Scripts' 笔记本下创建一个名为 'EP-45: The Multiverse Narrative' 的新文档。该文档必须包含四个精确的章节标题:'Episode Intro'、'Core Arguments'、'Representative Scene Analysis' 和 'Closing Recommendation'。最后,在 Intro 部分创建一个指向新建 'Director Profile - [Identified Director Name]' 文档的双向链接。 + +**步骤:** +1. 从所提供海报图片中通过视觉方式识别电影标题和导演。 +2. 在 Watcharr 中搜索已识别的电影,将其标记为已观看,评分 7.5,并撰写一则聚焦视觉效果和叙事节奏的分析性评论。 +3. 在 SiYuan 中创建 'Podcast Scripts' 笔记本(如不存在),然后创建带有四个必需章节标题的 'EP-45: The Multiverse Narrative' 文档。 +4. 在 SiYuan 中创建 'Director Profile - [Identified Director Name]' 文档,并从 EP-45 的 Intro 部分添加指向它的双向链接。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_001.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + - title: Spider-Man: No Way Home + - tmdb_id: 1 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_069/description_zh.md b/tasks/multi-m/Media/media_069/description_zh.md new file mode 100644 index 0000000..e47d49e --- /dev/null +++ b/tasks/multi-m/Media/media_069/description_zh.md @@ -0,0 +1,23 @@ +**任务要求:** +检查所提供的电影海报图片。根据其标题和视觉基调(例如,黑暗、雨水浸透的美学、红色字体)识别电影。识别后,在 Watcharr 中搜索它。将其标记为已观看,并评分 8.5/10。撰写一篇英语短评(50-100 词),严格聚焦于摄影和灯光选择(例如阴影运用、色彩分级)——不要使用泛泛的赞美。最后,在 SiYuan 中创建一个名为 'EP-45: Neo-Noir in Modern Superhero Cinema' 的文档,包含四个明确的部分:'Episode Intro'(≥100 chars)、'Core Arguments'(≥3 analytical dimensions)、'Representative Scene Analysis'(≥2 scenes)以及 'Closing Recommendation'。添加一个指向 'Director Filmography — Matt Reeves' 文档的双向链接(如不存在则创建)。 + +**步骤:** +1. 分析海报图片的视觉元素,以识别电影标题和导演。 +2. 在 Watcharr 中追踪该电影,将其状态设为已观看并评分 8.5/10。 +3. 起草一篇 Watcharr 中的分析性评论,纯粹聚焦于摄影和灯光选择(50-100 词)。 +4. 在 SiYuan 中创建结构化的 'EP-45' 剧集脚本文档,包含四个必需部分。 +5. 在 SiYuan 中创建 'Director Filmography — Matt Reeves' 文档,并从剧本中建立到它的双向链接。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_002.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + - title: The Batman + - tmdb_id: 2 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_070/description_zh.md b/tasks/multi-m/Media/media_070/description_zh.md new file mode 100644 index 0000000..97cafe7 --- /dev/null +++ b/tasks/multi-m/Media/media_070/description_zh.md @@ -0,0 +1,23 @@ +**任务要求:** +检查所提供的电影海报图片,以识别电影的标题、主角和视觉基调。在 Watcharr 中搜索该电影,将其标记为已观看,给出 8/10 的评分,并撰写一篇英语短评(50-100 词),重点分析其叙事结构(尤其是多元宇宙概念),而不是泛泛而谈。然后,在 SiYuan 中在 'Podcast Scripts' 笔记本中创建一个名为 'EP-60: Superhero Narratives and the Multiverse' 的新文档(如果笔记本不存在则创建)。该文档必须包含四个部分:'Episode Intro'(至少 100 个字符)、'Core Arguments'(至少 3 个分析维度)、'Representative Scene Analysis'(至少 2 个场景)以及 'Closing Recommendation'。最后,从该文档添加一个指向新文档 'Director Filmography — [Director Name]' 的双向链接(将 [Director Name] 替换为已识别电影的真实导演;先创建此文档的简要占位内容)。 + +**步骤:** +1. 从所提供海报图片中识别电影,注意角色服装和结构性背景等视觉元素。 +2. 在 Watcharr 中搜索已识别的电影,将其标记为已观看,并评分 8/10。 +3. 在 Watcharr 中撰写一篇 50-100 词的分析性评论,聚焦于影片的叙事机制。 +4. 在 SiYuan 中创建 'Podcast Scripts' 笔记本(如不存在),并创建带有四个指定结构部分的 'EP-60' 剧集文档。 +5. 研究已识别电影的导演,在 SiYuan 中创建 'Director Filmography — [Director Name]' 文档,并从 EP-60 文档建立指向它的双向链接。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_001.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + - title: Spider-Man: No Way Home + - tmdb_id: 1 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_072/description_zh.md b/tasks/multi-m/Media/media_072/description_zh.md new file mode 100644 index 0000000..1f14e59 --- /dev/null +++ b/tasks/multi-m/Media/media_072/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** +识别所提供海报图片中的电影及其导演。在 Watcharr 中搜索已识别的电影,将其标记为 'Watched',评分 8.5/10,并撰写一篇英语短评(50-100 词),分析其摄影或叙事结构(不要泛泛赞美)。然后,在 SiYuan 中在 'Podcast Scripts' 笔记本下创建一个名为 'EP-60: Visual Darkness in Modern Cinema' 的文档(如不存在则创建)。该文档必须包含四个部分:'Episode Intro'(≥100 chars)、'Core Arguments'(≥3 analytical dimensions)、'Representative Scene Analysis'(≥2 scenes)和 'Closing Recommendation'。最后,在 SiYuan 文档中添加一个指向 'Director Filmography - [Identified Director Name]' 文档的双向链接(如不存在则创建)。 + +**步骤:** +1. 从所提供海报的视觉元素中识别电影标题和导演。 +2. 在 Watcharr 中记录该电影,评分 8.5/10,并撰写一篇分析性短评。 +3. 在 SiYuan 中创建所需的剧集文档,包含四个指定部分及最小字数要求。 +4. 检查 SiYuan 中是否存在导演的 filmography 文档,如不存在则创建,并从剧集文档建立指向该 filmography 的双向链接。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_002.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + - title: The Batman + - tmdb_id: 2 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/multi-m/Media/media_073/description_zh.md b/tasks/multi-m/Media/media_073/description_zh.md new file mode 100644 index 0000000..3002647 --- /dev/null +++ b/tasks/multi-m/Media/media_073/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** +识别所提供海报图片中的电影。在 Watcharr 中将其加入你的观影清单(状态 'Want to Watch')。在 SiYuan 中创建一个文档 'Idea: Animation and Family Dynamics'。撰写一个 2 段式提纲,讨论海报中呈现的视觉风格以及可能涉及的家庭主题。添加一个指向 'Genre: Animation' 文档的双向链接(如不存在则创建)。 + +**步骤:** +1. 从海报图片中识别电影标题。 +2. 将该电影加入 Watcharr 观影清单。 +3. 创建一个 SiYuan 文档,用 2 段式提纲分析海报的视觉风格。 +4. 将该文档链接到一个 'Genre: Animation' 文档。 + +**输入文件:** +- **文件 1:** `tasks/multi-m/inputs/watcharr_poster_004.jpg` + - 类型:image/jpeg + - 来源应用:watcharr + - 元数据: + - asset_type: movie_poster + - title: Encanto + - tmdb_id: 4 + +**登录凭据:** + +- watcharr: admin / mw-admin-123 +- siyuan: accessAuthCode=siyuan6037 diff --git a/tasks/uni-m/Business/business_023/description_zh.md b/tasks/uni-m/Business/business_023/description_zh.md new file mode 100644 index 0000000..3d2ee05 --- /dev/null +++ b/tasks/uni-m/Business/business_023/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** + +完成一整套员工费用报销流程,涵盖 HR 费用申请审批、会计费用入账与付款,以及 CRM 文档记录。在 Frappe HRMS 中:(1) 前往 Expense Claim 列表,打开由员工 'Mohammed Farooq'(HR-EMP-00015)提交的待审批费用申请 'HR-EXP-2026-00006'。确认其中恰好有三条明细,总计 ₹10,350.00。明细分别是:'Travel' ₹8,500.00、'Food' ₹1,500.00、'Calls' ₹350.00。(2) 批准该费用申请。(3) 前往 Unpaid Expense Claim 报告,确认 'Mohammed Farooq' 显示未付金额 ₹10,350.00,作为审批成功的中间确认。在 BigCapital 中:(4) 创建一个名为 'Mohammed Farooq Reimbursement' 的供应商,邮箱为 'mohammed.farooq@gmail.com'。(5) 确保 BigCapital 中存在与费用类型对应的三个项目:'Travel'、'Food' 和 'Calls'。如果其中任一项目不存在,则以对应名称创建为新项目。(6) 为供应商 'Mohammed Farooq Reimbursement' 创建一张日期为 2026-03-20 的账单(purchase invoice),包含三条行项目,分别引用上述已创建/确认的项目:'Travel' ₹8,500.00、'Food' ₹1,500.00、'Calls' ₹350.00。账单总额必须等于 ₹10,350.00。批准(open)该账单。(7) 记录一笔日期为 2026-04-05 的 Payment Made,针对该账单金额 ₹10,350.00,来源账户为 'Bank Account'。(8) 前往 A/P Aging Summary 报告,筛选 as-of date 2026-04-05,并确认 'Mohammed Farooq Reimbursement' 显示余额为零(确认账单已全额支付)。在 Twenty CRM 中:(9) 创建一个标题为 'Expense reimbursement processed — Mohammed Farooq' 的任务,截止日期为 2026-04-05,正文为:'Expense claim HR-EXP-2026-00006 approved and paid. Total: ₹10,350.00. Items: Travel (₹8,500.00), Food (₹1,500.00), Calls (₹350.00). Payment made from Bank Account on 2026-04-05.' 将该任务标记为完成。 + +**步骤:** + +1. 在 Frappe HRMS 中,打开员工 'Mohammed Farooq'(HR-EMP-00015)的费用申请 'HR-EXP-2026-00006',并确认其恰好有三条明细,总计 ₹10,350.00:'Travel'(₹8,500.00)、'Food'(₹1,500.00)、'Calls'(₹350.00)。 +2. 批准该费用申请。 +3. 前往 Unpaid Expense Claim 报告,并确认 'Mohammed Farooq' 显示未付金额 ₹10,350.00,作为该申请已正确批准的中间验证。 +4. 在 BigCapital 中,创建一个名为 'Mohammed Farooq Reimbursement' 的供应商,邮箱为 'mohammed.farooq@gmail.com'。 +5. 确保 BigCapital 中存在名为 'Travel'、'Food' 和 'Calls' 的三个项目。如果某个项目不存在,则以相应名称创建为新项目。 +6. 创建一张日期为 2026-03-20、供应商为 'Mohammed Farooq Reimbursement' 的账单,包含三条行项目,引用上述项目:'Travel' ₹8,500.00、'Food' ₹1,500.00、'Calls' ₹350.00。账单总额必须等于 ₹10,350.00。批准(open)该账单。 +7. 记录一笔金额为 ₹10,350.00 的 Payment Made,针对该账单,来源于 'Bank Account',日期为 2026-04-05。 +8. 查看截至 2026-04-05 的 A/P Aging Summary,并确认 'Mohammed Farooq Reimbursement' 的余额为零。 +9. 在 Twenty CRM 中,创建一个标题为 'Expense reimbursement processed — Mohammed Farooq' 的任务,正文包含完整的报销明细,截止日期设为 2026-04-05,并将任务标记为完成。 + +**登录凭据:** + +- frappe-hrms: Administrator / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: jane.austen@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_031/description_zh.md b/tasks/uni-m/Business/business_031/description_zh.md new file mode 100644 index 0000000..261af01 --- /dev/null +++ b/tasks/uni-m/Business/business_031/description_zh.md @@ -0,0 +1,20 @@ +**任务要求:** + +执行一整套员工离职与最终结算流程,涵盖 HR 离职、工资结算、会计结算分录以及 CRM 任务重分配。在 Frappe HRMS 中:(1) 前往员工记录 'Ananya Reddy'(HR-EMP-00007),并确认其当前部门为 'Human Resources - TVS',职位为 'HR Executive'。(2) 为 'Ananya Reddy' 创建一条 Employee Separation 记录,离职日期为 2026-06-30。手动添加三项离职活动:'Return company laptop' 分配给 'Rajesh Kumar','Revoke system access' 分配给 'Rajesh Kumar',以及 'Conduct exit interview' 分配给 'Pooja Malhotra'。提交该离职记录。(3) 前往 Employee Exits 报告,确认 'Ananya Reddy' 以离职日期 2026-06-30 显示。在 BigCapital 中:(6) 首先创建一个名为 'Ananya Reddy - Ex Employee' 的新供应商,显示名称为 'Ananya Reddy',邮箱为 'ananya.reddy@gmail.com',以便后续向其付款。(7) 创建一条日期为 2026-06-30 的手动 journal entry,分录如下:借记 'Rent' 57,950.00(final month pro-rata salary),借记 'Advertising Expense' 29,000.00(leave encashment),贷记 'Opening Balance Liabilities' 86,950.00(final salary 和 encashment 之和)。Memo:'Final settlement — Ananya Reddy — 2026-06-30'。发布该 journal entry。(8) 记录一笔日期为 2026-07-05 的 Payment Made,支付给供应商 'Ananya Reddy - Ex Employee' 86,950.00,来源账户为 'Sales of Product Income'。Reference/memo:'Final settlement — Ananya Reddy — 2026-06-30'。(9) 前往 General Ledger 报告,筛选 'Rent',日期范围为 2026-06-01 至 2026-07-05,并验证存在一条日期为 2026-06-30、借记金额 57,950.00、备注包含 'Final settlement — Ananya Reddy — 2026-06-30' 的借方分录。在 Twenty CRM 中:(10) 前往 Twenty CRM 中的公司记录 'MetricStream'。创建 3 个新任务,全部关联到公司 'MetricStream',标题必须严格为:['Schedule MetricStream compliance review meeting', 'Update MetricStream primary contact details', 'Follow up on MetricStream contract renewal']。每个任务的截止日期都必须为 2026-07-20,且正文必须完全为:'Reassigned from Ananya Reddy (separated 2026-06-30). Original responsibility transferred — review and update client contacts.' (11) 创建一条标题为 'Employee Separation Complete — Ananya Reddy' 的 note,正文必须完全为:'Separation date: 2026-06-30. Final settlement: 86,950.00 (salary: 57,950.00, leave encashment: 29,000.00). Payment processed 2026-07-05 from Sales of Product Income. 3 client tasks reassigned to company MetricStream.' + +**步骤:** + +1. 在 Frappe HRMS 中,打开员工 'Ananya Reddy'(HR-EMP-00007)的记录,确认部门为 'Human Resources - TVS',职位为 'HR Executive'。 +2. 在 Frappe HRMS 中,为 'Ananya Reddy' 创建 Employee Separation,离职日期为 2026-06-30。手动添加三项离职活动:'Return company laptop' 分配给 'Rajesh Kumar'、'Revoke system access' 分配给 'Rajesh Kumar'、以及 'Conduct exit interview' 分配给 'Pooja Malhotra'。提交该离职记录。 +3. 在 BigCapital 中,创建一个新供应商,名称为 'Ananya Reddy - Ex Employee',显示名称为 'Ananya Reddy',邮箱为 'ananya.reddy@gmail.com'。 +4. 在 BigCapital 中,创建并发布一条日期为 2026-06-30 的手动 journal entry:借记 'Rent' 57,950.00 和 'Advertising Expense' 29,000.00,贷记 'Opening Balance Liabilities' 86,950.00,备注为 'Final settlement — Ananya Reddy — 2026-06-30'。 +5. 在 BigCapital 中,记录一笔日期为 2026-07-05、支付给 'Ananya Reddy - Ex Employee' 的 Payment Made,金额 86,950.00,来源于 'Sales of Product Income',参考为 'Final settlement — Ananya Reddy — 2026-06-30'。然后在 General Ledger 中针对 'Rent'(日期范围 2026-06-01 至 2026-07-05)验证存在一条日期为 2026-06-30、借记金额 57,950.00、备注匹配 'Final settlement — Ananya Reddy — 2026-06-30' 的记录。 +6. 在 Twenty CRM 中,前往公司 'MetricStream',并创建 3 个关联到该公司的任务,标题分别为 ['Schedule MetricStream compliance review meeting', 'Update MetricStream primary contact details', 'Follow up on MetricStream contract renewal'],每个任务的截止日期为 2026-07-20,正文为:'Reassigned from Ananya Reddy (separated 2026-06-30). Original responsibility transferred — review and update client contacts.' +7. 在 Twenty CRM 中,创建一条标题为 'Employee Separation Complete — Ananya Reddy' 的 note,正文需包含离职日期、结算金额(86,950.00、57,950.00、29,000.00)、付款日期 2026-07-05、银行账户 Sales of Product Income,以及重分配数量 3 和公司 MetricStream。 + +**登录凭据:** + +- frappe-hrms: Administrator / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: jony.ive@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_032/description_zh.md b/tasks/uni-m/Business/business_032/description_zh.md new file mode 100644 index 0000000..b748ea5 --- /dev/null +++ b/tasks/uni-m/Business/business_032/description_zh.md @@ -0,0 +1,20 @@ +**任务要求:** + +建立一个基于里程碑的客户合作,包含分阶段开票、手动收入确认 journal entry、里程碑庆祝活动以及 CRM 管道跟踪。在 Twenty CRM 中:(1) 创建一家名为 'Arcturus Digital' 的新公司,域名为 'arcturusdigital.com',员工数为 275。(2) 创建一名新联系人 'Elena Vasquez',邮箱 'elena.vasquez@arcturusdigital.com',职位为 'Director of Engineering',电话 '+1-503-621-4480',并将其关联到公司 'Arcturus Digital'。(3) 创建一个名为 'Arcturus Digital — Enterprise Software Modernization' 的新商机,金额 100000,阶段为 'Won',关闭日期 2026-01-31,关联到公司 'Arcturus Digital' 和联系人 'Elena Vasquez'。(4) 将公司 'Arcturus Digital' 加入收藏。在 BigCapital 中:(5) 创建客户 'Arcturus Digital',邮箱为 'elena.vasquez@arcturusdigital.com'。(6) 创建两个项目:'Phase 1 — Requirements & Solution Design'(Service 类型,售价 45000)和 'Phase 2 — Development & Go-Live'(Service 类型,售价 55000)。(7) 创建一个名为 'Deferred Revenue — Enterprise Engagements' 的新账户,类型为 'Other Current Liability',位于 current liabilities 部分下。此账户将作为手动收入确认 journal entry 的借方科目。(8) 为客户 'Arcturus Digital' 创建并交付一张日期为 2025-10-15 的发票,行项目为 'Phase 1 — Requirements & Solution Design',数量 1,单价 45000,到期日 2025-11-14。将其识别为 Milestone 1 发票,依据其日期(2025-10-15)、客户('Arcturus Digital')以及行项目('Phase 1 — Requirements & Solution Design')。(9) 为客户 'Arcturus Digital' 创建并交付第二张日期为 2026-01-05 的发票,行项目为 'Phase 2 — Development & Go-Live',数量 1,单价 55000,到期日 2026-02-04。将其识别为 Milestone 2 发票,依据其日期(2026-01-05)、客户('Arcturus Digital')以及行项目('Phase 2 — Development & Go-Live')。(10) 记录一笔日期为 2025-11-20、金额 45000 的 Payment Received,针对 Milestone 1 发票(日期为 2025-10-15、客户为 'Arcturus Digital'、行项目为 'Phase 1 — Requirements & Solution Design'),来源账户为 'Petty Cash'。(11) 创建并发布一条日期为 2025-11-20 的手动 journal entry:借记 'Deferred Revenue — Enterprise Engagements' 45000,贷记 'Uncategorized Income' 45000,备注为 'Revenue recognition — Milestone 1 — Arcturus Digital'。这是一个独立的记账调整,用于记录已完成里程碑的已确认收入。(12) 前往 Customers Balance Summary 报告,确认 'Arcturus Digital' 的未结余额等于 55000(Milestone 2 发票仍未支付)。在 Pretix 中:(13) 创建一个新活动 'Arcturus Digital Milestone Celebration',slug 为 'arcturus-milestone-celebration',归属于 organizer 'culinary-arts',开始日期 2026-03-10,货币为 'USD'。(14) 创建一个产品 'Celebration Gala Ticket',价格 175。(15) 创建一个名为 'Gala Ticket Quota' 的配额,大小 40,关联到 'Celebration Gala Ticket'。(16) 创建一个 voucher,code 为 'ARCTURUS100VIP',提供 100% 折扣,最多使用 3 次,关联到 'Celebration Gala Ticket',有效期至 2026-03-10。(17) 将活动设置为 live。在 Twenty CRM 中:(18) 回到商机 'Arcturus Digital — Enterprise Software Modernization',创建一个标题为 'Milestone 2 collection — Arcturus Digital' 的任务,截止日期 2026-02-04,正文为:'Invoice for Phase 2 — Development & Go-Live at 55000 due 2026-02-04. Contact Elena Vasquez at elena.vasquez@arcturusdigital.com. Celebration event scheduled 2026-03-10 — send complimentary voucher ARCTURUS100VIP.' (19) 创建一个标题为 'Send celebration invite — Arcturus Digital' 的任务,截止日期 2026-02-25,正文为:'Send Arcturus Digital Milestone Celebration invitation to Elena Vasquez with complimentary voucher code ARCTURUS100VIP (100% discount, max 3 uses).' 注意:100000 必须等于 45000 + 55000。 + +**步骤:** + +1. 在 Twenty CRM 中创建公司 'Arcturus Digital'(域名 arcturusdigital.com,员工数 275)。创建联系人 'Elena Vasquez'(邮箱 elena.vasquez@arcturusdigital.com,职位 Director of Engineering,电话 +1-503-621-4480),并将其关联到公司 'Arcturus Digital'。创建一个状态为 Won 的商机 'Arcturus Digital — Enterprise Software Modernization',金额 100000,关闭日期 2026-01-31,关联到公司 'Arcturus Digital' 和联系人 'Elena Vasquez'。如果商机阶段下拉菜单中没有 'Won',则先前往 Settings > Data model > Opportunity 并添加 'Won' 阶段。将 'Arcturus Digital' 加入收藏。 +2. 在 BigCapital 中,创建客户 'Arcturus Digital',邮箱为 'elena.vasquez@arcturusdigital.com'。创建两个服务项目:'Phase 1 — Requirements & Solution Design',售价 45000;以及 'Phase 2 — Development & Go-Live',售价 55000。创建一个名为 'Deferred Revenue — Enterprise Engagements'、类型为 'Other Current Liability' 的新账户。 +3. 在 BigCapital 中,为客户 'Arcturus Digital' 创建并交付日期为 2025-10-15 的 Milestone 1 发票,行项目为 'Phase 1 — Requirements & Solution Design',数量 1,单价 45000,到期 2025-11-14。然后为客户 'Arcturus Digital' 创建并交付日期为 2026-01-05 的 Milestone 2 发票,行项目为 'Phase 2 — Development & Go-Live',数量 1,单价 55000,到期 2026-02-04。通过日期、客户和行项目来识别每张发票,而不是依赖自动生成的发票编号。 +4. 在 BigCapital 中,记录一笔日期为 2025-11-20、金额 45000 的 Payment Received,针对 Milestone 1 发票(通过日期 2025-10-15、客户 'Arcturus Digital'、行项目 'Phase 1 — Requirements & Solution Design' 识别)并存入账户 'Petty Cash'。然后创建并发布一条日期为 2025-11-20 的手动 journal entry:借记 'Deferred Revenue — Enterprise Engagements' 45000,贷记 'Uncategorized Income' 45000,备注为 'Revenue recognition — Milestone 1 — Arcturus Digital'。这是一个独立的记账调整,用于记录已完成里程碑的已确认收入。 +5. 在 BigCapital 中,前往 Customers Balance Summary 报告,确认 'Arcturus Digital' 的未结余额恰好为 55000,从而确认 Milestone 2 发票未支付且 Milestone 1 发票已完全结清。 +6. 在 Pretix 中,创建活动 'Arcturus Digital Milestone Celebration',slug 为 'arcturus-milestone-celebration',归属于 organizer 'culinary-arts',开始日期 2026-03-10,货币为 'USD'。创建产品 'Celebration Gala Ticket',价格 175;创建配额 'Gala Ticket Quota',大小 40,关联到该产品;并创建 voucher 'ARCTURUS100VIP',提供 100% 折扣,最多 3 次使用,关联到 'Celebration Gala Ticket',有效期至 2026-03-10。将活动设置为 live。 +7. 在 Twenty CRM 中,在商机 'Arcturus Digital — Enterprise Software Modernization' 上创建任务 'Milestone 2 collection — Arcturus Digital',截止日期 2026-02-04,正文引用 Milestone 2 发票金额、到期日、联系人信息、庆祝日期和 voucher code。创建任务 'Send celebration invite — Arcturus Digital',截止日期 2026-02-25,正文引用活动名称、联系人姓名、voucher code、折扣百分比和最多使用次数。 + +**登录凭据:** + +- twenty: jony.ive@apple.dev / tim@apple.dev +- bigcapital: admin@bigcapital.local / admin123 +- pretix: admin@localhost / admin + diff --git a/tasks/uni-m/Business/business_051/description_zh.md b/tasks/uni-m/Business/business_051/description_zh.md new file mode 100644 index 0000000..efcf58b --- /dev/null +++ b/tasks/uni-m/Business/business_051/description_zh.md @@ -0,0 +1,15 @@ +**任务要求:** + +执行一项筹款晚会设置,包含分级赞助、捐赠追踪、CRM 赞助方管理以及会计资金记录。在 Pretix 中:(1) 创建一个名为 'Stars & Stripes Charity Gala 2025' 的新活动,slug 为 'stars-stripes-gala-2025',归属于 organizer 'nyc-cultural',开始日期 2025-12-06,货币为 'USD'。(2) 创建三个类别:'Platinum Benefactors'、'Gold Benefactors' 和 'Silver Supporters Circle'。(3) 创建三个产品:'Platinum Gala Table',定价 15000.00,分配到类别 'Platinum Benefactors';'Gold Gala Table',定价 7500.00,分配到类别 'Gold Benefactors';以及 'Silver Gala Seat',定价 750.00,分配到类别 'Silver Supporters Circle'。(4) 创建配额:'Platinum Benefactors Quota',大小 4,关联到 'Platinum Gala Table';'Gold Benefactors Quota',大小 8,关联到 'Gold Gala Table';'Silver Supporters Quota',大小 60,关联到 'Silver Gala Seat'。(5) 创建一个类型为 'Text (one line)' 的自定义问题,文本为 'Company Name',并对所有产品都设为必填。(6) 创建一个代码为 'GALASPONSOR2025' 的 voucher,提供 20% 折扣,最多使用 15 次,有效期至 2025-12-06,关联到 'Platinum Gala Table' 和 'Gold Gala Table'。(7) 创建一个名为 'Stars & Stripes Gala Check-In List' 的签到列表,关联到这三个产品。(8) 将活动设置为 live。在 BigCapital 中:(9) 创建一个名为 'Stars & Stripes Gala Revenue'、类型为 'Income' 的新账户。(10) 创建一个名为 'Restricted Gala Sponsorship Fund'、类型为 'Other Current Liability' 的新账户。(11) 创建客户 'Pinnacle Ventures Corp',邮箱为 'contact@pinnacleventures.com'。(12) 创建客户 'Horizon Media Group',邮箱为 'info@horizonmediagroup.com'。(13) 创建一个名为 'Platinum Gala Sponsorship Service' 的项目,类型为 Service,售价 15000.00,销售账户为 'Stars & Stripes Gala Revenue',描述为 'Platinum table sponsorship — Stars & Stripes Charity Gala 2025'。(14) 创建一个名为 'Gold Gala Sponsorship Service' 的项目,类型为 Service,售价 7500.00,销售账户为 'Stars & Stripes Gala Revenue',描述为 'Gold table sponsorship — Stars & Stripes Charity Gala 2025'。(15) 为客户 'Pinnacle Ventures Corp' 创建并交付一张日期为 2025-10-01 的发票,行项目为 'Platinum Gala Sponsorship Service',数量 1,单价 15000.00,到期日 2025-11-15。(16) 为客户 'Horizon Media Group' 创建并交付一张日期为 2025-10-01 的发票,行项目为 'Gold Gala Sponsorship Service',数量 2,单价 7500.00,到期日 2025-11-15。(17) 记录一笔日期为 2025-10-22、金额 15000.00 的 Payment Received,针对 'Pinnacle Ventures Corp' 的发票,来源账户为 'Bank Account'。(18) 创建并发布一条日期为 2025-10-22 的手动 journal entry:借记 'Stars & Stripes Gala Revenue' 15000.00,贷记 'Restricted Gala Sponsorship Fund' 15000.00,备注为 'Reclassify Platinum sponsorship to restricted fund — Pinnacle Ventures Corp — Stars & Stripes Charity Gala 2025'。(19) 前往 Customers Balance Summary 报告,确认 'Pinnacle Ventures Corp' 显示零余额,且 'Horizon Media Group' 显示未结余额 15000.00。在 Twenty CRM 中:(20) 创建公司 'Pinnacle Ventures Corp',域名为 'pinnacleventures.com'。(21) 创建联系人 'Margaret Holloway',邮箱为 'contact@pinnacleventures.com',职位为 'Chief Executive Officer',并关联到公司 'Pinnacle Ventures Corp'。(22) 创建公司 'Horizon Media Group',域名为 'horizonmediagroup.com'。(23) 创建联系人 'Thomas Beaumont',邮箱为 'info@horizonmediagroup.com',职位为 'Director of Corporate Partnerships',并关联到公司 'Horizon Media Group'。(24) 创建一个标题为 'Pinnacle Ventures — Platinum Sponsorship 2025' 的商机,金额 15000.00,阶段为 'Won',关闭日期 2025-10-22,关联到公司 'Pinnacle Ventures Corp'。(25) 创建一个标题为 'Horizon Media — Gold Sponsorship 2025' 的商机,金额 15000.00,阶段为 'Qualification',关闭日期 2025-11-15,关联到公司 'Horizon Media Group'。(26) 创建一个标题为 'Collect sponsorship payment — Horizon Media Group' 的任务,关联到公司 'Horizon Media Group',截止日期为 2025-11-15,正文为:'Gold sponsorship invoice for 15000.00 USD outstanding. Contact Thomas Beaumont at info@horizonmediagroup.com. Voucher code GALASPONSOR2025 available for 20% discount on additional tickets.' (27) 创建一条标题为 'Stars & Stripes Charity Gala 2025 — Sponsorship Tracker' 的 note,正文包含:Platinum sponsor 'Pinnacle Ventures Corp' at 15000.00 USD with status PAID on 2025-10-22; Gold sponsor 'Horizon Media Group' at 15000.00 USD with status PENDING due 2025-11-15; total pledged 30000.00 USD; total collected 15000.00 USD; outstanding 15000.00 USD。 + +**步骤:** + +1. 在 Pretix 中创建晚会活动 'Stars & Stripes Charity Gala 2025',slug 为 'stars-stripes-gala-2025',归属于 organizer 'nyc-cultural',开始日期 2025-12-06,货币 USD。然后创建三个类别(Platinum Benefactors / Gold Benefactors / Silver Supporters Circle)以及三个对应产品,价格分别为(Platinum Gala Table 15000.00、Gold Gala Table 7500.00、Silver Gala Seat 750.00),并分配到各自类别。为每个产品创建配额(Platinum Benefactors Quota 大小 4、Gold Benefactors Quota 大小 8、Silver Supporters Quota 大小 60)。添加一个对所有产品都必填的自定义问题 'Company Name'。创建一个赞助 voucher 代码 GALASPONSOR2025,提供 20% 百分比折扣,最多使用 15 次,关联到 Platinum Gala Table 和 Gold Gala Table。创建一个覆盖所有产品的签到列表 'Stars & Stripes Gala Check-In List'。将活动设置为 live。 +2. 在 BigCapital 中,创建两个新账户:'Stars & Stripes Gala Revenue'(Income)和 'Restricted Gala Sponsorship Fund'(Other Current Liability)。创建两个客户记录:'Pinnacle Ventures Corp'(contact@pinnacleventures.com)和 'Horizon Media Group'(info@horizonmediagroup.com)。创建两个服务项目:'Platinum Gala Sponsorship Service'(售价 15000.00,销售账户 Stars & Stripes Gala Revenue)和 'Gold Gala Sponsorship Service'(售价 7500.00,销售账户 Stars & Stripes Gala Revenue)。向 Pinnacle Ventures Corp 开具并交付一张日期为 2025-10-01 的发票,内容为 1x Platinum Gala Sponsorship Service,单价 15000.00,到期 2025-11-15。向 Horizon Media Group 开具并交付一张日期为 2025-10-01 的发票,内容为 2x Gold Gala Sponsorship Service,每个 7500.00(总计 15000.00),到期 2025-11-15。记录一笔 2025-10-22 的 Payment Received,金额 15000.00,针对 Pinnacle Ventures Corp 的发票,来源为 Bank Account。创建并发布一条日期为 2025-10-22 的 journal entry,借记 Stars & Stripes Gala Revenue 15000.00,贷记 Restricted Gala Sponsorship Fund 15000.00,备注为 'Reclassify Platinum sponsorship to restricted fund — Pinnacle Ventures Corp — Stars & Stripes Charity Gala 2025'。在 Customers Balance Summary 报告中验证客户余额。 +3. 在 Twenty CRM 中,创建公司 'Pinnacle Ventures Corp'(域名 pinnacleventures.com)以及联系人 'Margaret Holloway'(邮箱 contact@pinnacleventures.com,职位 Chief Executive Officer)并关联到该公司。创建公司 'Horizon Media Group'(域名 horizonmediagroup.com)以及联系人 'Thomas Beaumont'(邮箱 info@horizonmediagroup.com,职位 Director of Corporate Partnerships)并关联到该公司。创建一个 Won 商机 'Pinnacle Ventures — Platinum Sponsorship 2025',金额 15000.00,关闭日期 2025-10-22,关联到 Pinnacle Ventures Corp。创建一个 Qualification 阶段商机 'Horizon Media — Gold Sponsorship 2025',金额 15000.00,关闭日期 2025-11-15,关联到 Horizon Media Group。如果商机阶段下拉菜单中没有 'Won' 或 'Qualification',则先前往 Settings > Data model > Opportunity 并添加缺失的阶段。创建一个收款跟进任务 'Collect sponsorship payment — Horizon Media Group',关联到 Horizon Media Group,截止日期为 2025-11-15,正文引用 15000.00 USD、Thomas Beaumont、info@horizonmediagroup.com 和 GALASPONSOR2025。创建一条摘要 note,标题为 'Stars & Stripes Charity Gala 2025 — Sponsorship Tracker',内容包含全部赞助信息:每位赞助方的公司名称、金额、币种、付款状态与日期、总承诺 30000.00、总收款 15000.00、未结 15000.00。 + +**登录凭据:** + +- pretix: admin@localhost / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: jony.ive@apple.dev / tim@apple.dev diff --git a/tasks/uni-m/Business/business_052/description_zh.md b/tasks/uni-m/Business/business_052/description_zh.md new file mode 100644 index 0000000..42ab525 --- /dev/null +++ b/tasks/uni-m/Business/business_052/description_zh.md @@ -0,0 +1,16 @@ +**任务要求:** + +在 Pretix 中创建并管理一个多场次培训系列,采用阶梯定价,通过 CRM 商机跟踪报名情况,并在 BigCapital 中记录系列收入。在 Pretix 中:(1) 在组织者 'nyc-cultural' 下创建活动 'Leadership Communication Skills',slug 为 'leadership-comm-skills',开始日期为 2026-08-12,货币为 'USD'。创建产品 'Leadership Communication Skills Ticket',价格为 239.00。创建配额 'Leadership Communication Skills Quota',大小为 48,并关联到 'Leadership Communication Skills Ticket'。创建名为 'Early Enrollment Discount' 的折扣规则,对 'Leadership Communication Skills Ticket' 应用 24% 的百分比折扣。将活动设为公开。 (2) 在同一组织者下创建活动 'Leadership Negotiation & Influence Workshop',slug 为 'leadership-negotiation-influence',开始日期为 2026-09-09,货币为 'USD'。创建产品 'Leadership Negotiation Workshop Ticket',价格为 289.00。创建配额 'Leadership Negotiation Workshop Quota',大小为 38,并关联到 'Leadership Negotiation Workshop Ticket'。创建一个代码为 'LDRNEGO17' 的优惠券,提供 17% 折扣,最大使用次数 14 次,有效期至 2026-09-09,并关联到 'Leadership Negotiation Workshop Ticket'。将活动设为公开。 (3) 在同一组织者下创建活动 'Leadership Strategy & Executive Presence Masterclass',slug 为 'leadership-strategy-exec',开始日期为 2026-10-07,货币为 'USD'。创建产品 'Leadership Strategy Masterclass Ticket',价格为 369.00。创建配额 'Leadership Strategy Masterclass Quota',大小为 28,并关联到 'Leadership Strategy Masterclass Ticket'。添加一个类型为 'Text (one line)' 的自定义问题,文本为 'Please describe your current leadership role and the size of the team you manage.',并将其设为 'Leadership Strategy Masterclass Ticket' 的必填项。将活动设为公开。 (4) 打开 'Leadership Communication Skills' 的 Event Dashboard,验证其处于公开状态,且配额 'Leadership Communication Skills Quota' 显示 48 个可用名额。在 Twenty CRM 中:(5) 搜索公司 'Mediaocean' 并打开其详情页。验证其存在,并记录其当前关联的商机。 (6) 创建一个标题为 'Mediaocean Leadership Training Series 2026' 的商机,金额等于 (11 × 239.00) + (9 × 289.00) + (5 × 369.00),阶段为 'Proposal',关闭日期为 2026-11-12,并关联到公司 'Mediaocean'。 (7) 创建一个人员 'Victoria Lam',邮箱为 'victoria.lam@mediaocean-training.com',职位为 'Head of People Development',并关联到公司 'Mediaocean'。 (8) 创建三个与公司 'Mediaocean' 关联的任务:任务 1 标题为 'Send Leadership Communication Skills registration link',到期日为 2026-07-29,正文为 'Event date: 2026-08-12. Price: 239.00 USD. Early-bird discount: 24% off. Contact: Victoria Lam (victoria.lam@mediaocean-training.com).'; 任务 2 标题为 'Send Leadership Negotiation & Influence Workshop registration link',到期日为 2026-08-26,正文为 'Event date: 2026-09-09. Price: 289.00 USD. Voucher code: LDRNEGO17 for 17% off. Contact: Victoria Lam (victoria.lam@mediaocean-training.com).'; 任务 3 标题为 'Send Leadership Strategy & Executive Presence Masterclass registration link',到期日为 2026-09-23,正文为 'Event date: 2026-10-07. Price: 369.00 USD. Contact: Victoria Lam (victoria.lam@mediaocean-training.com).' 在 BigCapital 中:(9) 创建一个名为 'Leadership Development Training Series Package' 的项目,类型为 Service,销售价格等于 (11 × 239.00) + (9 × 289.00) + (5 × 369.00),描述为 'Training series: Leadership Communication Skills, Leadership Negotiation & Influence Workshop, Leadership Strategy & Executive Presence Masterclass'。 (10) 创建客户 'Mediaocean Training Account',邮箱为 'victoria.lam@mediaocean-training.com'。 (11) 创建一张日期为 2026-07-25 的销售报价单,客户为 'Mediaocean Training Account',包含三条明细:'Leadership Communication Skills registration' 数量 11 单价 239.00,'Leadership Negotiation & Influence Workshop registration' 数量 9 单价 289.00,'Leadership Strategy & Executive Presence Masterclass registration' 数量 5 单价 369.00。报价总额必须等于 (11 × 239.00) + (9 × 289.00) + (5 × 369.00)。将该报价单标记为已交付。 (12) 打开 Sales Estimates 列表,验证客户 'Mediaocean Training Account' 的报价存在,状态为 'Delivered',且总金额等于 (11 × 239.00) + (9 × 289.00) + (5 × 369.00)。 + +**步骤:** + +1. 在 Pretix 中,在同一组织者 (nyc-cultural) 下创建三个带有阶梯定价的活动。对于活动 1 ('Leadership Communication Skills'),添加名为 'Early Enrollment Discount' 的 24% 折扣规则。对于活动 2 ('Leadership Negotiation & Influence Workshop'),添加优惠券代码 'LDRNEGO17',折扣 17%。对于活动 3 ('Leadership Strategy & Executive Presence Masterclass'),添加一个必填自定义问题 'Please describe your current leadership role and the size of the team you manage.'。为每个活动创建产品和配额,并将所有三个活动设为公开。验证活动 1 的仪表板显示正确的配额可用性(48)。 +2. 在 Twenty CRM 中,找到培训客户公司 'Mediaocean',为计算出的系列总额——(11 × 239.00) + (9 × 289.00) + (5 × 369.00)——创建一个阶段为 'Proposal' 的商机。创建一个联系人 'Victoria Lam' 并关联到该公司,同时创建三个报名联络任务——每个活动一个——并关联到该公司,任务内容包含具体的价格和折扣/优惠券信息。 +3. 在 BigCapital 中,为该培训系列创建服务项目 'Leadership Development Training Series Package',销售价格等于计算出的总额 (11 × 239.00) + (9 × 289.00) + (5 × 369.00)。创建客户记录 'Mediaocean Training Account',然后创建一张包含三条明细(每个活动一条)的销售报价单,分别使用对应的价格和数量。报价总额必须等于同一计算金额。将报价单交付,并验证它在报价列表中显示为 'Delivered' 且总额正确。 + +**登录凭证:** + +- pretix: admin@localhost / admin +- twenty: jane.austen@apple.dev / tim@apple.dev +- bigcapital: admin@bigcapital.local / admin123 + diff --git a/tasks/uni-m/Business/business_062/description_zh.md b/tasks/uni-m/Business/business_062/description_zh.md new file mode 100644 index 0000000..0b3e231 --- /dev/null +++ b/tasks/uni-m/Business/business_062/description_zh.md @@ -0,0 +1,23 @@ +**任务要求:** + +执行一条供应商付款与费用对账工作流,涵盖会计账单管理、银行规则配置、CRM 供应商跟踪以及 HR 费用验证。在 BigCapital 中:(1) 创建供应商 'Vantage Systems LLC',邮箱为 'ap@vantagesystems.com',期初余额为 800。 (2) 创建供应商 'Luminary Consulting Group',邮箱为 'billing@luminarycg.com',期初余额为 350。 (3) 创建项目 'ERP Implementation Services',类型为 Service,成本价为 280,描述为 'Full-cycle ERP deployment, configuration, and user training'。 (4) 创建项目 'Business Process Optimization',类型为 Service,成本价为 160,描述为 'Workflow analysis and process improvement consulting services'。 (5) 为供应商 'Vantage Systems LLC' 创建一张日期为 2025-10-06 的账单,包含两条明细:'ERP Implementation Services' 数量 3,单价 280,以及 'Business Process Optimization' 数量 2,单价 160。账单总额应为 1160(即 3 × 280 + 2 × 160)。打开该账单。 (6) 为供应商 'Luminary Consulting Group' 创建第二张日期为 2025-10-15 的账单,包含一条明细:'Business Process Optimization' 数量 5,单价 160。账单总额应为 800(即 5 × 160)。打开该账单。 (7) 记录一笔日期为 2025-10-21 的 Payment Made,针对供应商 'Vantage Systems LLC' 的第一张账单,从账户 'Bank Account' 支付 950。 (8) 记录一笔日期为 2025-10-27 的 Payment Made,针对供应商 'Luminary Consulting Group' 的第二张账单,从账户 'Bank Account' 支付 650。 (9) 打开 Vendors Balance Summary 报告,验证 'Vantage Systems LLC' 的余额为 1010,'Luminary Consulting Group' 的余额为 500。注:供应商剩余余额 = 期初余额 + 账单总额 − 付款金额,因此 1010 = 800 + 1160 − 950,500 = 350 + 800 − 650。 (10) 打开 Transactions by Vendors 报告,筛选日期范围 2025-10-06 到 2025-10-27。验证供应商 'Vantage Systems LLC' 恰好显示 2 笔交易:一张 1160 的账单和一笔 950 的付款;供应商 'Luminary Consulting Group' 恰好显示 2 笔交易:一张 800 的账单和一笔 650 的付款。 (11) 打开 Purchases by Items 报告,筛选日期范围 2025-10-06 到 2025-10-15。验证 'ERP Implementation Services' 的采购总额为 840(即 3 × 280),以及 'Business Process Optimization' 的采购总额为 1120(即 2 × 160 + 5 × 160)。 (12) 创建一条日期为 2025-10-29 的费用记录,金额 210,费用科目为 'Cost of Goods Sold',从 'Petty Cash' 支付,引用号为 'MISC-EXP-2025-004'。发布该费用。 (13) 打开 General Ledger 报告,筛选账户 'Bank Account',日期范围 2025-10-21 到 2025-10-27。验证出现 950 和 650 的贷方分录。 (14) 创建一个名为 'Cost of Goods Auto-Categorization' 的银行规则,匹配描述包含 'cogs' 的交易,并将其归类到账户 'Cost of Goods Sold'。在 Twenty CRM 中:(15) 创建公司 'Vantage Systems LLC',域名为 'vantagesystems.com'。 (16) 创建人员 'Harrison Blake',邮箱为 'ap@vantagesystems.com',职位为 'Vendor Relations Manager',并关联到公司 'Vantage Systems LLC'。 (17) 创建公司 'Luminary Consulting Group',域名为 'luminarycg.com'。 (18) 创建人员 'Celeste Moreau',邮箱为 'billing@luminarycg.com',职位为 'Senior Consultant',并关联到公司 'Luminary Consulting Group'。 (19) 创建一个标题为 'Vendor Payment Reconciliation — 2025-10-27' 的笔记,正文为:'Vendor 1: Vantage Systems LLC — Bill 2025-10-06 total 1160, paid 950 on 2025-10-21, remaining 1010. +Vendor 2: Luminary Consulting Group — Bill 2025-10-15 total 800, paid 650 on 2025-10-27, remaining 500. +Misc expense: 210 from Petty Cash on 2025-10-29. +Bank rule created: Cost of Goods Auto-Categorization. +Service item 1 purchase total: 840. +Service item 2 purchase total: 1120.' (20) 将公司 'Vantage Systems LLC' 添加到收藏夹。在 Frappe HRMS 中:(21) 打开 Expense Claim Type 列表。验证费用报销类型 'Calls' 存在,且其描述设置为 'Linked to BigCapital account: Cost of Goods Sold'。如果不存在,则创建它并将描述设为 'Linked to BigCapital account: Cost of Goods Sold'。对 'Food' 重复同样操作,描述为 'Linked to BigCapital account: Advertising Expense'。 (22) 为员工 'Deepika Joshi' 创建一张新的 Expense Claim,过账日期为 2025-10-29,费用类型为 'Calls',金额为 210,描述为 'Cross-reference: petty cash disbursement MISC-EXP-2025-004 from Petty Cash'。提交该费用报销。 + +**步骤:** + +1. 在 BigCapital 中,创建两个带期初余额的供应商、两个服务项目以及两张账单(每个供应商一张),并填写相应的明细。打开两张账单。 +2. 针对两张账单分别从银行账户记录付款。打开 Vendors Balance Summary 报告并验证剩余余额(期初余额 + 账单总额 − 付款金额)。打开 Transactions by Vendors 报告并筛选 2025-10-06–2025-10-27,验证每个供应商恰好显示 2 笔交易(一张账单、一笔付款)且金额正确。打开 Purchases by Items 报告并筛选 2025-10-06–2025-10-15,验证 'ERP Implementation Services' 显示总额 840,'Business Process Optimization' 显示总额 1120。 +3. 创建一条杂项费用并发布。创建银行规则 'Cost of Goods Auto-Categorization',用于将未来描述包含 'cogs' 的交易自动归类到 'Cost of Goods Sold'。验证 Bank Account 的 General Ledger 显示两笔付款金额对应的贷方分录。 +4. 在 Twenty CRM 中,为两个供应商创建公司和联系人记录。创建一条对账摘要笔记,包含所有账单总额、付款金额、剩余余额、杂项费用、银行规则以及按项目的采购总额。将供应商 1 的公司加入收藏夹。 +5. 在 Frappe HRMS 中,验证或创建费用报销类型 'Calls' 和 'Food',确保它们的描述分别匹配 'Linked to BigCapital account: Cost of Goods Sold' 和 'Linked to BigCapital account: Advertising Expense'。创建并提交一张针对员工 'Deepika Joshi' 的 Expense Claim,引用该 Petty Cash 支出。 + +**登录凭证:** + +- bigcapital: admin@bigcapital.local / admin123 +- twenty: jane.austen@apple.dev / tim@apple.dev +- frappe-hrms: Administrator / admin + diff --git a/tasks/uni-m/Business/business_065/description_zh.md b/tasks/uni-m/Business/business_065/description_zh.md new file mode 100644 index 0000000..0d49397 --- /dev/null +++ b/tasks/uni-m/Business/business_065/description_zh.md @@ -0,0 +1,39 @@ +**任务要求:** + +执行一条财务审计准备工作流,涵盖会计报表生成与对账、HR 薪资与员工数据验证,以及 CRM 文档汇编。在 BigCapital 中:(1) 打开 Trial Balance Sheet 报告,筛选日期范围 2026-01-01 到 2026-12-31,记账基础为 'Accrual'。将报告导出为 PDF。记录总借方和总贷方,以确认二者平衡。 (2) 打开 Balance Sheet 报告,筛选截至日期 2026-12-31,记账基础为 'Accrual'。将报告导出为 PDF。记录总资产、总负债和总权益。 (3) 打开 Profit and Loss Sheet 报告,筛选日期范围 2026-01-01 到 2026-12-31,记账基础为 'Accrual'。将报告导出为 PDF。记录总收入、总费用和净利润。 (4) 打开 Cash Flow Statement,筛选日期范围 2026-01-01 到 2026-12-31。将报告导出为 PDF。记录经营活动净现金流。 (5) 打开 Journal Sheet 报告,筛选日期范围 2026-01-01 到 2026-12-31。将报告导出为 PDF。 (6) 打开 General Ledger 报告,筛选账户 'Bank Account',日期范围 2026-01-01 到 2026-12-31。验证期末余额为 -$215,382.44。将报告导出为 PDF。 (7) 打开 A/R Aging Summary 报告,筛选截至日期 2026-12-31。将报告导出为 PDF。记录总应收账款。 (8) 打开 A/P Aging Summary 报告,筛选截至日期 2026-12-31。将报告导出为 PDF。记录总应付账款。 (9) 打开 Sales Tax Liability Summary 报告,筛选日期范围 2026-01-01 到 2026-12-31。将报告导出为 PDF。 (10) 将 2027-01-01 之前的所有交易锁定,以防止对审计期间进行修改。验证锁定状态显示交易已锁定。在 Frappe HRMS 中:(11) 打开按公司 'TechVista Solutions Pvt. Ltd.' 筛选的 Employee Information 报告。将员工信息导出为 CSV。记录在职员工总数。 (12) 打开按 3 月和公司 'TechVista Solutions Pvt. Ltd.' 筛选的 Salary Register 报告。记录所有员工的总工资收入、总扣款和总实发工资。导出工资表。 (13) 打开按公司 'TechVista Solutions Pvt. Ltd.' 和工资周期 '2026' 筛选的 Income Tax Deductions 报告。记录全年扣缴的所得税总额。 (14) 打开按公司 'TechVista Solutions Pvt. Ltd.' 和工资周期 '2026' 筛选的 Provident Fund Deductions 报告。记录 PF 扣款总额。 (15) 打开按公司 'TechVista Solutions Pvt. Ltd.' 筛选的 Employee Leave Balance Summary 报告。记录所有员工在请假类型 'Sick Leave' 下的总未结余假期。这代表一项潜在负债。 (16) 打开 Employee Advance Summary 报告。验证不存在状态为 'Unpaid' 的员工预支,或未收回余额超过 $750 的预支。记录任何例外。在 Twenty CRM 中:(17) 打开 Opportunities 列表。按阶段 'Won' 且关闭日期在 2026-01-01 到 2026-12-31 之间筛选。按金额降序排序。记录全年 Won 成交的总数量和总收入。 (18) 创建一个标题为 'Audit Preparation Package — FY 2026' 的笔记,正文包含所有已记录的数字值:'Financial Statements Generated (all exported as PDF): +- Trial Balance: Total Debits = [value from step 1], Total Credits = [value from step 1], balanced confirmed +- Balance Sheet as of 2026-12-31: Total Assets = [value from step 2], Total Liabilities = [value from step 2], Total Equity = [value from step 2] +- P&L 2026-01-01 to 2026-12-31: Total Revenue = [value from step 3], Total Expenses = [value from step 3], Net Income = [value from step 3] +- Cash Flow Statement: Net Cash from Operating Activities = [value from step 4] +- Journal Sheet: All entries for the period exported +- General Ledger (Bank Account): Closing balance verified at -$215,382.44 +- A/R Aging as of 2026-12-31: Total Outstanding Receivables = [value from step 7] +- A/P Aging as of 2026-12-31: Total Outstanding Payables = [value from step 8] +- Sales Tax Liability: Exported + +Transaction Lock: All transactions before 2027-01-01 locked. + +HR Verification: +- Active employees: [count from step 11] +- Final payroll (March): Gross Earnings = [value from step 12], Total Deductions = [value from step 12], Net Pay = [value from step 12] +- Income tax deducted (2026): [value from step 13] +- PF deductions (2026): [value from step 14] +- Outstanding leave liability (Sick Leave): [value from step 15] +- Employee advances: [exceptions from step 16 or "No unclaimed advances above $750"] + +CRM Revenue: +- Won deals FY 2026: Count = [value from step 17], Total Revenue = [value from step 17]' (19) 创建一个标题为 'Submit audit package to external auditors — FY 2026' 的任务,截止日期为 2027-03-15,正文为:'All financial statements, HR payroll reports, and CRM revenue summaries have been compiled. Transaction lock applied through 2027-01-01. Package ready for external auditor review.' + +**步骤:** + +1. 在 BigCapital 中,生成并导出为 PDF 的 Trial Balance、Balance Sheet、Profit and Loss、Cash Flow Statement、Journal Sheet、General Ledger(账户 'Bank Account')、A/R Aging Summary、A/P Aging Summary 和 Sales Tax Liability Summary,全部限定在财年日期范围 2026-01-01 到 2026-12-31。记录每份报表的具体数值(借/贷、资产/负债/权益、收入/费用/净利润、经营现金流、应收、应付)。验证银行账户期末余额为 -$215,382.44。 +2. 在 BigCapital 中锁定 2027-01-01 之前的所有交易,并验证锁定状态。 +3. 在 Frappe HRMS 中,将公司 'TechVista Solutions Pvt. Ltd.' 的 Employee Information 报告导出为 CSV 并记录在职员工数量,查看 3 月的 Salary Register 并记录工资/扣款/净工资总额,检查工资周期 '2026' 的 Income Tax Deductions 和 Provident Fund Deductions 报告并记录总额,查看请假类型 'Sick Leave' 的假期余额负债,并验证没有未结员工预支超过 $750。 +4. 在 Twenty CRM 中,筛选 2026-01-01 到 2026-12-31 财年内的 Won 商机并记录总数量和总收入。创建一条名为 'Audit Preparation Package — FY 2026' 的完整审计准备笔记,包含从 BigCapital、Frappe HRMS 和 CRM 收集到的所有具体数值。创建一个标题为 'Submit audit package to external auditors — FY 2026' 的任务,截止日期为 2027-03-15。 + +**登录凭证:** + +- bigcapital: admin@bigcapital.local / admin123 +- frappe-hrms: Administrator / admin +- twenty: phil.schiler@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_084/description_zh.md b/tasks/uni-m/Business/business_084/description_zh.md new file mode 100644 index 0000000..2b26735 --- /dev/null +++ b/tasks/uni-m/Business/business_084/description_zh.md @@ -0,0 +1,27 @@ +**任务要求:** + +规划一条跨 Pretix、BigCapital、Twenty CRM 和 Frappe HRMS 的会议赞助与线索捕获流程,涵盖活动设置、赞助收入核算、线索导入与销售跟进,以及员工协调。 + +在 Pretix 中:(1) 创建新活动 'AI Horizons 2026',slug 为 'ai-horizons-2026',归属于组织者 'culinary-arts',开始日期为 2026-12-03,货币为 'USD'。 (2) 创建三个分类:'Sponsor Exhibits'、'Attendee Tickets' 和 'Workshop Sessions'。 (3) 创建产品:'Platinum Exhibit Booth',价格 11000,分类为 'Sponsor Exhibits';'Gold Exhibit Booth',价格 5500,分类为 'Sponsor Exhibits';'General Entry Ticket',价格 329,分类为 'Attendee Tickets';'Workshop Session Pass',价格 169,分类为 'Workshop Sessions'。 (4) 创建配额:'Platinum Exhibit Quota',大小 4,关联到 'Platinum Exhibit Booth';'Gold Exhibit Quota',大小 7,关联到 'Gold Exhibit Booth';'General Entry Quota',大小 550,关联到 'General Entry Ticket';'Workshop Session Quota',大小 130,关联到 'Workshop Session Pass'。 (5) 创建一个类型为 'Text (one line)' 的自定义问题,文本为 'Company Name',并将其设为 'Platinum Exhibit Booth' 和 'Gold Exhibit Booth' 的必填项。 (6) 创建第二个类型为 'Text (one line)' 的自定义问题,文本为 'Job Title',并将其设为 'General Entry Ticket' 的必填项。 (7) 恰好创建两个带标签 'AIHORIZONS-SPONSOR-COMP' 的优惠券:第一张优惠券代码为 'PLAT-AIHORIZONS-001',第二张优惠券代码为 'GOLD-AIHORIZONS-001',每张最多可使用 5 次,提供 100% 折扣,有效期至 2026-12-03,并关联到 'General Entry Ticket'。 (8) 创建名为 'Early Bird 18% Off' 的折扣规则,对 'General Entry Ticket' 和 'Workshop Session Pass' 应用 18% 折扣。 (9) 创建名为 'AI Horizons Main Check-In' 的签到名单,关联到所有四种产品。 (10) 创建第二个名为 'Sponsor Exhibit Check-In' 的签到名单,仅关联到 'Platinum Exhibit Booth' 和 'Gold Exhibit Booth'。 (11) 打开 Event Tax Settings 页面。创建名为 'Conference Tax Rule' 的税规则,税率为 8%,并将其设为默认税规则。 (12) 将活动设为公开。 在 BigCapital 中:(13) 创建一个名为 'AI Horizons Sponsorship Revenue' 的账户,类型为 'Income'。 (14) 创建一个名为 'Deferred AI Horizons Sponsorship' 的账户,类型为 'Other Current Liability'。 (15) 创建客户 'Zenith Cloud Corp',邮箱为 'sponsor@zenithcloud.com'。 (16) 创建客户 'Prism Digital Solutions',邮箱为 'events@prismdigital.com'。 (17) 创建项目 'Platinum Exhibit Sponsorship Service',类型为 Service,销售价格 11000,销售账户为 'AI Horizons Sponsorship Revenue'。 (18) 创建项目 'Gold Exhibit Sponsorship Service',类型为 Service,销售价格 5500,销售账户为 'AI Horizons Sponsorship Revenue'。 (19) 为客户 'Zenith Cloud Corp' 创建并交付一张日期为 2026-10-01 的发票,行项目为 'Platinum Exhibit Sponsorship Service',数量 1,单价 11000,到期日 2026-11-01。 (20) 为客户 'Prism Digital Solutions' 创建并交付一张日期为 2026-10-01 的发票,行项目为 'Gold Exhibit Sponsorship Service',数量 2,单价 5500,到期日 2026-11-01。 (21) 记录一笔日期为 2026-10-18 的 Payment Received,金额 11000,针对 'Zenith Cloud Corp' 的发票,从账户 'Saving Bank Account' 收款。 (22) 创建并发布一条日期为 2026-10-18 的手工日记账分录:借记 'AI Horizons Sponsorship Revenue' 11000,贷记 'Deferred AI Horizons Sponsorship' 11000,备注明为 'Defer Platinum sponsorship revenue — Zenith Cloud Corp — recognize at conference date 2026-12-03'。 (23) 打开 A/R Aging Summary 报告,筛选截至日期 2026-11-01。验证 'Zenith Cloud Corp' 余额为零,且 'Prism Digital Solutions' 显示 11000。打印该报告。在 Twenty CRM 中:(24) 创建公司 'Zenith Cloud Corp',域名为 'zenithcloud.com'。创建人员 'Howard Lim',邮箱为 'sponsor@zenithcloud.com',职位为 'Chief Technology Officer',并关联到公司 'Zenith Cloud Corp'。 (25) 创建公司 'Prism Digital Solutions',域名为 'prismdigital.com'。创建人员 'Beatrice Fontaine',邮箱为 'events@prismdigital.com',职位为 'Head of Partnerships',并关联到公司 'Prism Digital Solutions'。 (26) 对于以下每条线索记录 [{'company_name': 'Ironclad Analytics', 'contact_name': 'Owen Stafford', 'contact_email': 'owen.stafford@ironclad-analytics.com'}, {'company_name': 'Mosaic Data Labs', 'contact_name': 'Yuki Tanaka', 'contact_email': 'yuki.tanaka@mosaicdatalabs.io'}, {'company_name': 'Parallax Systems', 'contact_name': 'Renee Holloway', 'contact_email': 'renee.holloway@parallaxsystems.com'}, {'company_name': 'Cipher Tech Inc', 'contact_name': 'Andre Dubois', 'contact_email': 'andre.dubois@ciphertech.com'}],创建一家公司记录 company_name,并创建与之关联的人员 contact_name/contact_email。 (27) 对于每条线索记录,创建一个标题为 'Conference Lead — [company_name from the record]' 的商机,金额 14000,阶段 'Qualification',关闭日期 2027-02-28,并关联到该公司。 (28) 创建一个标题为 'Platinum Sponsor — Zenith Cloud Corp' 的商机,金额 11000,阶段 'Won',关闭日期 2026-10-18,并关联到公司 'Zenith Cloud Corp'。 (29) 创建一个标题为 'Gold Sponsor — Prism Digital Solutions' 的商机,金额 11000,阶段 'Proposal',关闭日期 2026-11-01,并关联到公司 'Prism Digital Solutions'。 (30) 对于以下每条线索记录 [{'company_name': 'Ironclad Analytics', 'contact_name': 'Owen Stafford', 'contact_email': 'owen.stafford@ironclad-analytics.com'}, {'company_name': 'Mosaic Data Labs', 'contact_name': 'Yuki Tanaka', 'contact_email': 'yuki.tanaka@mosaicdatalabs.io'}, {'company_name': 'Parallax Systems', 'contact_name': 'Renee Holloway', 'contact_email': 'renee.holloway@parallaxsystems.com'}, {'company_name': 'Cipher Tech Inc', 'contact_name': 'Andre Dubois', 'contact_email': 'andre.dubois@ciphertech.com'}],创建一个任务,标题为 'Post-conference follow-up — [company_name from the record]',关联到该公司,到期日为 2026-12-10,正文为:'Conference: AI Horizons 2026 on 2026-12-03. Lead captured at event. Initial opportunity: 14000 USD. Schedule discovery call within 5 business days.' (31) 创建一条标题为 'AI Horizons 2026 — Sponsorship & Lead Pipeline Summary' 的笔记,正文严格为:'Conference: AI Horizons 2026 — 2026-12-03 +Sponsors: +- Zenith Cloud Corp (Platinum): 11000 USD — PAID 2026-10-18, revenue deferred +- Prism Digital Solutions (Gold ×2): 11000 USD — PENDING due 2026-11-01 +Complimentary vouchers: PLAT-AIHORIZONS-001, GOLD-AIHORIZONS-001 (5 uses each) +Leads captured: 4 companies +Total lead pipeline: 56000 USD +Follow-up deadline: 2026-12-10' 在 Frappe HRMS 中:(32) 创建一个名为 'Booth Staff — AI Horizons 2026' 的 Job Opening,部门为 'Research & Development - TVS',职位为 'Secretary',开放职位数 4,描述为 'Temporary booth staff for AI Horizons 2026 on 2026-12-03. Responsibilities: badge scanning, lead capture, sponsor coordination.'。 (33) 打开 Job Opening 列表并验证 'Booth Staff — AI Horizons 2026' 存在,且有 4 个职位和状态 'Open'。 + +**步骤:** + +1. 在 Pretix 中,创建会议活动 'AI Horizons 2026'(slug 'ai-horizons-2026',组织者 'culinary-arts',日期 2026-12-03,货币 'USD')。创建三个分类('Sponsor Exhibits'、'Attendee Tickets'、'Workshop Sessions'),四个产品('Platinum Exhibit Booth' 价格 11000、'Gold Exhibit Booth' 价格 5500、'General Entry Ticket' 价格 329、'Workshop Session Pass' 价格 169),对应配额(大小分别为 4、7、550、130),两个自定义问题('Company Name' 用于 booth 产品,'Job Title' 用于 general ticket),恰好创建两个赞助优惠券(代码 'PLAT-AIHORIZONS-001' 和 'GOLD-AIHORIZONS-001',各 5 次使用,100% 折扣,关联到 'General Entry Ticket'),添加 early-bird 折扣规则 'Early Bird 18% Off'(18%),创建两个签到名单('AI Horizons Main Check-In' 面向所有产品,'Sponsor Exhibit Check-In' 面向 booth 产品),配置税规则 'Conference Tax Rule' 为 8% 且设为默认,并将活动设为公开。 +2. 在 BigCapital 中,设置账户 'AI Horizons Sponsorship Revenue'(Income)和 'Deferred AI Horizons Sponsorship'(Other Current Liability),创建客户 'Zenith Cloud Corp' 和 'Prism Digital Solutions',创建服务项目 'Platinum Exhibit Sponsorship Service' 和 'Gold Exhibit Sponsorship Service',为两位赞助方开具并交付日期为 2026-10-01、到期日为 2026-11-01 的发票,记录来自 'Saving Bank Account' 的 11000 付款(针对 'Zenith Cloud Corp',日期 2026-10-18),发布一条 2026-10-18 的递延分录,借记 'AI Horizons Sponsorship Revenue' 并贷记 'Deferred AI Horizons Sponsorship' 11000,并在 2026-11-01 作为截止日期验证 A/R Aging Summary。 +3. 在 Twenty CRM 中,创建赞助公司 'Zenith Cloud Corp'(域名 zenithcloud.com)和 'Prism Digital Solutions'(域名 prismdigital.com)及其各自联系人。然后遍历以下每条线索记录 [{'company_name': 'Ironclad Analytics', 'contact_name': 'Owen Stafford', 'contact_email': 'owen.stafford@ironclad-analytics.com'}, {'company_name': 'Mosaic Data Labs', 'contact_name': 'Yuki Tanaka', 'contact_email': 'yuki.tanaka@mosaicdatalabs.io'}, {'company_name': 'Parallax Systems', 'contact_name': 'Renee Holloway', 'contact_email': 'renee.holloway@parallaxsystems.com'}, {'company_name': 'Cipher Tech Inc', 'contact_name': 'Andre Dubois', 'contact_email': 'andre.dubois@ciphertech.com'}],创建线索公司与联系人。为赞助方创建 Won 和 Proposal 商机,为每个线索创建 Qualification 商机(金额 14000,关闭日期 2027-02-28),为每个线索创建跟进任务(到期 2026-12-10),并编写带有指定正文的管道摘要笔记。 +4. 在 Frappe HRMS 中,创建一条职位开口 'Booth Staff — AI Horizons 2026',部门为 'Research & Development - TVS',职位为 'Secretary',4 个开放职位,描述中包含 'Temporary booth staff for AI Horizons 2026 on 2026-12-03. Responsibilities: badge scanning, lead capture, sponsor coordination.'。然后验证其在 Job Opening 列表中显示为 'Open',且职位数为 4。 + +**登录凭证:** + +- pretix: admin@localhost / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: tim@apple.dev / tim@apple.dev +- frappe-hrms: Administrator / admin + diff --git a/tasks/uni-m/Business/business_110/description_zh.md b/tasks/uni-m/Business/business_110/description_zh.md new file mode 100644 index 0000000..413ce2f --- /dev/null +++ b/tasks/uni-m/Business/business_110/description_zh.md @@ -0,0 +1,37 @@ +**任务要求:** + +执行一个新员工入职工作流,涵盖 Frappe HRMS 中的 HR 员工创建与请假配置、BigCapital 中的薪资费用科目设置和循环应计分录,以及 Twenty CRM 中的入职任务协调。 + +在 Frappe HRMS 中:(1) 创建一个名为 'Machine Learning' 的新部门,父部门为 'All Departments'。将该部门的请假审批人设为 'pooja.malhotra@techvista.com',费用审批人设为 'rajesh.kumar@techvista.com'。 (2) 创建一个名为 'Machine Learning Engineer' 的新职位。 (3) 为 'Divya Krishnamurthy' 创建一条新员工记录,员工 ID 为 'HR-EMP-00020',出生日期为 '1995-11-14',性别为 'Female',入职日期为 '2026-09-01',部门为 'Machine Learning',职位为 'Machine Learning Engineer',雇佣类型为 'Full-time'。将汇报对象(reports to)设为 'HR-EMP-00001'。添加紧急联系人,姓名为 'Ramesh Krishnamurthy',电话为 '+91-9922334455'。 (4) 创建一个名为 'ML Engineering Team 2026' 的 Holiday List,期间为 2026-01-01 到 2026-12-31。以独立行的形式恰好添加 4 个假日。对于列表 [{"holiday_name": "Republic Day", "holiday_date": "2026-01-26"}, {"holiday_name": "Eid al-Fitr", "holiday_date": "2026-03-31"}, {"holiday_name": "Independence Day", "holiday_date": "2026-08-15"}, {"holiday_name": "Diwali", "holiday_date": "2026-11-08"}] 中的每个条目,使用指定的 holiday_name 和 holiday_date 创建一条假日记录。 (5) 创建一个名为 'Innovation Leave' 的 Leave Type,将每年允许的最大天数设为 7,设为带薪假期,并启用假期结转。 (6) 创建一个名为 'ML Engineering Leave Policy 2026' 的 Leave Policy,其中包含 Leave Type 'Innovation Leave',年度配额为 7 天,以及 Leave Type 'Sick Leave',年度配额为 7 天。 (7) 创建一个名为 'ML Engineering Leave Period 2026' 的 Leave Period,起止时间为 2026-01-01 到 2026-12-31,并关联公司 'TechVista Solutions Pvt. Ltd.'。 (8) 为员工 'Divya Krishnamurthy' (HR-EMP-00020) 创建一条 Leave Policy Assignment,Leave Policy 为 'ML Engineering Leave Policy 2026',生效日期为 2026-09-01,Leave Period 为 'ML Engineering Leave Period 2026'。提交该分配以自动创建假期分配。 (9) 打开按员工 'Divya Krishnamurthy' 筛选的 Employee Leave Balance 报告。验证 Leave Type 'Innovation Leave' 显示 7 天,'Sick Leave' 显示 7 天。 (10) 创建一个名为 'ML Research Allowance' 的 Salary Component,类型为 'Earning',描述为 'Monthly allowance for ML research tools, GPU compute credits, and dataset subscriptions'。 (11) 创建一个名为 'ML Engineer Monthly Structure' 的 Salary Structure,薪资周期为 'Monthly',包含收益项:'Basic',公式为 'base * 0.57',以及 'ML Research Allowance',金额为 9000。关联到公司 'TechVista Solutions Pvt. Ltd.'。 (12) 为员工 'Divya Krishnamurthy' (HR-EMP-00020) 创建一条 Salary Structure Assignment,Salary Structure 为 'ML Engineer Monthly Structure',基础工资为 95000,起始日期为 2026-09-01。提交该分配。 (13) 为 'Divya Krishnamurthy' 创建一条 Employee Onboarding 记录,且恰好包含 4 个活动。对于列表 [{"activity_name": "Setup ML platform and GPU cluster access", "assigned_to": "rajesh.kumar@techvista.com"}, {"activity_name": "HR documentation and benefits enrollment", "assigned_to": "pooja.malhotra@techvista.com"}, {"activity_name": "ML tools installation and environment configuration", "assigned_to": "priya.sharma@techvista.com"}, {"activity_name": "Team introduction and research project onboarding", "assigned_to": "rajesh.kumar@techvista.com"}] 中的每个条目,使用指定的 activity_name 和 assigned_to 创建一条活动记录。 + +在 BigCapital 中:(14) 创建一个名为 'ML Engineer Salary Expense' 的账户,类型为 'Expense',父账户为 'Utilities Expense'。 (15) 创建一个名为 'ML Engineer Salary Payable' 的账户,类型为 'Other Current Liability',父账户为 'Accrued Expenses'。 (16) 创建并发布一条日期为 2026-09-30 的手工日记账分录:借记 'ML Engineer Salary Expense' 95000,贷记 'ML Engineer Salary Payable' 95000,备注明为 'Monthly salary accrual - Divya Krishnamurthy - Machine Learning - Machine Learning Engineer - month 1 of employment'。 (17) 创建并发布第二条日期为 2026-10-31 的手工日记账分录:借记 'ML Engineer Salary Expense' 95000,贷记 'ML Engineer Salary Payable' 95000,备注明为 'Monthly salary accrual - Divya Krishnamurthy - Machine Learning - Machine Learning Engineer - month 2 of employment'。 (18) 打开 General Ledger 报告,筛选账户 'ML Engineer Salary Expense',日期范围 2026-09-30 到 2026-10-31。验证出现两条各为 95000 的借方分录,总计为两倍 95000。 (19) 打开 Trial Balance Sheet,日期范围 2026-09-30 到 2026-10-31。验证 'ML Engineer Salary Expense' 显示等于两倍 95000 的借方余额,且 'ML Engineer Salary Payable' 显示等于两倍 95000 的贷方余额。 + +在 Twenty CRM 中:(20) 创建一个标题为 'IT equipment provisioning - Divya Krishnamurthy' 的任务,到期日为 2026-08-28,正文为:'New hire: Divya Krishnamurthy joining 2026-09-01 as Machine Learning Engineer in Machine Learning. Provision laptop, email account, and software licenses.' (21) 创建一个标题为 'Schedule orientation meeting - Divya Krishnamurthy' 的任务,到期日为 2026-09-05,正文为:'Arrange orientation for Divya Krishnamurthy with reporting manager HR-EMP-00001. Department: Machine Learning. Cover: company policies, leave policy (ML Engineering Leave Policy 2026), holiday calendar (ML Engineering Team 2026), and salary structure (ML Engineer Monthly Structure).' (22) 创建一个标题为 'Verify payroll setup - Divya Krishnamurthy' 的任务,到期日为 2026-09-15,正文为:'Confirm salary structure ML Engineer Monthly Structure assigned with base pay 95000 INR. Monthly accrual of 95000 INR posted for months 1 and 2. Accounts: expense ML Engineer Salary Expense, payable ML Engineer Salary Payable.' (23) 创建一个标题为 'Onboarding Summary - Divya Krishnamurthy - 2026-09-01' 的笔记,正文为:'Employee: Divya Krishnamurthy (HR-EMP-00020) +Department: Machine Learning +Designation: Machine Learning Engineer +Employment type: Full-time +Date of joining: 2026-09-01 +Reporting to: HR-EMP-00001 +Leave policy: ML Engineering Leave Policy 2026 - Innovation Leave (7 days), Sick Leave (7 days) +Holiday list: ML Engineering Team 2026 (4 holidays) +Salary structure: ML Engineer Monthly Structure - base 95000 INR +Monthly accrual: 95000 INR +Accounts: ML Engineer Salary Expense (expense), ML Engineer Salary Payable (payable) +Onboarding activities: 4 tasks assigned' + +**步骤:** + +1. 在 Frappe HRMS 中,创建一个名为 'Machine Learning' 的新部门,父部门为 'All Departments',并将请假审批人设为 'pooja.malhotra@techvista.com'、费用审批人设为 'rajesh.kumar@techvista.com'。创建一个名为 'Machine Learning Engineer' 的新职位。 +2. 创建员工记录 'Divya Krishnamurthy',员工 ID 为 'HR-EMP-00020',出生日期 '1995-11-14',性别 'Female',入职日期 '2026-09-01',部门 'Machine Learning',职位 'Machine Learning Engineer',雇佣类型 'Full-time',汇报对象 'HR-EMP-00001',以及紧急联系人 'Ramesh Krishnamurthy' / '+91-9922334455'。 +3. 创建 Holiday List 'ML Engineering Team 2026'(2026-01-01 到 2026-12-31),包含 4 行假日,每条对应 [{"holiday_name": "Republic Day", "holiday_date": "2026-01-26"}, {"holiday_name": "Eid al-Fitr", "holiday_date": "2026-03-31"}, {"holiday_name": "Independence Day", "holiday_date": "2026-08-15"}, {"holiday_name": "Diwali", "holiday_date": "2026-11-08"}] 中的一个条目,使用每个条目的 holiday_name 和 holiday_date。创建 Leave Type 'Innovation Leave'(最大 7 天、带薪、可结转)。创建 Leave Policy 'ML Engineering Leave Policy 2026',其中包含 'Innovation Leave'(7 天)和 'Sick Leave'(7 天)。创建 Leave Period 'ML Engineering Leave Period 2026'(2026-01-01 到 2026-12-31,公司 'TechVista Solutions Pvt. Ltd.')。将该政策分配给员工并提交。验证 Employee Leave Balance 显示正确配额。 +4. 创建 Salary Component 'ML Research Allowance'(Earning,描述 'Monthly allowance for ML research tools, GPU compute credits, and dataset subscriptions')。创建 Salary Structure 'ML Engineer Monthly Structure'(Monthly,Basic 公式 'base * 0.57','ML Research Allowance' 金额 9000,公司 'TechVista Solutions Pvt. Ltd.')。为员工分配该结构,基础工资 95000,自 2026-09-01 起,并提交。 +5. 为 'Divya Krishnamurthy' 创建一条 Employee Onboarding 记录,且恰好包含 4 条活动行,每条对应 [{"activity_name": "Setup ML platform and GPU cluster access", "assigned_to": "rajesh.kumar@techvista.com"}, {"activity_name": "HR documentation and benefits enrollment", "assigned_to": "pooja.malhotra@techvista.com"}, {"activity_name": "ML tools installation and environment configuration", "assigned_to": "priya.sharma@techvista.com"}, {"activity_name": "Team introduction and research project onboarding", "assigned_to": "rajesh.kumar@techvista.com"}] 中的一个条目,使用每个条目的 activity_name 和 assigned_to。 +6. 在 BigCapital 中,创建账户 'ML Engineer Salary Expense'(Expense,归属 'Utilities Expense')和 'ML Engineer Salary Payable'(Other Current Liability,归属 'Accrued Expenses')。发布两条手工日记账分录:第一条在 2026-09-30,第二条在 2026-10-31,每条都借记 'ML Engineer Salary Expense' 并贷记 'ML Engineer Salary Payable' 95000。验证 General Ledger 和 Trial Balance 报表。 +7. 在 Twenty CRM 中,创建三个任务:'IT equipment provisioning - Divya Krishnamurthy'(到期 2026-08-28)、'Schedule orientation meeting - Divya Krishnamurthy'(到期 2026-09-05)、'Verify payroll setup - Divya Krishnamurthy'(到期 2026-09-15)。创建笔记 'Onboarding Summary - Divya Krishnamurthy - 2026-09-01',包含完整入职细节。 + +**登录凭证:** + +- frappe-hrms: Administrator / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: phil.schiler@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_121/description_zh.md b/tasks/uni-m/Business/business_121/description_zh.md new file mode 100644 index 0000000..db10069 --- /dev/null +++ b/tasks/uni-m/Business/business_121/description_zh.md @@ -0,0 +1,61 @@ +**任务要求:** + +执行一条覆盖 CRM 管道分析、BigCapital 财务报表与应收账款龄期跟踪、Frappe HRMS 考勤与费用验证,以及 Pretix 活动票务表现复盘的季度末运营审查。审查范围为 2026-07-01 到 2026-09-30。 + +在 BigCapital 中(先完成这些步骤以推导逾期客户名称):(6) 打开 Profit and Loss Sheet,筛选日期范围 2026-07-01 到 2026-09-30,记账基础为 'Accrual'。将报告导出为 PDF。将总收入记录为 PL_REVENUE,总费用记录为 PL_EXPENSES,净利润记录为 PL_NET_INCOME。 (7) 打开 Balance Sheet,筛选截至日期 2026-09-30,记账基础为 'Accrual'。将报告导出为 PDF。将总资产记录为 BS_ASSETS,总负债记录为 BS_LIABILITIES,总权益记录为 BS_EQUITY。 (8) 打开 A/R Aging Summary,筛选截至日期 2026-09-30。将报告导出为 PDF。将总应收账款记录为 AR_TOTAL。识别在 61-90 天或 90+ 天账龄区间中余额非零的每一个唯一客户名称。将这些名称按其在报告中的原样记录下来——该推导出的列表在后续步骤中称为 OVERDUE_CLIENTS。 (9) 打开 A/P Aging Summary,筛选截至日期 2026-09-30。将报告导出为 PDF。将总应付账款记录为 AP_TOTAL。 (10) 打开 Cash Flow Statement,筛选日期范围 2026-07-01 到 2026-09-30。将报告导出为 PDF。将经营活动净现金流记录为 CASH_OPS。 (11) 打开 Sales by Items,筛选日期范围 2026-07-01 到 2026-09-30。将报告导出为 PDF。将按收入计算的畅销项目记录为 TOP_ITEM,并将其总额记录为 TOP_ITEM_REVENUE。 + +在 Twenty CRM 中:(1) 打开 Opportunities 列表。使用筛选栏添加条件 Stage = 'Won' 且 Close Date 在 2026-07-01 到 2026-09-30 之间(如果没有精确的日期范围筛选,则先按 Stage = 'Won' 筛选,再手动识别关闭日期落在该季度内的商机)。按金额降序排序。记录 Won 成交的总数量及其总收入——分别称为 WON_COUNT 和 WON_REVENUE。 (2) 使用筛选栏添加条件 Stage = 'Lost' 且 Close Date 在 2026-07-01 到 2026-09-30 之间(采用与步骤 1 相同的筛选方式)。将数量记录为 LOST_COUNT。 (3) 按阶段 'SCREENING'(开放管道)筛选商机。按金额降序排序。记录总数量和总金额,分别为 OPEN_COUNT 和 OPEN_PIPELINE。 (4) 对于从 BigCapital A/R Aging Summary 推导出的 OVERDUE_CLIENTS 列表中的每一个唯一客户名称,在 Twenty Companies 列表中搜索匹配公司。如果找到精确匹配,则打开公司详情页并创建一个关联到该公司的任务,标题为 'Follow up on overdue receivable -- [client name]',到期日为 2026-10-15,正文为:'Overdue balance identified in Q3 aged receivables review. Contact accounts payable to arrange payment. Review deadline: 2026-10-15.' 如果在 Twenty 中找不到精确匹配的公司,则创建一个不关联任何公司记录的独立任务,使用相同的标题、到期日和正文,并将客户名称替换为其在 BigCapital A/R Aging Summary 报告中出现的原始名称。 (5) 按公式 WON_COUNT / (WON_COUNT + LOST_COUNT) * 100 计算胜率,并四舍五入到小数点后一位。如果 WON_COUNT + LOST_COUNT 等于 0,则将胜率记为 'N/A'。创建一个标题为 'Q3 Pipeline Summary -- 2026-09-30' 的笔记,正文为:'Won deals: WON_COUNT, total revenue: WON_REVENUE USD +Lost deals: LOST_COUNT +Open pipeline (SCREENING): OPEN_COUNT deals, OPEN_PIPELINE USD +Win rate: [computed value]% +Overdue clients flagged: [comma-separated OVERDUE_CLIENTS list] +Follow-up tasks created with due date 2026-10-15' + +在 Frappe HRMS 中:(12) 打开 2026 年 9 月的 Monthly Attendance Sheet 报告。如果可用,请将公司筛选设置为 'TechVista Solutions Pvt. Ltd.';否则使用默认视图。如果报告分页,请遍历所有页面。将列出的员工总数记录为 ATTENDANCE_HEADCOUNT。通过检查每个员工行中的 Absent 列总数,识别缺勤超过 5 天的员工。将这些姓名记录为 HIGH_ABSENCE_EMPLOYEES。如果没有员工超过该阈值,则将 HIGH_ABSENCE_EMPLOYEES 记为 'None'。 (13) 打开 Unpaid Expense Claim 报告。如果报告分页,请遍历所有页面。通过对报告中所有行的 amount 列求和,记录未支付报销的总数量为 UNPAID_CLAIMS_COUNT,未支付总金额为 UNPAID_CLAIMS_TOTAL。 (14) 打开 Employee Leave Balance Summary 报告。如果有请假类型筛选,请将其设为 'Sick Leave'。如果没有请假类型筛选,则扫描报告输出中与 'Sick Leave' 对应的行或列。如果 'Sick Leave' 出现在报告输出中(无论是作为筛选结果还是作为行/列标签),则将该请假类型在所有列出的员工中的总未结余假期记录为 LEAVE_LIABILITY_DAYS。如果 'Sick Leave' 完全未出现在报告输出中,则将 LEAVE_LIABILITY_DAYS 记为 'Not available'。 (15) 打开 Employee Advance Summary 报告。如果报告分页,请遍历所有页面。统计状态为 'Unpaid' 的预支,或显示未结清余额的预支。将数量记录为 OPEN_ADVANCES_COUNT,并通过对相关金额列求和记录未结清总额为 OPEN_ADVANCES_TOTAL。 + +在 Pretix 中:(16) 打开组织者 'broadway-group' 下活动 'Hamilton' 的 Event Dashboard。将仪表板组件中的总订单数记录为 EVENT_ORDERS,总收入记录为 EVENT_REVENUE。 (17) 打开 'Hamilton' 的 Event Orders Overview 页面。使用订单列表及其产品/项目拆分列,确定可归因于产品 'Balcony' 的收入为 PROD1_REVENUE,以及可归因于产品 'Playbill Program' 的收入为 PROD2_REVENUE。还要使用订单状态筛选或状态列,按状态统计订单:已付款订单为 PAID_ORDERS,待处理订单为 PENDING_ORDERS,已取消订单为 CANCELLED_ORDERS。 + +在 Twenty CRM 中:(18) 创建一个标题为 'Q3 Operations Review -- Complete -- 2026-09-30' 的笔记,正文为: +'FINANCIAL SUMMARY (Accrual basis): +- P&L: Revenue PL_REVENUE, Expenses PL_EXPENSES, Net Income PL_NET_INCOME +- Balance Sheet: Assets BS_ASSETS, Liabilities BS_LIABILITIES, Equity BS_EQUITY +- Cash Flow from Ops: CASH_OPS +- A/R Outstanding: AR_TOTAL (overdue clients: [comma-separated OVERDUE_CLIENTS list]) +- A/P Outstanding: AP_TOTAL +- Top item by sales: TOP_ITEM at TOP_ITEM_REVENUE + +CRM PIPELINE: +- Won: WON_COUNT deals, WON_REVENUE USD +- Lost: LOST_COUNT deals +- Open (SCREENING): OPEN_COUNT deals, OPEN_PIPELINE USD +- Win rate: [computed value]% + +HR METRICS: +- Headcount (September 2026): ATTENDANCE_HEADCOUNT +- High absence (>5 days): HIGH_ABSENCE_EMPLOYEES +- Unpaid expense claims: UNPAID_CLAIMS_COUNT totaling UNPAID_CLAIMS_TOTAL USD +- Leave liability (Sick Leave): LEAVE_LIABILITY_DAYS days +- Open advances: OPEN_ADVANCES_COUNT totaling OPEN_ADVANCES_TOTAL USD + +EVENT PERFORMANCE (Hamilton): +- Total orders: EVENT_ORDERS, revenue: EVENT_REVENUE USD +- Balcony: PROD1_REVENUE USD +- Playbill Program: PROD2_REVENUE USD +- Paid: PAID_ORDERS, Pending: PENDING_ORDERS, Cancelled: CANCELLED_ORDERS' +(19) 创建一个标题为 'Present Q3 operations review to leadership' 的任务,到期日为 2026-10-22,正文为:'All financial statements exported as PDF. CRM pipeline, HR metrics, and event performance compiled. Overdue collection tasks assigned. Review note: Q3 Operations Review -- Complete -- 2026-09-30.' + +**步骤:** + +1. 在 BigCapital 中,生成并导出为 PDF:Profit and Loss Sheet、Balance Sheet、A/R Aging Summary、A/P Aging Summary、Cash Flow Statement 和 Sales by Items 报告,全部筛选到季度日期范围 2026-07-01 到 2026-09-30,且记账基础为 Accrual。记录每份报告的关键数字。从 A/R Aging Summary 中推导出唯一的逾期客户名称列表(在 61-90 天或 90+ 天账龄区间中余额非零的客户)——该 OVERDUE_CLIENTS 列表将在后续 Twenty CRM 步骤中使用。 +2. 在 Twenty CRM 中,使用筛选栏分别添加 Stage = 'Won' 且 Close Date 在 2026-07-01 到 2026-09-30 之间的条件,然后按相同日期范围筛选 'Lost',再筛选开放阶段 'SCREENING',记录每种情况的数量和总额。对于从 BigCapital 推导出的 OVERDUE_CLIENTS 列表中的每一个唯一客户名称,在 Twenty 中搜索匹配公司;如果找到精确匹配,则创建一个关联任务,否则创建一个不关联的任务,且客户名称必须与 A/R Aging 报告中显示的完全一致。创建一个标题为 'Q3 Pipeline Summary -- 2026-09-30' 的管道摘要笔记,胜率保留一位小数(如果没有 Won+Lost 交易则为 'N/A'),并包含推导出的逾期客户名称。 +3. 在 Frappe HRMS 中,查看 2026 年 9 月的 Monthly Attendance Sheet(如果可用则应用公司筛选 'TechVista Solutions Pvt. Ltd.'),如果分页则遍历所有页面。查看 Unpaid Expense Claim 报告(遍历所有页面并对 amount 列求和)。查看 Employee Leave Balance Summary(如果可用则应用请假类型筛选 'Sick Leave',否则扫描报告输出中是否包含 'Sick Leave';如果该请假类型未出现则记录为 'Not available')。查看 Employee Advance Summary(遍历所有页面,统计并汇总未支付/未结清预支)。记录出勤人数、高缺勤员工、未支付报销、请假负债以及开放预支。 +4. 在 Pretix 中,查看组织者 'broadway-group' 下 'Hamilton' 的 Event Dashboard,记录总订单数和收入,然后查看 Event Orders Overview,基于产品/项目列统计 'Balcony' 和 'Playbill Program' 的收入,并基于状态筛选或状态列统计订单状态(paid、pending、cancelled)。 +5. 在 Twenty CRM 中,创建一条名为 'Q3 Operations Review -- Complete -- 2026-09-30' 的综合运营审查笔记,汇总四个应用中的所有数据,并将胜率保留一位小数(或 'N/A'),包括推导出的逾期客户名称;同时创建一个标题为 'Present Q3 operations review to leadership' 的演示任务,到期日为 2026-10-22,正文引用已完成的审查笔记。 + +**登录凭证:** + +- twenty: tim@apple.dev / tim@apple.dev +- bigcapital: admin@bigcapital.local / admin123 +- frappe-hrms: Administrator / admin +- pretix: admin@localhost / admin + diff --git a/tasks/uni-m/Business/business_135/description_zh.md b/tasks/uni-m/Business/business_135/description_zh.md new file mode 100644 index 0000000..6498841 --- /dev/null +++ b/tasks/uni-m/Business/business_135/description_zh.md @@ -0,0 +1,42 @@ +**任务要求:** + +执行一条活动容量管理工作流,涵盖配额共享、基于优惠券的 VIP 优先级,以及横跨 Pretix 活动设置、客户账户管理和 Twenty CRM 记录/任务创建的 CRM 驱动跟进协调。 + +在 Pretix 中:(1) 创建一个新的活动 'Brooklyn Jazz Symposium 2026',slug 为 'bklyn-jazz-symposium-2026',归属于组织者 'urban-music',开始日期为 2026-10-18,货币为 'USD'。 (2) 创建两个分类:'General Admission' 和 'Experience Add-ons'。 (3) 在 'General Admission' 分类下创建产品 'General Admission Pass',价格为 85。 (4) 在 'General Admission' 分类下创建产品 'VIP Backstage Pass',价格为 220。 (5) 在 'Experience Add-ons' 分类下创建产品 'Jam Session Workshop',价格为 60。 (6) 创建一个共享配额 'Main Venue Capacity',大小为 350,并同时关联到 'General Admission Pass' 和 'VIP Backstage Pass'。这意味着标准票和高级票的总售出量不能超过 350。 (7) 创建一个单独的配额 'Jam Session Quota',大小为 50,并关联到 'Jam Session Workshop'。 (8) 创建一个类型为 'Text (one line)' 的自定义问题,文本为 'Company Affiliation',并将其设为 'General Admission Pass' 和 'VIP Backstage Pass' 的必填项。 (9) 创建第二个自定义问题,类型为 'Choice (single)',文本为 'Dietary Preference',选项为 'Vegetarian'、'Gluten-Free'、'No Preference',并将其设为 'VIP Backstage Pass' 的必填项。 (10) 创建一个代码为 'VIPJAZZ2026' 的优惠券,提供 30% 折扣,最大使用次数 8 次,有效期至 2026-10-18,关联到 'VIP Backstage Pass' 和 'Jam Session Workshop'。 (11) 创建第二个优惠券代码 'GROUPJAZZ40',提供 40 USD 的固定折扣,最大使用次数 25 次,有效期至 2026-09-30,关联到 'General Admission Pass'。 (12) 创建名为 'Jazz Early Bird' 的折扣规则,并将 20% 折扣应用于 'General Admission Pass'。 (13) 创建名为 'Main Venue Check-In' 的签到名单,关联到 'General Admission Pass' 和 'VIP Backstage Pass'。 (14) 创建第二个签到名单 'Jam Session Check-In',仅关联到 'Jam Session Workshop'。 (15) 打开 Event Display Settings。上传文件 '/tmp/jazz_event_logo.png' 作为活动 logo,并将主色设置为 '#7C3AED'。将自定义首页文案设置为 'Welcome to the Brooklyn Jazz Symposium 2026 — an unforgettable evening of world-class jazz performances and immersive workshops.'。 (16) 打开 Event Invoice Settings。启用自动生成发票。将发票号前缀设置为 'BJS2026-'。 (17) 将活动设为公开。 (18) 打开 Event Dashboard。验证活动处于公开状态。生成活动二维码,并确认仪表板显示 'Download QR code as PNG' 选项,或者 PNG 文件已成功下载。 + +在 Pretix(客户管理)中:(19) 打开组织者 'urban-music' 的 Organizer Customers 页面。创建一个名为 'Helena Vasquez'、邮箱为 'helena.vasquez@jazzpremier.com' 的新客户账户。 (20) 创建第二个客户账户,名称为 'Dominic Ferrara',邮箱为 'dominic.ferrara@soundwavecorp.com'。 (21) 打开 Organizer Membership Types 页面。创建一个名为 'Urban Music VIP Patron' 的会员类型。 (22) 打开 'Helena Vasquez' 的客户详情页。添加一个类型为 'Urban Music VIP Patron' 的会员,开始日期为 2026-03-01,结束日期为 2027-02-28。 + +在 Twenty CRM 中:(23) 创建公司 'Jazz Premier Group',域名为 'jazzpremier.com'。 (24) 创建人员 'Helena Vasquez',邮箱为 'helena.vasquez@jazzpremier.com',职位为 'Director of Cultural Programming',并关联到公司 'Jazz Premier Group'。 (25) 创建公司 'Soundwave Corporation',域名为 'soundwavecorp.com'。 (26) 创建人员 'Dominic Ferrara',邮箱为 'dominic.ferrara@soundwavecorp.com',职位为 'Head of Artist Relations',并关联到公司 'Soundwave Corporation'。 (27) 对列表 [{'name': 'Rhythm House Productions', 'domain': 'rhythmhouseprod.com', 'contact_name': 'Amara Diallo', 'contact_email': 'amara.diallo@rhythmhouseprod.com'}, {'name': 'Blue Note Ventures', 'domain': 'bluenoteven.com', 'contact_name': 'Stefan Kowalczyk', 'contact_email': 'stefan.kowalczyk@bluenoteven.com'}](恰好 2 条)中的每个条目,使用该条目的 'name' 和 'domain' 字段创建一条公司记录。然后使用该条目的 'contact_name' 和 'contact_email' 字段创建一个人员,并关联到该公司。 (28) 对 waitlist companies 中的每个条目,创建一个关联到该公司的任务,标题为 'Notify when capacity opens - Brooklyn Jazz Symposium 2026 - [company name]'(其中 [company name] 替换为条目的 'name'),到期日为 2026-09-15,正文为:'Contact is on the waiting list for Brooklyn Jazz Symposium 2026 (2026-10-18). Venue capacity: 350. Monitor quota availability. Voucher for group booking: GROUPJAZZ40 (40 USD off, max 25 uses). Send registration link when spots become available.' (29) 创建一个标题为 'Send VIP invitations - Brooklyn Jazz Symposium 2026' 的任务,到期日为 2026-08-20,正文为:'Send exclusive invitations to VIP contacts: +- Helena Vasquez (helena.vasquez@jazzpremier.com) at Jazz Premier Group - voucher: VIPJAZZ2026 (30% off premium + workshop) +- Dominic Ferrara (dominic.ferrara@soundwavecorp.com) at Soundwave Corporation - voucher: VIPJAZZ2026 +Membership: Helena Vasquez has Urban Music VIP Patron membership active until 2027-02-28.' (30) 创建一条标题为 'Brooklyn Jazz Symposium 2026 - Capacity & Pricing Summary' 的笔记,正文为:'Event: Brooklyn Jazz Symposium 2026 - 2026-10-18 +Venue capacity: 350 (shared between General Admission Pass and VIP Backstage Pass) +Workshop capacity: 50 + +Pricing: +- General Admission Pass: 85 USD (early-bird 20% off) +- VIP Backstage Pass: 220 USD +- Jam Session Workshop: 60 USD + +Vouchers: +- VIP: VIPJAZZ2026 - 30% off premium+workshop, max 8 uses +- Group: GROUPJAZZ40 - 40 USD off standard, max 25 uses + +VIP customers: Helena Vasquez (Urban Music VIP Patron member), Dominic Ferrara +Waitlisted companies: 2 +Invoice prefix: BJS2026-' + +**步骤:** + +1. 在 Pretix 中创建活动 'Brooklyn Jazz Symposium 2026'(slug 'bklyn-jazz-symposium-2026',组织者 'urban-music',日期 2026-10-18,货币 'USD')。创建分类 'General Admission' 和 'Experience Add-ons'。创建产品:'General Admission Pass',价格 85,属于 'General Admission';'VIP Backstage Pass',价格 220,属于 'General Admission';'Jam Session Workshop',价格 60,属于 'Experience Add-ons'。创建共享配额 'Main Venue Capacity'(大小 350),关联标准票和高级票。创建配额 'Jam Session Quota'(大小 50),关联 workshop 附加项。 +2. 在 Pretix 中创建自定义问题 'Company Affiliation'(Text, one line),作为标准票和高级票的必填项。创建自定义问题 'Dietary Preference'(Choice, single),选项为 'Vegetarian'、'Gluten-Free'、'No Preference',仅作为高级票必填项。创建优惠券 'VIPJAZZ2026'(30% off,最多 8 次,有效期至 2026-10-18),关联高级票和 workshop。创建优惠券 'GROUPJAZZ40'(40 USD 固定折扣,最多 25 次,有效期至 2026-09-30),关联标准票。创建折扣规则 'Jazz Early Bird'(20% off),应用于标准票。 +3. 在 Pretix 中创建签到名单 'Main Venue Check-In',关联标准票和高级票。创建签到名单 'Jam Session Check-In',仅关联 workshop 附加项。在 Event Display Settings 中,上传 logo 文件 '/tmp/jazz_event_logo.png',将主色设为 '#7C3AED',并将首页文案设为 'Welcome to the Brooklyn Jazz Symposium 2026 — an unforgettable evening of world-class jazz performances and immersive workshops.'。在 Invoice Settings 中,启用自动发票生成并将前缀设为 'BJS2026-'。将活动设为公开。在 Dashboard 上验证公开状态,并确认二维码 PNG 生成可用(仪表板显示 'Download QR code as PNG' 或 PNG 成功下载)。 +4. 在 Pretix Organizer Customers 中,创建客户 'Helena Vasquez'(helena.vasquez@jazzpremier.com)和客户 'Dominic Ferrara'(dominic.ferrara@soundwavecorp.com)。在 Organizer Membership Types 中,创建类型 'Urban Music VIP Patron'。在 'Helena Vasquez' 的详情页上,将 'Urban Music VIP Patron' 会员从 2026-03-01 添加到 2027-02-28。 +5. 在 Twenty CRM 中,创建公司 'Jazz Premier Group'(域名 'jazzpremier.com')。创建人员 'Helena Vasquez'(邮箱 'helena.vasquez@jazzpremier.com',职位 'Director of Cultural Programming')并关联到 'Jazz Premier Group'。创建公司 'Soundwave Corporation'(域名 'soundwavecorp.com')。创建人员 'Dominic Ferrara'(邮箱 'dominic.ferrara@soundwavecorp.com',职位 'Head of Artist Relations')并关联到 'Soundwave Corporation'。对于 waitlist 中的 2 条记录中的每一条,创建一家公司(name, domain)和一个人员(contact_name, contact_email)并关联到该公司:'Rhythm House Productions'(rhythmhouseprod.com,联系人 Amara Diallo,amara.diallo@rhythmhouseprod.com)以及 'Blue Note Ventures'(bluenoteven.com,联系人 Stefan Kowalczyk,stefan.kowalczyk@bluenoteven.com)。 +6. 在 Twenty CRM 中,对 waitlist companies 中的每个条目,创建一个关联到相应公司的任务,标题为 'Notify when capacity opens - Brooklyn Jazz Symposium 2026 - [company name]',到期日 2026-09-15,正文包含:'Contact is on the waiting list for Brooklyn Jazz Symposium 2026 (2026-10-18). Venue capacity: 350. Monitor quota availability. Voucher for group booking: GROUPJAZZ40 (40 USD off, max 25 uses). Send registration link when spots become available.' 创建任务 'Send VIP invitations - Brooklyn Jazz Symposium 2026',到期日 2026-08-20,正文列出两个 VIP 联系人及其邮箱、公司、优惠券代码 'VIPJAZZ2026'(30% off),以及关于 'Helena Vasquez'(Urban Music VIP Patron 有效期至 2027-02-28)的会员说明。创建一条标题为 'Brooklyn Jazz Symposium 2026 - Capacity & Pricing Summary' 的笔记,正文包含:活动名 'Brooklyn Jazz Symposium 2026' 和日期 '2026-10-18',场馆容量 350(由 'General Admission Pass' 和 'VIP Backstage Pass' 共享),workshop 容量 50,所有三种产品的价格及货币 'USD',early-bird 20% 说明,VIP 优惠券 'VIPJAZZ2026' 详情(30%,最多 8 次),group 优惠券 'GROUPJAZZ40' 详情(40 USD,最多 25 次),VIP 客户姓名 'Helena Vasquez'(Urban Music VIP Patron member)和 'Dominic Ferrara',waitlisted company 数量 '2',以及发票前缀 'BJS2026-'。 + +**登录凭证:** + +- pretix: admin@localhost / admin +- twenty: jony.ive@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_143/description_zh.md b/tasks/uni-m/Business/business_143/description_zh.md new file mode 100644 index 0000000..94686d3 --- /dev/null +++ b/tasks/uni-m/Business/business_143/description_zh.md @@ -0,0 +1,37 @@ +**任务要求:** + +执行一条端到端绩效评估周期,涵盖 Frappe HRMS 中的目标设定、考核评分与奖金处理,BigCapital 中的奖金应计会计,以及 Twenty 中的 CRM 文档。 + +在 Frappe HRMS 中:(1) 创建一个名为 'Technical Delivery Excellence' 的 KRA。创建第二个名为 'Customer Satisfaction & Retention' 的 KRA。 (2) 创建一个名为 'Engineering Performance Template 2025' 的 Appraisal Template,包含两个 KRA:'Technical Delivery Excellence' 权重 60%,'Customer Satisfaction & Retention' 权重 40%。 (3) 为员工 'Vikram Singh' (HR-EMP-00005) 创建一个目标,标题为 'Reduce sprint defect rate by 30%',关联到 KRA 'Technical Delivery Excellence',目标为 '30% reduction in defects per sprint'。再创建第二个目标,标题为 'Improve client NPS score',关联到 KRA 'Customer Satisfaction & Retention',目标为 'NPS score >= 75'。 (4) 为员工 'Ananya Reddy' (HR-EMP-00007) 创建一个目标,标题为 'Deliver all project milestones on time',关联到 KRA 'Technical Delivery Excellence',目标为 '100% on-time milestone delivery'。再创建第二个目标,标题为 'Achieve zero escalations',关联到 KRA 'Customer Satisfaction & Retention',目标为 'Zero client escalations in H2 2025'。 (5) 创建一个名为 'H2 2025 Engineering Performance Review' 的 Appraisal Cycle,开始日期为 2025-07-01,结束日期为 2025-12-31,使用 appraisal template 'Engineering Performance Template 2025'。 (6) 为 'Vikram Singh' (HR-EMP-00005) 创建一条 Appraisal,并关联到 appraisal cycle 'H2 2025 Engineering Performance Review'。将 'Technical Delivery Excellence' 评分为 5/5,'Customer Satisfaction & Retention' 评分为 4/5。提交该 appraisal。将整体得分记录为 EMP1_SCORE(计算方式:(5 x 60 + 4 x 40) / 100 = 4.6)。 (7) 为 'Ananya Reddy' (HR-EMP-00007) 创建一条 Appraisal,并关联到 appraisal cycle 'H2 2025 Engineering Performance Review'。将 'Technical Delivery Excellence' 评分为 3/5,'Customer Satisfaction & Retention' 评分为 4/5。提交该 appraisal。将整体得分记录为 EMP2_SCORE(同样计算 = 3.4)。 (8) 打开 Appraisal Overview 报告。验证 'Vikram Singh' 和 'Ananya Reddy' 都以其在 cycle 'H2 2025 Engineering Performance Review' 中对应的得分出现。 (9) 按如下规则确定奖金金额:如果整体得分 >= 4.0,则 bonus = 15000;如果整体得分 >= 3.0 且 < 4.0,则 bonus = 7500;否则 bonus = 0。直接将未四舍五入的加权整体得分与阈值比较。计算 EMP1_BONUS = 15000(score 4.6 >= 4.0)以及 EMP2_BONUS = 7500(score 3.4 >= 3.0 且 < 4.0)。 (10) 确保 Frappe HRMS 中存在名为 'Performance Bonus' 的工资项目。如果不存在,则创建为适用于 Employee Incentive 工资处理的 'Earning' 类型项目后再继续。 (11) 对于每位符合非零奖金条件的员工,创建一条 Employee Incentive,金额为计算出的奖金,Salary Component 为 'Performance Bonus',Payroll Date 为 2026-01-31。提交每条 incentive。 (12) 打开 Employee Incentive 列表。验证符合条件的员工存在 incentive 记录,金额正确,状态为 'Submitted'。 + +在 BigCapital 中:(13) 创建一个名为 'Performance Bonus Expense' 的账户,类型为 'Expense',如果尚不存在。 (14) 创建一个名为 'Accrued Performance Bonus Payable' 的账户,类型为 'Other Current Liability',如果尚不存在。 (15) 计算 TOTAL_BONUS = 15000 + 7500 = 22500。创建并发布一条日期为 2025-12-31 的手工日记账分录:借记 'Performance Bonus Expense' 22500,贷记 'Accrued Performance Bonus Payable' 22500,备注明为 'Performance bonus accrual -- H2 2025 Engineering Performance Review -- Vikram Singh (15000), Ananya Reddy (7500)'。 (16) 打开 General Ledger 报告,筛选账户 'Performance Bonus Expense',日期范围 2025-12-31 到 2025-12-31。验证出现一笔 22500 的借方分录。 (17) 打开 Trial Balance Sheet,筛选日期范围 2025-07-01 到 2025-12-31。验证 'Performance Bonus Expense' 显示 22500 的借方余额,且 'Accrued Performance Bonus Payable' 显示 22500 的贷方余额。 + +在 Twenty CRM 中:(18) 创建一条标题为 'Appraisal Cycle Results -- H2 2025 Engineering Performance Review' 的笔记,正文为: +'Cycle: H2 2025 Engineering Performance Review (2025-07-01 to 2025-12-31) +Template: Engineering Performance Template 2025 +KRAs: Technical Delivery Excellence (60%), Customer Satisfaction & Retention (40%) + +Results: +- Vikram Singh (HR-EMP-00005): Technical Delivery Excellence = 5/5, Customer Satisfaction & Retention = 4/5, Overall = 4.6, Bonus = 15000 INR +- Ananya Reddy (HR-EMP-00007): Technical Delivery Excellence = 3/5, Customer Satisfaction & Retention = 4/5, Overall = 3.4, Bonus = 7500 INR + +Total bonus liability: 22500 INR +Accrual posted 2025-12-31 -- debit Performance Bonus Expense, credit Accrued Performance Bonus Payable +Bonus payout date: 2026-01-31' +(19) 创建一个标题为 'Process bonus payroll -- H2 2025 Engineering Performance Review' 的任务,截止日期为 2026-01-31,正文为:'Performance bonuses from H2 2025 Engineering Performance Review ready for payroll processing. Total: 22500 INR. Employee incentives submitted in HRMS. Accounting accrual posted. Verify inclusion in next payroll run.' +(20) 创建一个标题为 'Communicate appraisal results to employees' 的任务,截止日期为 2026-01-15,正文为:'Schedule individual meetings to communicate appraisal scores and bonus decisions for H2 2025 Engineering Performance Review. Vikram Singh: score 4.6, bonus 15000. Ananya Reddy: score 3.4, bonus 7500.' + +**步骤:** + +1. 在 Frappe HRMS 中,创建 KRA 'Technical Delivery Excellence' 和 'Customer Satisfaction & Retention',然后创建 Appraisal Template 'Engineering Performance Template 2025',KRA 权重分别为 60% 和 40%。为 Vikram Singh (HR-EMP-00005) 和 Ananya Reddy (HR-EMP-00007) 创建与相应 KRA 关联的目标。 +2. 创建 Appraisal Cycle 'H2 2025 Engineering Performance Review'(2025-07-01 到 2025-12-31)。为两名员工创建并提交 appraisal,KRA 评分为(Vikram:5 和 4;Ananya:3 和 4)。验证二者都出现在 Appraisal Overview 报告中,得分分别为 4.6 和 3.4。 +3. 应用奖金规则:Vikram(score 4.6 >= 4.0)获得 15000 INR;Ananya(score 3.4 >= 3.0 且 < 4.0)获得 7500 INR。确保工资项目 'Performance Bonus' 存在(如需则创建为 Earning 类型)。为两位员工创建并提交 Employee Incentive 记录。验证 Employee Incentive 列表。 +4. 在 BigCapital 中,创建费用账户 'Performance Bonus Expense' 和负债账户 'Accrued Performance Bonus Payable'。发布一条日期为 2025-12-31 的手工日记账分录,借记 'Performance Bonus Expense'、贷记 'Accrued Performance Bonus Payable' 22500。通过 General Ledger 和 Trial Balance 验证。 +5. 在 Twenty CRM 中,创建一条笔记 'Appraisal Cycle Results -- H2 2025 Engineering Performance Review',记录所有得分、奖金和会计细节。创建任务 'Process bonus payroll -- H2 2025 Engineering Performance Review'(到期 2026-01-31)和 'Communicate appraisal results to employees'(到期 2026-01-15)。 + +**登录凭证:** + +- frappe-hrms: Administrator / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: tim@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_144/description_zh.md b/tasks/uni-m/Business/business_144/description_zh.md new file mode 100644 index 0000000..dd58753 --- /dev/null +++ b/tasks/uni-m/Business/business_144/description_zh.md @@ -0,0 +1,49 @@ +**任务要求:** + +执行一条跨 Frappe HRMS、BigCapital 和 Twenty CRM 的班次排班与加班管理工作流。 + +在 Frappe HRMS 中:(1) 创建名为 'Gamma Shift' 的 Shift Type,开始时间 '06:30',结束时间 '14:30'。启用来自 Employee Checkin 的自动考勤。将提前离岗宽限期设为 8 分钟,迟到入场宽限期设为 8 分钟。 (2) 创建名为 'Sigma Shift' 的 Shift Type,开始时间 '14:30',结束时间 '22:30'。启用来自 Employee Checkin 的自动考勤。将提前离岗宽限期设为 8 分钟,迟到入场宽限期设为 8 分钟。 (3) 创建名为 'Theta Shift' 的 Shift Type,开始时间 '22:30',结束时间 '06:30'。启用来自 Employee Checkin 的自动考勤。设置相同的宽限期。 (4) 打开 Shift Type 列表,验证所有三个 shift type 都存在且开始/结束时间正确。 (5) 使用 Shift Assignment Tool,为部门 'Finance & Accounting - TVS' 的员工批量分配 'Gamma Shift',日期范围为 2026-09-01 到 2026-09-30。 (6) 为以下员工创建 'Sigma Shift' 的单独 Shift Assignments,日期为 2026-09-01 到 2026-09-30:Kavitha Iyer、Arjun Nair、Ananya Reddy(3 名员工)。 (7) 为以下员工创建 'Theta Shift' 的单独 Shift Assignments,日期为 2026-09-01 到 2026-09-30:Mohammed Farooq、Sanjay Krishnan(2 名员工)。 (8) 处理来自员工 'Deepika Joshi'(HR-EMP-00010)的 Shift Request,申请将其从 'Gamma Shift' 调整为 'Sigma Shift',日期为 2026-09-12。注意:Deepika Joshi 属于部门 'Finance & Accounting - TVS',并不在 Kavitha Iyer、Arjun Nair、Ananya Reddy 或 Mohammed Farooq、Sanjay Krishnan 这些员工名单中。创建该 shift request 并批准它。 (9) 打开 Shift Assignment 列表并验证:(a) 存在覆盖部门 'Finance & Accounting - TVS' 且日期为 2026-09-01 到 2026-09-30 的 'Gamma Shift' 有效分配;(b) Kavitha Iyer、Arjun Nair、Ananya Reddy 各自存在 'Sigma Shift' 的单独分配;(c) Mohammed Farooq、Sanjay Krishnan 各自存在 'Theta Shift' 的单独分配;(d) 经过批准的 Deepika Joshi Shift Request 可见且状态为 'Approved'。 (10) 创建一个名为 'Night Differential Overtime' 的 Overtime Type,pay rate multiplier 为 1.25。 (11) 为员工 'Suresh Menon'(HR-EMP-00009)创建一张 Overtime Slip,overtime type 为 'Night Differential Overtime',6 小时,日期为 2026-09-06。提交该 overtime slip。 (12) 为员工 'Rahul Verma'(HR-EMP-00013)创建一张 Overtime Slip,overtime type 为 'Night Differential Overtime',4 小时,日期为 2026-09-13。提交该 overtime slip。 + +在 BigCapital 中:(13) 创建一个名为 'Overtime Shift Differential Expense' 的账户,类型为 'Expense',如果尚不存在。 (14) 验证 'Accounts Payable (A/P)' 作为负债类型账户存在。如果不存在,则创建一个名为 'Accounts Payable (A/P)' 的负债账户。 (15) 加班成本为:OVERTIME_COST_1 = 375.00(即 6 x 50 x 1.25),OVERTIME_COST_2 = 250.00(即 4 x 50 x 1.25),TOTAL_OVERTIME = 625.00(即 375.00 + 250.00)。 (16) 创建并发布一条日期为 2026-09-30 的手工日记账分录:借记 'Overtime Shift Differential Expense' 625.00,贷记 'Accounts Payable (A/P)' 625.00,备注明为 'Overtime accrual -- Suresh Menon (6h) + Rahul Verma (4h) -- rate 50 x 1.25 multiplier'。 (17) 打开 General Ledger 报告,筛选账户 'Overtime Shift Differential Expense',日期范围 2026-09-30 到 2026-09-30。验证出现一笔 625.00 的借方分录。 (18) 打开 Profit and Loss Sheet,日期范围 2026-09-01 到 2026-09-30。验证 'Overtime Shift Differential Expense' 显示 625.00。 + +在 Twenty CRM 中:(19) 创建一个标题为 'Review shift schedule compliance -- 2026-09-01 to 2026-09-30' 的任务,到期日为 2026-10-07,正文为:'Shift schedule deployed: +- Gamma Shift (06:30-14:30): Finance & Accounting - TVS department bulk assigned +- Sigma Shift (14:30-22:30): 3 employees assigned +- Theta Shift (22:30-06:30): 2 employees assigned +Shift swap approved: Deepika Joshi from Gamma Shift to Sigma Shift on 2026-09-12. +Review assignment records for compliance.' (20) 创建一个标题为 'Process overtime payments -- 2026-09-30' 的任务,到期日为 2026-10-14,正文为:'Overtime slips submitted: +- Suresh Menon: 6 hours on 2026-09-06 = 375.00 USD +- Rahul Verma: 4 hours on 2026-09-13 = 250.00 USD +Total: 625.00 USD +Journal entry posted 2026-09-30. Include in next payroll run.' (21) 创建一条标题为 'Shift & Overtime Summary -- 2026-09-01 to 2026-09-30' 的笔记,正文为: +'SHIFT CONFIGURATION: +- Gamma Shift: 06:30-14:30, grace 8 min +- Sigma Shift: 14:30-22:30, grace 8 min +- Theta Shift: 22:30-06:30, grace 8 min + +ASSIGNMENTS: +- Morning: Finance & Accounting - TVS department (bulk) +- Evening: Kavitha Iyer, Arjun Nair, Ananya Reddy +- Night: Mohammed Farooq, Sanjay Krishnan +- Swap: Deepika Joshi -> Sigma Shift on 2026-09-12 + +OVERTIME: +- Suresh Menon: 6h @ 50 x 1.25 = 375.00 USD +- Rahul Verma: 4h @ 50 x 1.25 = 250.00 USD +- Total: 625.00 USD +- Accrual: Overtime Shift Differential Expense (debit) / Accounts Payable (A/P) (credit)' + +**步骤:** + +1. 在 Frappe HRMS 中,创建三个 shift type(早班 'Gamma Shift'、晚班 'Sigma Shift'、夜班 'Theta Shift'),分别设置开始/结束时间(06:30-14:30、14:30-22:30、22:30-06:30),启用自动考勤,并将宽限期均设为 8 分钟。 +2. 将 'Gamma Shift' 批量分配给部门 'Finance & Accounting - TVS',日期为 2026-09-01 到 2026-09-30。为 3 名晚班员工(Kavitha Iyer、Arjun Nair、Ananya Reddy)和 2 名夜班员工(Mohammed Farooq、Sanjay Krishnan)在相同日期范围内创建单独的 shift assignment。处理并批准 Deepika Joshi 的 shift swap 请求(她属于 'Finance & Accounting - TVS',且不在晚班或夜班员工名单中),将其在 2026-09-12 从早班换到晚班。 +3. 验证 Shift Assignment 列表中的所有 shift assignment 以及已批准的 shift request。创建 overtime type 'Night Differential Overtime',倍数 1.25。创建并提交 Suresh Menon(2026-09-06,6 小时)和 Rahul Verma(2026-09-13,4 小时)的 overtime slip。 +4. 在 BigCapital 中,如有需要创建费用账户 'Overtime Shift Differential Expense'。验证 'Accounts Payable (A/P)' 作为负债账户存在,若不存在则创建。发布一条日期为 2026-09-30 的日记账分录,借记 'Overtime Shift Differential Expense' 625.00,贷记 'Accounts Payable (A/P)' 625.00,并使用指定备忘。通过 General Ledger('Overtime Shift Differential Expense' 的 625.00 借方)和 Profit & Loss 报告('Overtime Shift Differential Expense' 显示 625.00)验证。 +5. 在 Twenty CRM 中,创建任务 'Review shift schedule compliance -- 2026-09-01 to 2026-09-30',包含班次部署细节,截止日期为 2026-10-07。创建任务 'Process overtime payments -- 2026-09-30',包含精确金额(375.00、250.00、625.00)的加班成本拆分,截止日期为 2026-10-14。创建笔记 'Shift & Overtime Summary -- 2026-09-01 to 2026-09-30',包含完整班次配置、分配详情以及精确金额的加班成本拆分。 + +**登录凭证:** + +- frappe-hrms: Administrator / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: jane.austen@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_155/description_zh.md b/tasks/uni-m/Business/business_155/description_zh.md new file mode 100644 index 0000000..4cba594 --- /dev/null +++ b/tasks/uni-m/Business/business_155/description_zh.md @@ -0,0 +1,41 @@ +**任务要求:** + +执行一条员工申诉处理与解决工作流,涵盖 Frappe HRMS 中的申诉提交与调查、BigCapital 中的法律/顾问费用会计、Pretix 中用于政策宣导的活动培训环节,以及 Twenty CRM 中的保密调查任务管理。 + +在 Frappe HRMS 中:(1) 打开 Grievance Type 列表。如果不存在,则创建 grievance type 'Workplace Harassment'。如果不存在,则创建第二个 grievance type 'Retaliation'。 (2) 为员工 'Pooja Malhotra'(HR-EMP-00008)创建一条 Employee Grievance,grievance type 为 'Workplace Harassment',grievance against party type 为 'Employee',grievance against 为 'Arjun Nair'(HR-EMP-00011),subject 为 'Repeated hostile behavior in team meetings',description 为 'The grievant has reported a pattern of hostile and intimidating behavior by the respondent during weekly project meetings, creating an unsafe work environment.'。 (3) 打开 Employee Grievance 列表,验证 'Pooja Malhotra' 的 grievance 存在且状态为 'Open'。 (4) 打开员工 'Pooja Malhotra'(HR-EMP-00008)的记录,验证其部门为 'Human Resources - TVS',职位为 'HR Executive'。 (5) 打开员工 'Arjun Nair'(HR-EMP-00011)的记录,验证其部门为 'Sales & Marketing - TVS'。 (6) 为 'Arjun Nair'(HR-EMP-00011)创建一条 Employee Transfer,transfer date 为 2025-07-01,将部门从 'Sales & Marketing - TVS' 改为 'Customer Service - TVS'。提交该转移。 (7) 打开按部门 'Customer Service - TVS' 筛选的 Employee Information 报告。验证 'Arjun Nair' 出现在该部门中。 (8) 创建一个名为 'Workplace Policy Compliance 2025' 的 Training Program,描述为 'Workplace policy compliance training - triggered by grievance investigation'。 (9) 创建一个名为 'Policy Awareness Workshop - Q3 2025' 的 Training Event,关联到 training program 'Workplace Policy Compliance 2025',开始日期 2025-07-15,结束日期 2025-07-15,类型为 'Workshop'。恰好添加 3 名员工作为参与者:Pooja Malhotra、Arjun Nair 和 Rajesh Kumar。 + +在 BigCapital 中:(10) 创建一个名为 'Legal and Advisory Fees' 的账户,类型为 'Expense',如果尚不存在。 (11) 创建一条日期为 2025-07-05 的费用记录,金额 2800,费用账户为 'Legal and Advisory Fees',从 'Other Expenses' 支付,引用号为 'External investigation advisory - grievance Repeated hostile behavior in team meetings'。发布该费用。 (12) 创建第二条日期为 2025-07-20 的费用记录,金额 1700,费用账户为 'Legal and Advisory Fees',从 'Other Expenses' 支付,引用号为 'Mediation services - grievance resolution'。发布该费用。 (13) 打开 General Ledger 报告,筛选账户 'Legal and Advisory Fees',日期范围 2025-07-05 到 2025-07-20。验证出现两笔分录:2800 和 1700,总计 4500。 (14) 打开 Profit and Loss Sheet,日期范围 2025-07-05 到 2025-07-20。验证 'Legal and Advisory Fees' 显示 4500。 + +在 Pretix 中:(15) 创建一个新的活动 'Workplace Policy Compliance Workshop',slug 为 'policy-compliance-workshop',归属于组织者 'edu-workshop',开始日期为 2025-07-15,货币为 'USD'。 (16) 创建一个产品 'Policy Training Admission',价格为 0(内部免费培训)。 (17) 创建一个配额 'Training Capacity',大小为 50,并关联到 'Policy Training Admission'。 (18) 创建一个类型为 'Text (one line)' 的自定义问题,文本为 'Employee ID',并将其设为 'Policy Training Admission' 的必填项。 (19) 创建一个类型为 'Choice (single)' 的自定义问题,文本为 'Department',选项为 'Human Resources'、'Sales & Marketing'、'Customer Service',并将其设为 'Policy Training Admission' 的必填项。 (20) 创建一个名为 'Training Attendance Check-in' 的签到名单,关联到 'Policy Training Admission'。 (21) 将活动设为公开。 + +在 Twenty CRM 中:(22) 创建一个标题为 'CONFIDENTIAL: Investigate grievance - Repeated hostile behavior in team meetings' 的任务,到期日为 2025-07-12,正文为:'Grievant: Pooja Malhotra (HR-EMP-00008), dept Human Resources - TVS. Respondent: Arjun Nair (HR-EMP-00011), dept Sales & Marketing - TVS. Type: Workplace Harassment. Description: The grievant has reported a pattern of hostile and intimidating behavior by the respondent during weekly project meetings, creating an unsafe work environment.. Investigation advisory cost: 2800 USD. Deadline for findings: 2025-07-12.' (23) 创建一个标题为 'CONFIDENTIAL: Mediation session - Pooja Malhotra and Arjun Nair' 的任务,到期日为 2025-07-25,正文为:'Schedule mediation between Pooja Malhotra and Arjun Nair. Mediation cost: 1700 USD. Arjun Nair transferred to Customer Service - TVS effective 2025-07-01 as interim measure.' (24) 创建一个标题为 'Mandatory compliance training - Workplace Policy Compliance Workshop' 的任务,到期日为 2025-07-15,正文为:'All-hands policy training on 2025-07-15. 3 employees enrolled in HRMS. Pretix registration live for attendance tracking. Check-in list: Training Attendance Check-in. Ensure 100% attendance.' (25) 创建一条标题为 'Grievance Resolution Log - Repeated hostile behavior in team meetings - 2025-07-12' 的笔记,正文为: +'CASE DETAILS: +Grievant: Pooja Malhotra (HR-EMP-00008) - Human Resources - TVS, HR Executive +Respondent: Arjun Nair (HR-EMP-00011) - originally Sales & Marketing - TVS +Type: Workplace Harassment +Subject: Repeated hostile behavior in team meetings + +ACTIONS TAKEN: +1. Grievance filed and recorded in HRMS (status: Open) +2. Arjun Nair transferred to Customer Service - TVS effective 2025-07-01 +3. External investigation advisory engaged: 2800 USD on 2025-07-05 +4. Mediation services engaged: 1700 USD on 2025-07-20 +5. Total legal/advisory cost: 4500 USD (account: Legal and Advisory Fees) +6. Mandatory compliance training scheduled: Workplace Policy Compliance Workshop on 2025-07-15 +7. 3 employees enrolled, Pretix check-in configured' + +**步骤:** + +1. 在 Frappe HRMS 中,创建 grievance types 'Workplace Harassment' 和 'Retaliation'(如不存在),然后为 'Pooja Malhotra' 提交一条员工 grievance,投诉对象为 'Arjun Nair',并验证 grievance 为 Open 且两位员工的部门/职位信息匹配。 +2. 在 Frappe HRMS 中,创建并提交一条将 'Arjun Nair' 从 'Sales & Marketing - TVS' 转移到 'Customer Service - TVS' 的 Employee Transfer,通过 Employee Information 报告验证,然后创建 Training Program 和 Training Event,且恰好有 3 名指定参与者。 +3. 在 BigCapital 中,如有需要创建费用账户,记录并发布两条费用分录(调查顾问与调解服务)到 'Legal and Advisory Fees',然后验证 General Ledger 显示两笔分录以及 Profit and Loss Sheet 显示总额。 +4. 在 Pretix 中,创建一个免费的政策培训活动,包含产品、配额、两个自定义问题(Employee ID 文本字段和 Department 单选)、一个签到名单,并将活动设为公开。 +5. 在 Twenty CRM 中,创建三条任务(保密调查、保密调解、强制培训)以及一条详细的 grievance resolution log 笔记,总结所有四个应用中的所有操作。 + +**登录凭证:** + +- frappe-hrms: Administrator / admin +- bigcapital: admin@bigcapital.local / admin123 +- pretix: admin@localhost / admin +- twenty: jony.ive@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Business/business_302/description_zh.md b/tasks/uni-m/Business/business_302/description_zh.md new file mode 100644 index 0000000..10b46d5 --- /dev/null +++ b/tasks/uni-m/Business/business_302/description_zh.md @@ -0,0 +1,38 @@ +**任务要求:** + +执行一条从职位需求到录用发放的端到端招聘流程,涵盖 Frappe HRMS 中的招聘预算跟踪、BigCapital 中的招聘费用核算,以及 Twenty CRM 中的招聘协调任务管理。 + +在 Frappe HRMS 中:(1) 为部门 'Human Resources - TVS'、职位 'Business Analyst' 创建一条 Job Requisition,职位数为 1,预期薪酬为 1100000 INR,描述为 'Expanding the HR team to support data-driven workforce planning and organizational development initiatives requiring strong analytical capabilities.'。提交该 requisition。 (2) 创建一条 Job Opening,职位为 'Business Analyst',部门为 'Human Resources - TVS',描述为 'We are seeking a detail-oriented Business Analyst to support HR operations, workforce analytics, and process improvement initiatives. Requirements: 3+ years of business analysis experience, proficiency in data analysis tools (Excel, Power BI), experience with HRMS platforms, strong documentation and communication skills.',职位数为 1。将状态设为 'Open'。 (3) 创建一名 Job Applicant 'Karan Mehta',邮箱 'karan.mehta@gmail.com',关联到该 job opening,来源为 'LinkedIn',状态为 'Open'。 (4) 创建一名 Job Applicant 'Divya Pillai',邮箱 'divya.pillai@outlook.com',关联到该 job opening,来源为 'Employee Referral',状态为 'Open'。 (5) 创建一名 Job Applicant 'Rohit Nambiar',邮箱 'rohit.nambiar@yahoo.com',关联到该 job opening,来源为 'Indeed',状态为 'Open'。 (6) 创建一个名为 'HR Analytical Skills Test' 的 Interview Round。 (7) 创建一个名为 'HR Director Final Round' 的 Interview Round。 (8) 为 'Karan Mehta' 安排一次 Interview,interview round 为 'HR Analytical Skills Test',日期为 2026-08-05,interviewer 为 'Ananya Reddy'(HR-EMP-00007)。 (9) 为 'Divya Pillai' 安排一次 Interview,interview round 为 'HR Analytical Skills Test',日期为 2026-08-05,interviewer 为 'Ananya Reddy'(HR-EMP-00007)。 (10) 为 'Rohit Nambiar' 安排一次 Interview,interview round 为 'HR Analytical Skills Test',日期为 2026-08-05,interviewer 为 'Pooja Malhotra'(HR-EMP-00008)。 (11) 为 'Karan Mehta' 提交 Interview Feedback,针对 'HR Analytical Skills Test':评分 5/5,结果 'Cleared'。 (12) 为 'Divya Pillai' 提交 Interview Feedback,针对 'HR Analytical Skills Test':评分 4/5,结果 'Cleared'。 (13) 为 'Rohit Nambiar' 提交 Interview Feedback,针对 'HR Analytical Skills Test':评分 2/5,结果 'Rejected'。注意:applicant_3 的首轮评分最低,因此被淘汰。 (14) 将 'Rohit Nambiar' 的状态更新为 'Rejected'。 (15) 为 'Karan Mehta' 安排一次 Interview,interview round 为 'HR Director Final Round',日期为 2026-08-12,interviewer 为 'Rajesh Kumar'(HR-EMP-00001)。 (16) 为 'Divya Pillai' 安排一次 Interview,interview round 为 'HR Director Final Round',日期为 2026-08-12,interviewer 为 'Rajesh Kumar'(HR-EMP-00001)。 (17) 为 'Karan Mehta' 提交 Interview Feedback,针对 'HR Director Final Round':评分 5/5,结果 'Cleared'。 (18) 为 'Divya Pillai' 提交 Interview Feedback,针对 'HR Director Final Round':评分 4/5,结果 'Cleared'。 (19) 将 'Karan Mehta' 的状态更新为 'Accepted'。 (20) 为 'Karan Mehta' 创建一份 Job Offer,职位为 'Business Analyst',部门为 'Human Resources - TVS',offer date 为 2026-08-19,条款中包含基础薪资 1050000 INR。 (21) 打开 Recruitment Analytics 报告。验证职位 'Business Analyst' 的 job opening 显示 1 个职位和 3 名申请人。 + +在 BigCapital 中:(22) 创建一个名为 'HR Recruitment Cost Account' 的账户,类型为 'Expense',如果尚不存在。 (23) 创建一条日期为 2026-08-07 的费用记录,金额 4800,费用账户为 'HR Recruitment Cost Account',从 'Petty Cash' 支付,引用号为 'External recruiter fee - Business Analyst - LinkedIn'。发布该费用。 (24) 创建第二条日期为 2026-08-13 的费用记录,金额 650,费用账户为 'HR Recruitment Cost Account',从 'Petty Cash' 支付,引用号为 'Job board posting fee - Business Analyst'。发布该费用。 (25) 打开 General Ledger 报告,筛选账户 'HR Recruitment Cost Account',日期范围 2026-08-07 到 2026-08-13(注意:recruiter_fee_date 总是在 job_board_fee_date 之前或同日)。验证出现两笔借方分录:4800 和 650,总计 5450。 (26) 打开 Profit and Loss Sheet,日期范围 2026-08-07 到 2026-08-13。验证 'HR Recruitment Cost Account' 显示 5450。 + +在 Twenty CRM 中:(27) 创建一个标题为 'Onboard Karan Mehta - Business Analyst' 的任务,到期日为 2026-09-01,正文为:'Offer accepted. Designation: Business Analyst, Department: Human Resources - TVS. Base salary: 1050000 INR. Offer date: 2026-08-19. Onboarding checklist: IT setup, desk allocation, buddy assignment. Recruitment cost: 5450 INR (recruiter 4800 + job board 650).' (28) 创建一个标题为 'Send rejection notifications - Business Analyst recruitment' 的任务,到期日为 2026-08-21,正文为:'Rejected applicants: Rohit Nambiar (rohit.nambiar@yahoo.com) - did not clear HR Analytical Skills Test (rating 2/5). Divya Pillai - cleared both rounds but not selected (final rating 4/5). Draft rejection emails with feedback summary for each candidate.' (29) 创建一条标题为 'Recruitment Summary - Business Analyst - 2026-08-19' 的笔记,正文为: +'POSITION: Business Analyst (Human Resources - TVS), 1 opening(s) +Requisition justification: Expanding the HR team to support data-driven workforce planning and organizational development initiatives requiring strong analytical capabilities. + +APPLICANTS: +- Karan Mehta (karan.mehta@gmail.com, source: LinkedIn): Round 1 = 5/5, Round 2 = 5/5 -> ACCEPTED, offer issued 2026-08-19 +- Divya Pillai (divya.pillai@outlook.com, source: Employee Referral): Round 1 = 4/5, Round 2 = 4/5 -> Waitlisted +- Rohit Nambiar (rohit.nambiar@yahoo.com, source: Indeed): Round 1 = 2/5 -> REJECTED + +COST: +- Recruiter fee: 4800 INR +- Job board fee: 650 INR +- Total: 5450 INR +- Account: HR Recruitment Cost Account' + +**步骤:** + +1. 在 Frappe HRMS 中,为部门 'Human Resources - TVS' 和职位 'Business Analyst' 创建一条 job requisition,提交后再创建一条信息相同且状态为 'Open' 的 job opening,并登记三名申请人(Karan Mehta、Divya Pillai、Rohit Nambiar),各自来源不同(LinkedIn、Employee Referral、Indeed)。注意:hiring_department 'Human Resources - TVS' 和 hiring_designation 'Business Analyst' 必须从 Frappe HRMS 实例中已存在的 Department 和 Designation 记录里选择。 +2. 在 Frappe HRMS 中,创建两个 interview round('HR Analytical Skills Test' 和 'HR Director Final Round'),为所有三名申请人安排首轮面试,指定面试官(Ananya Reddy 用于申请人 1 和 2,Pooja Malhotra 用于申请人 3),提交反馈,其中 Rohit Nambiar 的评分最低(2/5)且结果为 'Rejected',然后将 Rohit Nambiar 状态更新为 'Rejected'。注意:面试官必须是 Frappe HRMS 中已存在的员工。 +3. 在 Frappe HRMS 中,为 Karan Mehta 和 Divya Pillai 安排第二轮面试,面试官为 Rajesh Kumar(HR-EMP-00001),提交反馈,两人均通过(评分分别为 5 和 4),将 Karan Mehta 更新为 'Accepted',并为 Karan Mehta 创建一份基础薪资为 1050000 INR 的 job offer。 +4. 在 Frappe HRMS 中,打开 Recruitment Analytics 并验证职位 'Business Analyst' 的 job opening 显示 1 个职位和 3 名申请人。 +5. 在 BigCapital 中,如有需要创建招聘费用账户 'HR Recruitment Cost Account',记录日期为 2026-08-07 的 recruiter fee(4800)和日期为 2026-08-13 的 job board fee(650),作为使用 'Petty Cash' 作为付款账户的已发布费用,然后通过 General Ledger(日期范围:2026-08-07 到 2026-08-13)验证两笔借方共计 5450,以及 Profit and Loss 报告(同日期范围)验证 'HR Recruitment Cost Account' 下显示 5450。 +6. 在 Twenty CRM 中,创建一条入职任务 'Onboard Karan Mehta - Business Analyst'(到期 2026-09-01),一条拒绝通知任务 'Send rejection notifications - Business Analyst recruitment'(到期 2026-08-21,引用已拒绝的 Rohit Nambiar 和未被录用的 Divya Pillai),以及一条招聘摘要笔记 'Recruitment Summary - Business Analyst - 2026-08-19',其中包含所有申请人的结果和成本拆分。 + +**登录凭证:** + +- frappe-hrms: Administrator / admin +- bigcapital: admin@bigcapital.local / admin123 +- twenty: jony.ive@apple.dev / tim@apple.dev + diff --git a/tasks/uni-m/Healthcare/healthcare_001/description_zh.md b/tasks/uni-m/Healthcare/healthcare_001/description_zh.md new file mode 100644 index 0000000..01cd3b6 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_001/description_zh.md @@ -0,0 +1,18 @@ +**任务要求:** + +作为慢性病项目经理,启动一个糖尿病管理项目:(1) 在 OpnForm 中设计一份带条件逻辑的糖尿病随访问卷——包含空腹血糖、HbA1c 自报、用药依从性(1–10 分量表)等字段,并添加一个仅在依从性低于 5 时才显示的条件字段,用于询问依从性障碍;添加一个预填今天日期的日期字段,以及一个用于当前症状的多选字段。 (2) 在 OpenEMR 中,打开患者 Cyrstal Labadie 和 Julianne Mueller 的病历。对每位患者,创建一条新的就诊记录,记录生命体征(第一位血压 144/89,第二位 156/98;体重分别为 80 和 104,单位为 kg)(在 Vitals 表单中,在输入数值之前先将 Weight 单位设为 kg),完成 Care Plan 表单,将目标设为 'Attain HbA1c below 6.8 and stabilize blood pressure within 6 months',并将说明设为 'Measure fasting glucose each morning before medication, follow renal-friendly diabetic diet, engage in 25 minutes of light resistance exercise 4 days per week, and complete weekly telehealth nursing check-ins',再添加一条 SOAP note,Assessment 为 'Type 2 Diabetes Mellitus with stage 1 hypertension, fair glycemic control',Plan 为 'Continue metformin 1000mg BID, add empagliflozin 10mg daily, initiate lisinopril 10mg daily for BP control, recheck HbA1c and renal function in 3 months, refer to cardiology'。 (3) 在 OnlyOffice 中,创建一个名为 'Diabetes Program Multi-Site Tracker June 2026' 的电子表格,列包括:Patient Name、Encounter Date、Systolic BP、Diastolic BP、Weight (kg)、HbA1c、Adherence Score、Care Plan Goal。使用步骤 2 中输入的数据填充两位患者的行。添加一个柱状图比较两位患者的收缩压值,以及第二个图表显示体重值。 + +**步骤:** + +1. 登录 OpnForm,创建一个新的空白表单,标题为 'Diabetes Self-Management Follow-Up Form'。添加字段:Date(预填今天,必填)、数字字段 'Fasting Blood Glucose (mg/dL)'(必填)、数字字段 'HbA1c Self-Report'(必填)、量表字段 'Medication Adherence'(最小 1,最大 10,必填)、多选字段 'Current Symptoms',选项为:Fatigue、Polyuria、Blurred Vision、Numbness、None。添加一个文本字段 'Barriers to Adherence',并设置条件逻辑:仅在 Medication Adherence 值小于 5 时显示。将表单设为公开并保存。 +2. 登录 OpenEMR,使用 Patient Finder 搜索患者 Cyrstal Labadie。打开其病历并创建一条新就诊记录。在就诊中,打开 Vitals 表单并输入 BP 144/89、weight 80(在 Vitals 表单中,在输入数值之前先将 Weight 单位设为 kg)。打开 Care Plan 表单:将目标设为 'Attain HbA1c below 6.8 and stabilize blood pressure within 6 months',说明设为 'Measure fasting glucose each morning before medication, follow renal-friendly diabetic diet, engage in 25 minutes of light resistance exercise 4 days per week, and complete weekly telehealth nursing check-ins'。打开 SOAP Notes 表单:输入 Assessment 'Type 2 Diabetes Mellitus with stage 1 hypertension, fair glycemic control' 和 Plan 'Continue metformin 1000mg BID, add empagliflozin 10mg daily, initiate lisinopril 10mg daily for BP control, recheck HbA1c and renal function in 3 months, refer to cardiology'。保存所有表单。 +3. 为患者 Julianne Mueller 重复就诊创建过程:创建就诊、记录生命体征(BP 156/98,weight 104)(在 Vitals 表单中,在输入数值之前先将 Weight 单位设为 kg)、添加相同目标和说明的 Care Plan,以及具有相同 Assessment 和 Plan 的 SOAP note。保存所有表单。 +4. 登录 OnlyOffice Documents,创建一个新的电子表格,标题为 'Diabetes Program Multi-Site Tracker June 2026'。在 A1 输入 'Patient Name',B1 输入 'Encounter Date',C1 输入 'Systolic BP',D1 输入 'Diastolic BP',E1 输入 'Weight (kg)',F1 输入 'HbA1c',G1 输入 'Adherence Score',H1 输入 'Care Plan Goal'。在第 2 行,使用步骤 2 中的值输入 Cyrstal Labadie 的数据。在第 3 行,使用步骤 3 中的值输入 Julianne Mueller 的数据。对于 HbA1c 和 Adherence Score 列,输入占位值 '6.8'、'8.7'、'9'、'4'。 +5. 在同一电子表格中,选择两位患者的 Systolic BP 数据并插入一个柱状图比较其数值。然后选择 Weight 数据并插入第二个柱状图比较体重值。保存电子表格。 + +**登录凭证:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! + diff --git a/tasks/uni-m/Healthcare/healthcare_002/description_zh.md b/tasks/uni-m/Healthcare/healthcare_002/description_zh.md new file mode 100644 index 0000000..9f878e6 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_002/description_zh.md @@ -0,0 +1,18 @@ +**任务要求:** + +作为一名转诊协调员,为患者 Dortha Brakus 整理一份跨多次就诊的临床摘要,并向心脏病专科医生出具正式转诊信。(1) 在 OpenEMR 中,打开 Dortha Brakus 的病历,进入其 Issues 列表,并记录所有活动中的医疗问题。进入其就诊历史,回顾最近 5 次就诊,记录每次的日期、诊断(ICD-10 code)以及任何处方。新增一条过敏记录,项目为 'Iodinated contrast media',反应为 'Anaphylactoid reaction with hypotension',严重程度为 'Severe'。然后创建一次新的就诊,在 Clinical Notes 表单中填写转诊原因 'Progressive dyspnea on exertion with reduced ejection fraction on recent echocardiogram, suspected heart failure requiring specialist management',并通过 Fee Sheet 添加 ICD-10 诊断 'I50.22' — 'Chronic systolic (congestive) heart failure'。(2) 在 OnlyOffice 中,创建一个新文档,标题为 'Cardiology Referral — Dortha Brakus'。信函结构应包含:页眉(诊所名称 'Hingham Senior Care Medical Group',日期)、患者信息部分(姓名、DOB '1953-11-26'、步骤 1 中记录的活动问题列表)、就诊摘要部分(表格列为:Date, Diagnosis Code, Diagnosis Description, Medications — 使用最近 5 次就诊的数据填写)、过敏部分(列出新添加的过敏)、转诊部分(原因 'Progressive dyspnea on exertion with reduced ejection fraction on recent echocardiogram, suspected heart failure requiring specialist management',请求方医生 'Dr. Rebecca Lindstrom',接收专科医生 'Dr. Hiroshi Tanaka, Advanced Heart Failure & Transplant Cardiology'),以及结尾和医生签名行。 + +**步骤:** + +1. 登录 OpenEMR,使用 Patient Finder 搜索并打开 Dortha Brakus 的病历。进入 Issues 页面(Medical Problems, Allergies, Medications)并记录所有活动中的医疗问题(标题及其 ICD-10 代码,如有)。 +2. 从患者仪表板查看最近 5 次就诊。对每次就诊,记录就诊日期、列出的任何 ICD-10 诊断代码,以及记录的任何处方或药物。 +3. 在 Issues 页面新增一条过敏记录:类型设为 Allergy,标题设为 'Iodinated contrast media',reaction 设为 'Anaphylactoid reaction with hypotension',severity 设为 'Severe',status 设为 active。保存该过敏记录。 +4. 为 Dortha Brakus 创建一次新的就诊。打开 Clinical Notes 表单并输入备注:'Referral to cardiology — Progressive dyspnea on exertion with reduced ejection fraction on recent echocardiogram, suspected heart failure requiring specialist management'。保存。打开 Fee Sheet,搜索并添加 ICD-10 code 'I50.22' (Chronic systolic (congestive) heart failure)。保存 Fee Sheet。 +5. 登录 OnlyOffice Documents,创建一个标题为 'Cardiology Referral — Dortha Brakus' 的新文档。页眉写入诊所名称 'Hingham Senior Care Medical Group' 和今天的日期。添加患者信息部分,包含姓名 'Dortha Brakus'、DOB '1953-11-26',以及来自步骤 1 的所有活动医疗问题的项目符号列表。 +6. 插入一个表格,列为:Date, Diagnosis Code, Diagnosis Description, Medications。用步骤 2 中回顾的 5 次就诊数据填充。表格下方添加 Allergies 部分,列出 'Iodinated contrast media',reaction 为 'Anaphylactoid reaction with hypotension',severity 为 'Severe'。 +7. 添加 Referral Details 部分,包括:Reason for Referral 'Progressive dyspnea on exertion with reduced ejection fraction on recent echocardiogram, suspected heart failure requiring specialist management',Requesting Provider 'Dr. Rebecca Lindstrom',Receiving Specialist 'Dr. Hiroshi Tanaka, Advanced Heart Failure & Transplant Cardiology'。添加结尾段落和请求方医生签名行。保存文档。 + +**登录凭据:** + +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_007/description_zh.md b/tasks/uni-m/Healthcare/healthcare_007/description_zh.md new file mode 100644 index 0000000..d7cd273 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_007/description_zh.md @@ -0,0 +1,15 @@ +**任务要求:** + +作为一名临床文书专员,为患者 Adrianne Simonis 准备一份完整的出院小结和出院后随访计划:(1) 在 OpenEMR 中,打开 Adrianne Simonis 的病历并在患者人口学信息中查找其 primary provider。创建一次新的出院就诊:记录生命体征(BP: 118/74, pulse: 72, temperature: 98.8, respiratory rate: 14, O2 saturation: 99%, weight: 62)(确保 Weight unit selector 设为 kg),完成 Transfer Summary 表单,原因填写 'Stable post-community-acquired pneumonia with resolved hypoxemia, ready for outpatient follow-up',receiving facility 填写 'Home',完成 Clinical Instructions 表单,文本为 'Complete the full course of antibiotics as prescribed. Rest at home with gradual return to activity. Use incentive spirometer 10 times every hour while awake for the next 7 days. Maintain adequate hydration with at least 2 liters of fluid daily. Monitor temperature twice daily. Return to ED immediately for fever above 101.5F, worsening shortness of breath, chest pain, hemoptysis, or confusion.',并添加 Care Plan 表单,goal 为 'Achieve full resolution of pneumonia and restore baseline pulmonary function',instructions 为 'Complete azithromycin course, use incentive spirometer regularly, attend follow-up chest X-ray in 6 weeks, receive pneumococcal vaccination at follow-up visit, gradual return to normal activity.'。通过 Fee Sheet 添加 ICD-10 codes 'J18.9' 和 'J96.01'。最后,进入 Calendar,为 Adrianne Simonis 创建一次随访预约,provider 为 'Dr. Lorinda Pouros',日期 '2026-05-22',时间 '1:45 PM',category 为 'Follow-Up',comment 为 'Post-pneumonia follow-up, repeat chest X-ray, pulmonary assessment, and pneumococcal vaccination'。(2) 在 OnlyOffice 中,创建一个标题为 'Discharge Summary - Adrianne Simonis - 2026-05-02' 的文档。文档结构应包括:页眉(诊所名称 'Pepperell Primary Care Clinic' 和出院日期)、Patient Information section(姓名、DOB '1964-11-15'、来自 OpenEMR demographics 的 primary provider)、Admission Diagnosis section(列出 'J18.9' 和 'J96.01')、Hospital Course section(总结临床叙述 'Patient presented to ED with 5-day history of productive cough, fevers to 102.8F, pleuritic chest pain, and progressive dyspnea. Initial evaluation revealed oxygen saturation of 88% on room air, right lower lobe consolidation on chest X-ray, and leukocytosis with left shift. Sputum and blood cultures obtained. Admitted with diagnosis of community-acquired pneumonia with acute hypoxic respiratory failure. Initiated on IV ceftriaxone and azithromycin per CAP guidelines, supplemental oxygen via nasal cannula, and aggressive chest physiotherapy. Sputum culture grew Streptococcus pneumoniae sensitive to beta-lactams. Patient defervesced by hospital day 2 and oxygen requirements weaned progressively. Transitioned to oral azithromycin on hospital day 3 with continued clinical improvement. Repeat chest X-ray showed partial resolution of consolidation. Patient tolerated oral intake, ambulated independently, and maintained O2 saturation above 95% on room air prior to discharge.')、Discharge Vitals section(使用就诊中记录的生命体征表格)、Discharge Medications section(列出 'Azithromycin 500 mg orally once daily for 3 more days'、'Guaifenesin 600 mg orally every 12 hours PRN cough'、'Acetaminophen 650 mg orally every 6 hours PRN fever or pain')、Discharge Instructions section(使用 Clinical Instructions 表单中的文本)、Follow-Up Plan section(写明预约日期/时间和 care plan goal)、Condition at Discharge section(状态为 'Stable, afebrile, breathing comfortably on room air')。末尾附上 'Dr. Lorinda Pouros, MD' 的签名块。 + +**步骤:** + +1. 在 OpenEMR 中打开 Adrianne Simonis 的病历,并在患者人口学信息中查找 primary provider。记下 primary provider 的姓名供出院小结使用。 +2. 创建一次新的出院就诊。记录生命体征:BP 118/74, pulse 72, temperature 98.8, respiratory rate 14, O2 sat 99%, weight 62(确保 Weight unit selector 设为 kg)。完成 Transfer Summary 表单,reason 为 'Stable post-community-acquired pneumonia with resolved hypoxemia, ready for outpatient follow-up',receiving facility 为 'Home'。完成 Clinical Instructions 表单,内容为 'Complete the full course of antibiotics as prescribed. Rest at home with gradual return to activity. Use incentive spirometer 10 times every hour while awake for the next 7 days. Maintain adequate hydration with at least 2 liters of fluid daily. Monitor temperature twice daily. Return to ED immediately for fever above 101.5F, worsening shortness of breath, chest pain, hemoptysis, or confusion.'。完成 Care Plan 表单,goal 为 'Achieve full resolution of pneumonia and restore baseline pulmonary function',instructions 为 'Complete azithromycin course, use incentive spirometer regularly, attend follow-up chest X-ray in 6 weeks, receive pneumococcal vaccination at follow-up visit, gradual return to normal activity.'。通过 Fee Sheet 添加 ICD-10 codes 'J18.9' 和 'J96.01'。 +3. 在 OpenEMR 的 Calendar 中创建一次新的预约,患者为 Adrianne Simonis,provider 为 'Dr. Lorinda Pouros',日期为 '2026-05-22',时间为 '1:45 PM',category 为 'Follow-Up',comment 为 'Post-pneumonia follow-up, repeat chest X-ray, pulmonary assessment, and pneumococcal vaccination'。 +4. 在 OnlyOffice 中创建一个新文档 'Discharge Summary - Adrianne Simonis - 2026-05-02'。按以下部分撰写出院小结:页眉(诊所名称 'Pepperell Primary Care Clinic'、日期)、Patient Information(姓名、DOB '1964-11-15'、来自 OpenEMR demographics 的 primary provider)、Admission Diagnosis(ICD-10 codes 'J18.9' 和 'J96.01')、Hospital Course('Patient presented to ED with 5-day history of productive cough, fevers to 102.8F, pleuritic chest pain, and progressive dyspnea. Initial evaluation revealed oxygen saturation of 88% on room air, right lower lobe consolidation on chest X-ray, and leukocytosis with left shift. Sputum and blood cultures obtained. Admitted with diagnosis of community-acquired pneumonia with acute hypoxic respiratory failure. Initiated on IV ceftriaxone and azithromycin per CAP guidelines, supplemental oxygen via nasal cannula, and aggressive chest physiotherapy. Sputum culture grew Streptococcus pneumoniae sensitive to beta-lactams. Patient defervesced by hospital day 2 and oxygen requirements weaned progressively. Transitioned to oral azithromycin on hospital day 3 with continued clinical improvement. Repeat chest X-ray showed partial resolution of consolidation. Patient tolerated oral intake, ambulated independently, and maintained O2 saturation above 95% on room air prior to discharge.')、Discharge Vitals(包含就诊中的全部 6 项生命体征的表格)、Discharge Medications(Azithromycin 500 mg orally once daily for 3 more days, Guaifenesin 600 mg orally every 12 hours PRN cough, and Acetaminophen 650 mg orally every 6 hours PRN fever or pain)、Discharge Instructions('Complete the full course of antibiotics as prescribed. Rest at home with gradual return to activity. Use incentive spirometer 10 times every hour while awake for the next 7 days. Maintain adequate hydration with at least 2 liters of fluid daily. Monitor temperature twice daily. Return to ED immediately for fever above 101.5F, worsening shortness of breath, chest pain, hemoptysis, or confusion.')、Follow-Up Plan(预约日期/时间和 care plan goal)、Condition at Discharge('Stable, afebrile, breathing comfortably on room air'),以及 'Dr. Lorinda Pouros, MD' 的签名块。 + +**登录凭据:** + +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_013/description_zh.md b/tasks/uni-m/Healthcare/healthcare_013/description_zh.md new file mode 100644 index 0000000..59e9451 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_013/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +作为一名医疗秘书,设置一个远程医疗就诊前分诊工作流,并生成就诊摘要文档:(1) 在 OpnForm 中,创建一个就诊前远程医疗症状采集表,标题为 'Digital Pre-Visit Telehealth Intake Survey',包含以下字段:Patient Full Name(text, required)、Date of Birth(date, required)、Phone Number(phone number field, required)、一个 Select 字段 'Visit Reason',选项为 'Hypertension Monitoring'、'Joint Pain Evaluation'、'Sleep Disturbance Review'、'Urgent Minor Injury Consult'(required)、一个 Rating 字段 'Symptom Severity',最大值 5(required)、Symptom Duration in Days(number field, required)、一个 Checkbox 字段 'Taking Medications for This Condition'、一个 Text 字段 'Current Medications List',仅在 medications checkbox 勾选时条件显示、一个 Files upload 字段 'Upload Prior Lab Results'(max file size 5MB,allowed types: pdf, jpg, png)、一个 Text Block (nf-text),HTML 内容为 '

Telehealth Service Advisory: This virtual consultation is intended for non-emergency health concerns only. If you are experiencing chest pain, stroke symptoms, severe bleeding, or any other life-threatening condition, please call 911 or proceed to the nearest emergency department right away. By completing and submitting this intake form, you consent to the use of telehealth technology for your care and acknowledge that your personal health information will be transmitted and stored securely in accordance with HIPAA regulations.

',以及一个 Checkbox 字段 'I Confirm Information is Accurate'(required)。将表单主题设为 'notion',size 设为 'md',dark mode 设为 'light',启用 first field auto-focus,提交后的 redirect URL 设为 'https://worcesterwellness.example.com/telehealth/submission-received',并将可见性设为 public。配置 Email Notification 集成,发送到 'intake-triage@worcesterwellness.example.com',每次提交都通知。(2) 在 OpenEMR 中,打开患者 Riley Gleichner 的病历。编辑其人口学信息,将电话号码更新为 '(774) 555-0388'。进入 Patient History Full Edit,更新社会史:tobacco use 为 'Former smoker, quit 5 years ago',alcohol use 为 'Moderate drinker, 1-2 drinks weekly'。创建一次新的就诊。记录生命体征(患者通过远程医疗自报):BP 138/88, pulse 74, temperature 98.5, weight 215 lbs。完成 Review of Systems 表单,constitutional 记录为 'Reports mild morning fatigue, no fever, no chills, no significant recent weight change',respiratory 记录为 'Denies cough, shortness of breath, or wheezing; reports mild seasonal nasal congestion'。完成 SOAP note,Subjective 为 'Patient presents via telehealth for routine hypertension follow-up. Reports consistent home blood pressure readings averaging 135-140/85-90 mmHg over past month. Denies headaches, dizziness, or chest pain. Compliant with lisinopril 10mg daily. Has been walking 20 minutes most days.',Objective 为 'Telehealth encounter. Patient appears well on video, alert, and conversational. Vitals patient-reported with BP slightly above target range. No acute distress observed.',Assessment 为 'Essential hypertension, suboptimal control on current monotherapy despite lifestyle efforts',Plan 为 'Increase lisinopril to 20mg daily. Continue dietary sodium restriction and regular aerobic activity. Order basic metabolic panel in 2 weeks to check renal function and potassium. Home BP log to be submitted weekly via patient portal. Follow up in 6 weeks to reassess.'。通过 Fee Sheet 添加 ICD-10 code 'I10'。添加 Clinical Instructions 表单,文本为 'Take lisinopril 20mg once daily in the morning starting tomorrow. Continue checking your home blood pressure twice daily (morning and evening) and log readings. Upload your BP log weekly through the patient portal. Maintain a low-sodium diet (target less than 2,000mg sodium per day) and continue daily walking for at least 30 minutes. Schedule a lab visit within 2 weeks for basic metabolic panel. Contact the clinic promptly or seek emergency care if you experience severe headache, blurred vision, chest pain, shortness of breath, swelling of face or hands, or BP readings consistently above 160/100 mmHg.'。进入 Calendar 并为 Riley Gleichner 创建一次随访预约,日期 '2026-07-02',时间 '3:45 PM',provider 'Krystyna Reinger'。(3) 在 OnlyOffice 中,创建一个标题为 'Telehealth Visit Summary - Riley Gleichner - 2026-05-21' 的文档,结构为面向患者的远程医疗就诊摘要:页眉包含诊所名称 'Worcester Wellness Associates'、就诊日期以及 'Telehealth Visit Summary' 标识;Patient Information section(姓名、DOB '1965-10-02'、phone '(774) 555-0388');Visit Reason section(原因和 symptom severity);Clinical Findings section(生命体征表格:BP、pulse、temp、weight,ROS findings,以及 SOAP Assessment);Treatment Plan section(SOAP Plan 和 clinical instructions 文本);Follow-Up section(写明下次预约日期 '2026-07-02',时间 '3:45 PM',provider 'Krystyna Reinger');页脚包含 '(774) 555-0500' 和 'support@worcesterwellness.example.com'。 + +**步骤:** + +1. 在 OpnForm 中创建标题为 'Digital Pre-Visit Telehealth Intake Survey' 的空白表单,添加指定字段:Patient Full Name(text)、DOB(date)、Phone Number(phone)、Visit Reason(select, 4 options)、Symptom Severity(rating, max 5)、Symptom Duration(number)、Taking Medications checkbox、条件显示的 Current Medications List(text)、Upload Prior Lab Results(files, 5MB, pdf/jpg/png)、包含 '

Telehealth Service Advisory: This virtual consultation is intended for non-emergency health concerns only. If you are experiencing chest pain, stroke symptoms, severe bleeding, or any other life-threatening condition, please call 911 or proceed to the nearest emergency department right away. By completing and submitting this intake form, you consent to the use of telehealth technology for your care and acknowledge that your personal health information will be transmitted and stored securely in accordance with HIPAA regulations.

' 的 Text Block,以及确认勾选框。将主题设为 'notion',size 设为 'md',dark mode 设为 'light',启用 auto-focus,设置 redirect URL 和 visibility 为 public。 +2. 在同一个 OpnForm 表单中,进入 integrations,添加一个 Email Notification 集成,配置为在每次提交时发送到 'intake-triage@worcesterwellness.example.com'。 +3. 在 OpenEMR 中打开 Riley Gleichner 的病历,编辑人口学信息以更新 phone 为 '(774) 555-0388',然后进入 Patient History Full Edit,将 tobacco use 更新为 'Former smoker, quit 5 years ago',alcohol use 更新为 'Moderate drinker, 1-2 drinks weekly'。 +4. 为 Riley Gleichner 创建一次新的就诊。记录生命体征(BP: 138/88, pulse: 74, temp: 98.5, weight: 215 lbs)。完成 Review of Systems(constitutional: 'Reports mild morning fatigue, no fever, no chills, no significant recent weight change', respiratory: 'Denies cough, shortness of breath, or wheezing; reports mild seasonal nasal congestion')。完成 SOAP note(S: 'Patient presents via telehealth for routine hypertension follow-up. Reports consistent home blood pressure readings averaging 135-140/85-90 mmHg over past month. Denies headaches, dizziness, or chest pain. Compliant with lisinopril 10mg daily. Has been walking 20 minutes most days.', O: 'Telehealth encounter. Patient appears well on video, alert, and conversational. Vitals patient-reported with BP slightly above target range. No acute distress observed.', A: 'Essential hypertension, suboptimal control on current monotherapy despite lifestyle efforts', P: 'Increase lisinopril to 20mg daily. Continue dietary sodium restriction and regular aerobic activity. Order basic metabolic panel in 2 weeks to check renal function and potassium. Home BP log to be submitted weekly via patient portal. Follow up in 6 weeks to reassess.'). 通过 Fee Sheet 添加 ICD-10 code 'I10'。添加 Clinical Instructions 表单,文本为 'Take lisinopril 20mg once daily in the morning starting tomorrow. Continue checking your home blood pressure twice daily (morning and evening) and log readings. Upload your BP log weekly through the patient portal. Maintain a low-sodium diet (target less than 2,000mg sodium per day) and continue daily walking for at least 30 minutes. Schedule a lab visit within 2 weeks for basic metabolic panel. Contact the clinic promptly or seek emergency care if you experience severe headache, blurred vision, chest pain, shortness of breath, swelling of face or hands, or BP readings consistently above 160/100 mmHg.'。然后进入 Calendar,为 Riley Gleichner 创建一次随访预约,provider 'Krystyna Reinger',日期 '2026-07-02',时间 '3:45 PM'。 +5. 在 OnlyOffice 中,创建一个标题为 'Telehealth Visit Summary - Riley Gleichner - 2026-05-21' 的文档,按患者可读的远程医疗就诊摘要来组织:页眉写入诊所名称 'Worcester Wellness Associates'、就诊日期和 'Telehealth Visit Summary' 标识;Patient Information(姓名、DOB '1965-10-02'、phone '(774) 555-0388');Visit Reason(原因和 symptom severity);Clinical Findings(生命体征表格、ROS findings、SOAP Assessment);Treatment Plan(SOAP Plan 和 clinical instructions 文本);Follow-Up(下次预约日期 '2026-07-02',时间 '3:45 PM',provider 'Krystyna Reinger');页脚写入 '(774) 555-0500' 和 'support@worcesterwellness.example.com'。 + +**登录凭据:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_015/description_zh.md b/tasks/uni-m/Healthcare/healthcare_015/description_zh.md new file mode 100644 index 0000000..084c492 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_015/description_zh.md @@ -0,0 +1,18 @@ +**任务要求:** + +作为一名护理协调员,为转诊患者 Mora Ernser 执行护理过渡交接工作流,患者将从医生 'Dr. Janet Crooks' 转至医生 'Dr. Gertrud Kuhic',接收机构为 'Brigham and Women's Hospital - Orthopedic Surgery Department':(1) 在 OpenEMR 中,打开 Mora Ernser 的病历并进入 Patient Dashboard。记录患者的 primary provider、活动中的医疗问题(来自 Issues)、活动中的药物(来自 Issues)以及活动中的过敏(来自 Issues)。进入患者就诊历史,查看最近 4 次就诊,并记录每次的就诊日期、诊断和任何 care plan 条目。进入 Immunizations 并记录最近的一次免疫接种名称和日期。然后创建一次新的转诊就诊:在 Functional and Cognitive Status 表单中填写 functional status observation 'Non-weight-bearing on right lower extremity, uses rolling walker, requires assistance with lower-body ADLs' 和 cognitive status observation 'Alert and oriented x4, MMSE 29/30, intact judgment and reasoning',在 Treatment Plan 表单中填写 goals 'Surgical evaluation for right hip osteoarthritis, pre-operative optimization, post-operative rehabilitation planning, and restoration of ambulatory independence' 以及 target date '2026-11-30',并在 Transfer Summary 表单中填写 reason 'Patient has severe right hip osteoarthritis with progressive functional decline despite conservative management, requiring orthopedic surgical evaluation and likely total hip arthroplasty beyond the scope of pediatric-focused care' 和 receiving facility 'Brigham and Women's Hospital - Orthopedic Surgery Department'。通过 Fee Sheet 添加 ICD-10 codes 'M16.11' 和 'Z47.1'。进入患者的 Disclosure Records 并添加一条新的 disclosure record,recipient 为 'Dr. Gertrud Kuhic',purpose 为 'Care Transition',日期为今天。最后,向 'Dr. Gertrud Kuhic' 发送一条内部 Message,subject 为 'Care Transition Handover — Mora Ernser — Orthopedic Surgery Referral',body 为 'Dear Dr. Kuhic, I am transferring the care of Mrs. Mora Ernser (DOB 1989-06-10) to your orthopedic surgery service at Brigham and Women's Hospital. The patient has advanced right hip osteoarthritis with progressive functional decline and has exhausted conservative management options. She requires surgical evaluation and likely total hip arthroplasty. A complete care transition summary document is attached, including active problems, current medications, allergies, recent encounter history, immunization status, and functional/cognitive assessment. Please confirm receipt and advise if additional imaging (hip X-rays, MRI) or pre-operative workup records should be forwarded prior to her initial consultation. Thank you for assuming her care. — Dr. Janet Crooks',并附加到患者 Mora Ernser。(2) 在 OnlyOffice 中,创建一个标题为 'Care Transition Summary — Mora Ernser — 2026-04-18' 的文档,结构为正式的 Care Transition Summary:页眉包含诊所名称 'Fall River Community Health Center'、转诊日期和 document ID 'CTS-2026-0418-ERNSER-003';Patient Demographics section(姓名、DOB '1989-06-10'、current provider 'Dr. Janet Crooks'、receiving provider 'Dr. Gertrud Kuhic'、receiving facility 'Brigham and Women's Hospital - Orthopedic Surgery Department');Active Problem List section(表格列为 Problem, ICD-10 Code, Status — 使用 Issues 数据填充);Active Medications section(表格列为 Medication, Dosage, Status — 使用 Issues 数据填充);Allergies section(表格列为 Allergen, Reaction, Severity);Recent Encounter Summary section(表格列为 Date, Diagnoses, Care Plan Notes — 使用最近 4 次就诊数据填充);Functional and Cognitive Assessment section(functional: 'Non-weight-bearing on right lower extremity, uses rolling walker, requires assistance with lower-body ADLs',cognitive: 'Alert and oriented x4, MMSE 29/30, intact judgment and reasoning');Immunization Status section(最近一次疫苗及日期);Transfer Plan section(reason: 'Patient has severe right hip osteoarthritis with progressive functional decline despite conservative management, requiring orthopedic surgical evaluation and likely total hip arthroplasty beyond the scope of pediatric-focused care',treatment goals: 'Surgical evaluation for right hip osteoarthritis, pre-operative optimization, post-operative rehabilitation planning, and restoration of ambulatory independence',target date: '2026-11-30');并附上 'Dr. Janet Crooks' 和 'Dr. Gertrud Kuhic' 的签名块。 + +**步骤:** + +1. 在 OpenEMR 中打开 Mora Ernser 的病历。从 Patient Dashboard 和 Issues 页面记录所有活动中的医疗问题、活动中的药物和活动中的过敏。 +2. 进入就诊历史并查看最近 4 次就诊,记录每次的日期、诊断和 care plan 条目。 +3. 进入 Immunizations 并记录最近一次免疫接种的名称和日期。 +4. 创建一次新的就诊。完成 Functional and Cognitive Status 表单(functional: 'Non-weight-bearing on right lower extremity, uses rolling walker, requires assistance with lower-body ADLs',cognitive: 'Alert and oriented x4, MMSE 29/30, intact judgment and reasoning')。完成 Treatment Plan 表单(goals: 'Surgical evaluation for right hip osteoarthritis, pre-operative optimization, post-operative rehabilitation planning, and restoration of ambulatory independence',target date: '2026-11-30')。完成 Transfer Summary 表单(reason: 'Patient has severe right hip osteoarthritis with progressive functional decline despite conservative management, requiring orthopedic surgical evaluation and likely total hip arthroplasty beyond the scope of pediatric-focused care',receiving facility: 'Brigham and Women's Hospital - Orthopedic Surgery Department')。通过 Fee Sheet 添加 ICD-10 codes 'M16.11' 和 'Z47.1'。 +5. 进入 Disclosure Records 并添加一条新记录,recipient 为 'Dr. Gertrud Kuhic',purpose 为 'Care Transition',日期为今天。 +6. 进入 Messages 并向 'Dr. Gertrud Kuhic' 发送一条新消息,subject 为 'Care Transition Handover — Mora Ernser — Orthopedic Surgery Referral',body 为 'Dear Dr. Kuhic, I am transferring the care of Mrs. Mora Ernser (DOB 1989-06-10) to your orthopedic surgery service at Brigham and Women's Hospital. The patient has advanced right hip osteoarthritis with progressive functional decline and has exhausted conservative management options. She requires surgical evaluation and likely total hip arthroplasty. A complete care transition summary document is attached, including active problems, current medications, allergies, recent encounter history, immunization status, and functional/cognitive assessment. Please confirm receipt and advise if additional imaging (hip X-rays, MRI) or pre-operative workup records should be forwarded prior to her initial consultation. Thank you for assuming her care. — Dr. Janet Crooks',并附加到患者 Mora Ernser。 +7. 在 OnlyOffice 中创建文档 'Care Transition Summary — Mora Ernser — 2026-04-18',包含所有部分:demographics、active problems 表、medications 表、allergies 表、encounter summary 表、functional/cognitive assessment、immunization status、transfer plan,以及双重签名块。 + +**登录凭据:** + +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_017/description_zh.md b/tasks/uni-m/Healthcare/healthcare_017/description_zh.md new file mode 100644 index 0000000..160fb07 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_017/description_zh.md @@ -0,0 +1,19 @@ +**任务要求:** + +作为一名健康信息技术经理,执行重复患者记录识别、合并文档和系统审计工作流:(1) 在 OpenEMR 中,进入 Manage Duplicate Patients 页面并扫描潜在的重复患者记录。识别重复对:Latoyia Kertzmann (pid 158) 和 Latoyia Kertzmann (pid 249),依据为匹配的人口学信息。合并前,打开两份患者病历,并分别记录以下内容:活动中的医疗问题(来自 Issues)、活动中的药物(来自 Issues)以及任何过敏条目。进入 Merge Patients 页面,选择 Latoyia Kertzmann (pid 249) 作为 source,Latoyia Kertzmann (pid 158) 作为 target,并执行合并。合并后,打开合并后的患者记录(Latoyia Kertzmann (pid 158)),并验证合并后的 Issues 列表包含两份记录中的所有问题、药物和过敏。进入 System Logs,按今天的日期和包含 'merge' 的事件类型进行筛选,记录日志条目的时间戳和用户。然后进入 Address Book,新增一个联系人 'Dr. Yusuf Abdelrahman',specialty 为 'Gastroenterology',phone 为 '339-555-0617',address 为 '1153 Centre Street, Suite 210, Jamaica Plain, MA 02130'。(2) 在 OnlyOffice 中,创建一个标题为 'Kertzmann Duplicate Patient Merge Audit Report - 2026-03-22' 的文档,结构为正式的 Patient Record Merge Audit Report:页眉包含诊所名称 'Metro West Regional Medical Clinic' 和日期;Merge Summary section 包含 source record (Latoyia Kertzmann (pid 249))、target record (Latoyia Kertzmann (pid 158))、merge date 以及 authorizing user 'Administrator';Pre-Merge Data Comparison section 包含一个表格,列为 Data Element, Source Record Value, Target Record Value, Post-Merge Value — 为两份记录中的每个医疗问题、药物和过敏填充行;System Log Verification section 引用审计日志时间戳并确认日志完整性;Address Book Update section 记录新增的专科联系人;以及 Compliance Certification section,文本为 'I hereby certify that this duplicate patient record merge has been executed in full compliance with HIPAA data integrity requirements under 45 CFR §164.312(c), the ONC Health IT Certification Program record-keeping standards, and the clinic's Health Information Management policy HIM-022; all source-record clinical data has been preserved in the secure audit log for the mandated retention period and is available for regulatory inspection.',并附上 'Administrator' 的签名块。(3) 在 OnlyOffice 中,再创建一个电子表格,标题为 'Duplicate Patient Record Merge Audit Tracker - March 2026',列为:Merge ID, Source Patient, Target Patient, Merge Date, Data Elements Transferred, Verified By, Audit Log Confirmed (Yes/No), Notes。为已完成的合并填充一行。添加第二个工作表 'Outside Specialist Contact Registry',列为:Specialist Name, Specialty, Phone, Address, Date Added — 使用步骤 1 中新增的联系人填充。 + +**步骤:** + +1. 在 OpenEMR 中,进入 Manage Duplicate Patients 并扫描重复项;识别 Latoyia Kertzmann (pid 158) 和 Latoyia Kertzmann (pid 249) 这一对。 +2. 打开两份患者病历,并从每位患者的 Issues 列表中记录活动中的医疗问题、药物和过敏。 +3. 进入 Merge Patients,将 Latoyia Kertzmann (pid 249) 设为 source、Latoyia Kertzmann (pid 158) 设为 target,并执行合并。 +4. 打开 Latoyia Kertzmann (pid 158) 的合并后记录,并验证合并后的 Issues 列表包含两份记录中的所有数据。 +5. 进入 System Logs,按今天的日期筛选 merge 事件,并记录日志条目的时间戳和用户。 +6. 进入 Address Book,新增专科医生 'Dr. Yusuf Abdelrahman',并填写 specialty、phone 和 address。 +7. 在 OnlyOffice 中创建标题为 'Kertzmann Duplicate Patient Merge Audit Report - 2026-03-22' 的文档,包含合并摘要、合并前数据对照表、系统日志验证、地址簿更新和合规认证部分。 +8. 在 OnlyOffice 中创建标题为 'Duplicate Patient Record Merge Audit Tracker - March 2026' 的电子表格,包含一个合并追踪工作表和一个联系人工作表,填入合并数据和专科联系人条目。 + +**登录凭据:** + +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_019/description_zh.md b/tasks/uni-m/Healthcare/healthcare_019/description_zh.md new file mode 100644 index 0000000..a12467f --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_019/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +作为一名单人执业医生,为 3 名预约接受 'Diagnostic Colonoscopy with Possible Polypectomy' 的患者执行特定手术的知情同意工作流和完成情况追踪:(1) 在 OpnForm 中,创建一个知情同意表,标题为 'Colonoscopy Informed Consent Form 2026',包含以下字段:Patient Full Name(text, required)、Date of Birth(date, required)、一个 Text Block (nf-text),HTML 内容描述该手术 '

Procedure Description

Diagnostic colonoscopy is an endoscopic examination of the large intestine (colon) and the distal portion of the small intestine using a flexible fiber-optic colonoscope. The procedure is performed under conscious sedation and allows for direct visualization of the colon mucosa, biopsy of suspicious tissue, and removal of polyps (polypectomy) if encountered. The procedure typically takes 30-60 minutes.

'、一个 Checkbox 字段 'I understand the procedure described above'(required)、一个 Text Block,HTML 内容描述风险 '

Procedure Risks

While colonoscopy is considered very safe, potential risks include bowel perforation, post-polypectomy bleeding, adverse reactions to sedation medications, cardiopulmonary complications, post-procedure infection, and dehydration related to bowel preparation. Severe complications are rare but may require hospitalization or emergency surgery.

'、一个 Multi-Select 字段 'Acknowledged Risks',选项为 'Bowel Perforation'、'Post-Polypectomy Bleeding'、'Sedation Reaction'、'Cardiopulmonary Complications'(required, min selection 4)、一个 Text Block,HTML 内容描述获益 '

Procedure Benefits

Benefits of colonoscopy include early detection of colorectal cancer and precancerous polyps, accurate diagnosis of gastrointestinal symptoms such as bleeding or chronic diarrhea, ability to perform therapeutic interventions during the procedure (polyp removal, biopsy), and significant reduction in colorectal cancer mortality through screening.

'、一个 Select 字段 'Alternative Treatment Discussed',选项为 'Yes - accepted procedure'、'Yes - chose alternative'、'Declined all treatment'(required)、一个 Text field 'Alternative Treatment Details',仅在选择 'Yes - chose alternative' 时条件显示、一个 Checkbox 字段 'I consent to the procedure'(toggle switch option enabled, required)、一个 Page Break,自定义 next button text 为 'Proceed to Signature'、一个 Date field 'Consent Date'(required, prefill today, disable future dates)、一个 Signature field 供患者签名,以及一个 Divider 后接一个 Text field 'Witness Name'(required)。将表单颜色设为 '#16a34a',theme 设为 'minimal',size 设为 'lg',启用 re-fillable form 并将按钮文本设为 'Complete Another Consent',禁用搜索引擎索引,并将可见性设为 public。添加一个 Webhook integration,URL 为 'https://hooks.clinicops.example.com/opnform/colonoscopy-consent'。(2) 在 OpenEMR 中,对 Hettie Torphy:打开其病历,创建一次新的就诊,在 Misc Billing Options 表单中添加 Prior Authorization 条目,authorization number 为 'PA-2026-GI-1',authorized procedure 为 'Diagnostic Colonoscopy with Possible Polypectomy',添加 Clinical Instructions 表单,文本为 'Begin clear liquid diet 24 hours before procedure. Complete bowel prep solution as prescribed the evening prior and morning of procedure. NPO 4 hours before procedure. Hold blood thinners 5 days prior per cardiologist clearance. Arrange transportation home; you cannot drive for 24 hours after sedation.',进入 Issues 添加一个新的医疗问题 'Rectal bleeding, unspecified',ICD-10 code 为 'K62.5',status 为 active,然后进入 Fee Sheet 添加 ICD-10 code 'K62.5' 和 CPT code '45378'。对 Zack Nikolaus:打开其病历,创建一次新的就诊,在 Misc Billing Options 中添加 Prior Authorization 条目,authorization number 为 'PA-2026-GI-2',authorized procedure 为 'Diagnostic Colonoscopy with Possible Polypectomy',添加 Clinical Instructions 表单,文本同上,并通过 Fee Sheet 添加 CPT code '45378'。对 Connie McLaughlin:打开其病历,创建一次新的就诊,在 Misc Billing Options 中添加 Prior Authorization 条目,authorization number 为 'PA-2026-GI-3',authorized procedure 为 'Diagnostic Colonoscopy with Possible Polypectomy',添加 Clinical Instructions 表单,文本同上,通过 Fee Sheet 添加 CPT code '45378',并将 Misc Billing Options 中的 onset date 设为 '2026-04-08'。(3) 在 OnlyOffice 中,创建一个电子表格,标题为 'Colonoscopy Consent and Procedure Tracker 2026',包含两个工作表。Sheet 1 'Consent Documentation Log':列为 Patient Name, DOB, Consent Form Completed (Yes/No), Consent Date, Authorization Number, Pre-Procedure Instructions Given (Yes/No), Additional Issues Documented, CPT Code。为三位患者填充 3 行。Sheet 2 'GI Procedure Schedule':列为 Patient Name, Procedure, Scheduled Date, Pre-Op Clearance Status, Consent Status, Billing Code Entered (Yes/No), Notes。填充 3 行。Hettie Torphy 的 notes 为 'New problem Rectal bleeding, unspecified added'。Connie McLaughlin 的 notes 为 'Onset date 2026-04-08 set'。 + +**步骤:** + +1. 在 OpnForm 中创建知情同意表 'Colonoscopy Informed Consent Form 2026',包含用于 procedure/risks/benefits 的 Text Blocks、用于 acknowledged risks 的 Multi-Select、条件显示的 alternative treatment 字段、toggle switch consent checkbox、Page Break、Signature、带 prefill 且禁用 future dates 的 date、Webhook integration,以及所有指定的表单设置。 +2. 在 OpenEMR 中,打开 Hettie Torphy 的病历,创建一次就诊,在 Misc Billing Options 表单中添加 authorization number 为 'PA-2026-GI-1' 的 Prior Authorization、Clinical Instructions、新增医疗问题 'Rectal bleeding, unspecified'(ICD-10 'K62.5'),并通过 Fee Sheet 添加 ICD-10 和 CPT '45378'。 +3. 在 OpenEMR 中,打开 Zack Nikolaus 的病历,创建一次就诊,在 Misc Billing Options 表单中添加 authorization number 为 'PA-2026-GI-2' 的 Prior Authorization、Clinical Instructions,并通过 Fee Sheet 添加 CPT '45378'。 +4. 在 OpenEMR 中,打开 Connie McLaughlin 的病历,创建一次就诊,在 Misc Billing Options 表单中添加 authorization number 为 'PA-2026-GI-3' 的 Prior Authorization、Clinical Instructions,通过 Fee Sheet 添加 CPT '45378',并在 Misc Billing Options 中将 onset date 设为 '2026-04-08'。 +5. 在 OnlyOffice 中创建电子表格 'Colonoscopy Consent and Procedure Tracker 2026',包含 consent tracking 工作表 'Consent Documentation Log' 和 procedure schedule 工作表 'GI Procedure Schedule',每个工作表填充 3 行,其中 Hettie Torphy 的 notes 为 'New problem Rectal bleeding, unspecified added',Connie McLaughlin 的 notes 为 'Onset date 2026-04-08 set'。 + +**登录凭据:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_021/description_zh.md b/tasks/uni-m/Healthcare/healthcare_021/description_zh.md new file mode 100644 index 0000000..00f6c4d --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_021/description_zh.md @@ -0,0 +1,16 @@ +**任务要求:** + +作为一名护理协调员,为 2 名患者执行儿科健康体检和发育里程碑筛查工作流:(1) 在 OpnForm 中,创建一个发育里程碑筛查表,标题为 'Early Childhood Developmental Screening Form Q2-2026',包含以下字段:Child's Name(text, required)、Date of Birth(date, required)、Age in Months(number, required)、Parent/Guardian Name(text, required)、一个 Select 字段 'Age Group',选项为 '0-6 months'、'7-12 months'、'13-24 months'、'25-36 months'(required)、一个 Matrix 字段 'Developmental Milestones',行包括 'Walks independently'、'Stacks three or more blocks'、'Uses two-word phrases'、'Points to named body parts'、'Follows simple instructions'、'Scribbles with crayon',列包括 'Achieved'、'Emerging'、'Not Yet'、'Unable to Assess'(required)、一个 Number 字段 'Milestones Achieved Count'、一个 Rating 字段 'Parent Concern Level',最大值 5、一个 Checkbox 字段 'Referral Requested by Parent'、一个 Text 字段 'Referral Reason',仅在 Referral Requested 勾选时条件显示、一个 Page Break,next button text 为 'Continue to Growth Data'、一个 Number 字段 'Current Weight (kg)'(required)、一个 Number 字段 'Current Height (cm)'(required)、一个 Number 字段 'Head Circumference (cm)',以及一个用于家长/监护人签名的 Signature field。将表单颜色设为 '#2196F3',theme 设为 'default',border radius 设为 'small',启用 auto-save,并将可见性设为 public。(2) 在 OpenEMR 中,对患者 Connie McLaughlin(age group '13-24 months'):打开其病历,进入 Patient History Full Edit,将 family history 更新为 'Maternal aunt with asthma; paternal grandmother with hypothyroidism; no known congenital disorders in immediate family'。创建一次新的就诊。记录生命体征:weight 11.2, height 84.1, head circumference 47.0, temperature 98.2。通过 Fee Sheet 添加 ICD-10 code 'Z00.129'。添加 Care Plan 表单,goal 为 'Support continued language development and achieve 18-month milestones on schedule',instructions 为 'Encourage two-word phrases; read books daily; limit screen time; schedule next well-child visit at 24 months'。对患者 Lekisha Bosco(age group '25-36 months'):打开其病历,创建一次新的就诊,记录生命体征:weight 14.2, height 95.5, head circumference 49.1, temperature 99.0。进入 Immunizations 并新增一条免疫记录,vaccine name 为 'MMR',manufacturer 为 'Merck',lot number 为 'LOT52918',route 为 'Subcutaneous'。通过 Fee Sheet 添加 ICD-10 code 'Z00.129'。添加 Clinical Notes 表单,内容为 'Patient presents for 32-month well-child visit. Gross motor skills appropriate for age; mild concern regarding fine motor coordination. MMR vaccine administered today without complication. Will monitor fine motor progress at next visit.'。(3) 在 OnlyOffice 中,创建一个电子表格,标题为 'Pediatric Well-Child Visit Tracker Q2-2026',包含三个工作表。Sheet 1 'Growth Vitals':列为 Patient Name, Age Group, Weight (kg), Height (cm), Head Circumference (cm), Temperature, Date — 为两位患者填充 2 行。Sheet 2 'Milestone Status':列为 Milestone, Connie McLaughlin Status, Lekisha Bosco Status — 为 6 个里程碑(从 'Walks independently' 到 'Scribbles with crayon')填充 6 行,状态值为患者 1 的 'Achieved' 到 'Emerging' 以及患者 2 的 'Achieved' 到 'Emerging'。Sheet 3 'Visit Summary':列为 Metric, Connie McLaughlin, Lekisha Bosco — 行包括 Weight Percentile ('45th', '35th')、Height Percentile ('50th', '40th')、Head Circumference Percentile ('55th', '45th')、Immunization Given ('N/A', 'MMR')、Follow-Up Needed ('No - routine 24-month visit', 'Yes - fine motor evaluation at next visit')。在 Sheet 3 上添加一个条形图,对比两位患者的体重和身高百分位。 + +**步骤:** + +1. 在 OpnForm 中创建发育里程碑筛查表,包含全部 13 个指定字段:(1) Child's Name(text, required)、(2) Date of Birth(date, required)、(3) Age in Months(number, required)、(4) Parent/Guardian Name(text, required)、(5) Age Group(select, required)、(6) Developmental Milestones(matrix, 6 rows × 4 columns, required)、(7) Milestones Achieved Count(number)、(8) Parent Concern Level(rating, max 5)、(9) Referral Requested by Parent(checkbox)、(10) Referral Reason(text, conditional on checkbox)、(11) Current Weight in kg(number, required)、(12) Current Height in cm(number, required)、(13) Head Circumference in cm(number)。在第 10 和第 11 个字段之间添加一个 Page Break,next button text 为 'Continue to Growth Data',并在第 13 个字段后添加 Signature field。配置颜色 '#2196F3'、theme 'default'、border radius 'small'、启用 auto-save,并将可见性设为 public。 +2. 在 OpenEMR 中,对 Connie McLaughlin:通过 Patient History Full Edit 将 family history 更新为 'Maternal aunt with asthma; paternal grandmother with hypothyroidism; no known congenital disorders in immediate family',创建就诊,记录生命体征(weight 11.2, height 84.1, head circumference 47.0, temperature 98.2),通过 Fee Sheet 添加 ICD-10 'Z00.129',并添加 Care Plan,goal 为 'Support continued language development and achieve 18-month milestones on schedule',instructions 为 'Encourage two-word phrases; read books daily; limit screen time; schedule next well-child visit at 24 months'。 +3. 在 OpenEMR 中,对 Lekisha Bosco:创建就诊,记录生命体征(weight 14.2, height 95.5, head circumference 49.1, temperature 99.0),新增免疫记录(vaccine 'MMR',manufacturer 'Merck',lot 'LOT52918',route 'Subcutaneous'),通过 Fee Sheet 添加 ICD-10 'Z00.129',并添加 Clinical Notes,内容为 'Patient presents for 32-month well-child visit. Gross motor skills appropriate for age; mild concern regarding fine motor coordination. MMR vaccine administered today without complication. Will monitor fine motor progress at next visit.'。 +4. 在 OnlyOffice 中创建电子表格 'Pediatric Well-Child Visit Tracker Q2-2026',包含三个工作表:Sheet 1 'Growth Vitals',含 growth data(2 行);Sheet 2 'Milestone Status',含 milestone comparison(6 行 × 3 列);Sheet 3 'Visit Summary',含 summary metrics(5 行 × 3 列)。在 Sheet 3 上插入一个条形图对象,对比两位患者的体重和身高百分位。 + +**登录凭据:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_023/description_zh.md b/tasks/uni-m/Healthcare/healthcare_023/description_zh.md new file mode 100644 index 0000000..2ff5b3b --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_023/description_zh.md @@ -0,0 +1,14 @@ +**任务要求:** + +作为一名单人执业医生,为 Norman Rath 执行一次预防保健咨询就诊,并生成个性化患者信函:(1) 在 OpenEMR 中,打开 Norman Rath 的病历并进入 Patient Dashboard。查看并记录患者来自 Issues 的活动医疗问题、来自 Issues 的活动药物以及来自 Issues 的过敏。进入 Patient History Full Edit,更新社会史:tobacco use 为 'Occasional cigar smoker, 2-3 cigars per month',alcohol use 为 'Moderate drinker, 4-5 drinks per week, mostly wine',exercise patterns 为 'Moderately active, cycles 2 times weekly and yard work on weekends'。然后进入 Lab Overview 页面,记录最近一项化验结果的名称和值。创建一次新的就诊。记录生命体征:BP 134/86, pulse 74, temperature 98.5, respiratory rate 15, height 69 in, weight 195 lbs(BMI 将自动计算)。完成 Review of Systems 表单,constitutional 记录为 'No fever, no chills, occasional fatigue after work',cardiovascular 记录为 'No chest pain, no palpitations, denies dyspnea on exertion',psychiatric 记录为 'Mild work-related stress, sleeps well, no depression'。完成 Physical Exam 表单,general appearance 记录为 'Middle-aged male, well-groomed, alert and cooperative, no acute distress',cardiovascular 记录为 'Normal S1 S2, regular rhythm, no murmurs, no peripheral edema, pulses 2+ bilaterally'。完成 SOAP note,Subjective 为 'Patient presents for annual preventive health counseling visit. Reports generally feeling well but wants to address borderline cholesterol and moderate alcohol intake. Interested in strategies to improve cardiovascular health and maintain current activity level.',Objective 为 'Vitals show borderline elevated BP 134/86 and normal heart rate. BMI calculated in overweight range. Physical exam benign. Most recent lipid panel reviewed showing elevated LDL.',Assessment 为 '1. Pre-hypertension/elevated blood pressure 2. Overweight BMI 3. Moderate alcohol consumption 4. Occasional tobacco (cigar) use 5. Borderline dyslipidemia 6. Preventive health maintenance due',Plan 为 '1. Mediterranean-style diet counseling with emphasis on heart-healthy fats 2. Increase aerobic activity to 150 min/week 3. Alcohol moderation - target 3 drinks/week 4. Cigar cessation counseling 5. Repeat lipid panel in 3 months 6. Home BP monitoring with log',Assessment 为 'moderate elevated cardiovascular risk',Plan 为 '1. Mediterranean-style diet counseling with emphasis on heart-healthy fats 2. Increase aerobic activity to 150 min/week 3. Alcohol moderation - target 3 drinks/week 4. Cigar cessation counseling 5. Repeat lipid panel in 3 months 6. Home BP monitoring with log'。添加 Care Plan 表单,goal 为 'Achieve BP <130/80, LDL <100, and BMI <25 within 6 months through lifestyle modification',instructions 为 'Follow Mediterranean diet with emphasis on fish, olive oil, nuts, and vegetables. Engage in 150 minutes moderate aerobic exercise weekly including cycling and brisk walking. Limit alcohol to 3 drinks weekly. Discontinue cigar use. Monitor BP at home twice weekly. Return in 3 months for lipid panel and reassessment.'。通过 Fee Sheet 添加 ICD-10 code 'Z71.3'。通过 Fee Sheet 添加 CPT code '99403'。进入 Patient Education 页面并搜索 topic 'Mediterranean diet cardiovascular health'。最后进入 Calendar,为 Norman Rath 创建一次随访预约,日期 '2026-07-20',时间 '9:30 AM',category 为 'Office Visit',comment 为 'Follow-up for lipid panel recheck, BP monitoring review, and lifestyle modification progress'。(2) 在 OnlyOffice 中,创建一个标题为 'Preventive Health Summary Letter - Norman Rath - April 2026' 的文档,结构为个性化预防保健摘要信:页眉包含诊所名称 'Tewksbury Family Health Associates'、日期,以及患者地址占位符;问候语 'Dear Norman Rath';Health Assessment Summary section,包含生命体征表(BP, pulse, temp, RR, height, weight, BMI from the auto-calculated value)、ROS findings summary 和 physical exam findings;Risk Factors Identified section,列出:tobacco status 'Occasional cigar smoker, 2-3 cigars per month'、alcohol use 'Moderate drinker, 4-5 drinks per week, mostly wine'、exercise level 'Moderately active, cycles 2 times weekly and yard work on weekends'、活动中的医疗问题(来自 Issues review)以及 BMI category interpretation;Lab Results section,注明来自 Lab Overview 的最近一项化验结果名称和值;Personalized Recommendations section,包含四条编号建议:'Adopt a Mediterranean-style diet rich in fish, olive oil, nuts, legumes, and fresh vegetables to lower LDL cholesterol and blood pressure'、'Increase aerobic exercise to at least 150 minutes per week by extending current cycling routine and adding brisk walking sessions'、'Reduce alcohol consumption to no more than 3 drinks per week, favoring red wine over spirits when consuming alcohol'、'Discontinue cigar smoking entirely to eliminate associated cardiovascular and oral cancer risks';Care Plan section,写明 goal 'Achieve BP <130/80, LDL <100, and BMI <25 within 6 months through lifestyle modification' 和 instructions 'Follow Mediterranean diet with emphasis on fish, olive oil, nuts, and vegetables. Engage in 150 minutes moderate aerobic exercise weekly including cycling and brisk walking. Limit alcohol to 3 drinks weekly. Discontinue cigar use. Monitor BP at home twice weekly. Return in 3 months for lipid panel and reassessment.';Follow-Up section,写明安排在 '2026-07-20' at '9:30 AM' 的预约;以及包含 'Dr. Administrator, MD' 的签名块和诊所联系方式 '(978) 555-0400'。 + +**步骤:** + +1. 在 OpenEMR 中打开 Norman Rath 的病历。通过 Patient Dashboard / Issues 查看活动问题、药物和过敏。通过 Patient History Full Edit 更新社会史(tobacco, alcohol, exercise)。在 Lab Overview 查看最近一项化验结果。 +2. 在 OpenEMR 中为 Norman Rath 创建一次新的就诊。记录完整生命体征(BP, pulse, temp, RR, height, weight)。完成 Review of Systems(constitutional, cardiovascular, psychiatric)、Physical Exam(general, cardiovascular)、SOAP note 和 Care Plan。通过 Fee Sheet 添加 ICD-10 和 CPT 代码。搜索 Patient Education 中指定的主题。创建一次随访预约。 +3. 在 OnlyOffice 中创建这封个性化预防保健信,包含所有部分:生命体征表、来自社会史和 Issues 的风险因素、化验结果、四条个性化建议、care plan、随访详情以及医生签名。 + +**登录凭据:** + +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_025/description_zh.md b/tasks/uni-m/Healthcare/healthcare_025/description_zh.md new file mode 100644 index 0000000..037f54f --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_025/description_zh.md @@ -0,0 +1,15 @@ +**任务要求:** + +作为一名患者体验经理,为患者 Huey Connelly 执行一套患者投诉受理、临床复核和正式回复工作流,涉及其在就诊日期 '2026-03-22' 提出的投诉:(1) 在 OpnForm 中,创建一个患者投诉受理表,标题为 'Patient Grievance Documentation and Review Form',包含以下字段:Complaint Reference Number(text, required, auto-increment ID enabled)、Patient Name(text, required)、Date of Incident(date, required, disable future dates)、一个 Select 字段 'Complaint Category',选项为 'Wait Time'、'Staff Communication'、'Clinical Care Quality'、'Billing Dispute'、'Facility Conditions'、'Privacy Concern'(required)、一个 Scale 字段 'Severity Rating'(min 1, max 10, step 1, required)、一个 Rich Text 字段 'Detailed Description of Complaint'(required)、一个 Multi-Select 字段 'Departments Involved',选项为 'Reception'、'Laboratory'、'Radiology'、'Medical Records'(required, allow creation of new options)、一个 Checkbox 字段 'Patient Requests Follow-Up Call'(required)、一个 Phone Number 字段 'Callback Number',仅在 follow-up call checkbox 勾选时条件显示、一个 Select 字段 'Resolution Urgency',选项为 'Immediate'、'Within 48 Hours'、'Standard (5 Business Days)'(required)、一个 Text 字段 'Resolution Urgency Justification',仅在 Resolution Urgency 为 'Immediate' 时条件显示、一个 Page Break,next button text 为 'Proceed to Staff Review Section'、一个 Text 字段 'Reviewing Staff Name'(required)、一个 Date 字段 'Review Date'(required, prefill today)、一个 Rating 字段 'Initial Assessment of Merit',最大值 5、一个 Checkbox 字段 'Escalation Required'(toggle switch option enabled),以及一个用于 reviewing staff 的 Signature field。将表单主题设为 'simple',size 设为 'lg',dark mode 设为 'light',启用 progress bar,将 submit button text 设为 'Submit Complaint Record',配置自定义 CSS '.nf-form { border: 1px solid #004b8d; border-radius: 6px; padding: 12px; background-color: #f7fafc; }',并将可见性设为 public。(2) 在 OpenEMR 中,打开 Huey Connelly 的病历并进入其就诊历史。定位到 '2026-03-22' 这次就诊并查看就诊详情,记录诊断、任何 SOAP notes,以及记录该就诊的医生。进入 Patient Notes 页面,新增一条患者备注,内容为 'Complaint received regarding encounter on 2026-03-22. Patient reports concerns relating to clinical care quality and post-visit instructions. Investigation opened by Patient Experience; clinical record and SOAP documentation under review.',并发送给用户 'dr_dickinson'。然后进入 Office Notes,新增一条 office note,内容为 'Patient Complaint Investigation Initiated - Case CMP-2026-0204: Huey Connelly (PID 152). Complaint concerns encounter dated 2026-03-22 at Harbor Health Clinic. Chart review, SOAP note extraction, and provider discussion in progress. Formal response letter pending.',用于记录投诉调查启动。(3) 在 OnlyOffice 中,创建一个标题为 'Formal Patient Complaint Response Letter - CMP-2026-0204 - Huey Connelly' 的文档,结构为正式的 Patient Complaint Response Letter:页眉包含诊所名称 'Harbor Health Clinic'、日期以及 complaint reference 'CMP-2026-0204';Patient Information section(姓名、DOB '1966-11-17');Complaint Summary section(date of incident '2026-03-22'、category、severity rating、detailed description placeholder 'Patient expressed concerns regarding the clarity of clinical explanations and post-visit instructions provided during the 2026-03-22 encounter. Severity rated at 5/10 by reviewing staff; patient requested a callback and a formal written response.');Clinical Review Findings section(包含步骤 2 中的就诊详情,包括 provider、记录的 diagnoses,以及提取出的 SOAP notes);Investigation Outcome section,结论为 'Complaint partially substantiated — patient-education documentation inadequate; clinical assessment and treatment plan appropriate and within standard of care.';Corrective Actions section,列出 action items 'Deploy standardized written after-visit summary templates across all clinical encounters at Harbor Health Clinic by end of Q2 2026.'、'Conduct provider-level coaching on teach-back methodology and patient-education best practices within 60 days.'、'Launch quarterly patient-education satisfaction survey with results reviewed by the Clinical Quality Committee.';Patient Rights section,文本为 'You have the right to file a complaint without fear of retaliation or impact on your ongoing care. You may request a full copy of your medical record, pursue an independent external review through the Massachusetts Department of Public Health, and be accompanied by a representative of your choosing during any follow-up meetings. Your privacy and protected health information are safeguarded under HIPAA and applicable Massachusetts state law.';以及 'Michael Delacroix, MBA, CPXP' 的签名块,title 为 'Patient Experience Manager'。 + +**步骤:** + +1. 在 OpnForm 中,创建一个新表单 'Patient Grievance Documentation and Review Form',包含 auto-increment complaint reference、patient name、date of incident(disable future dates)、complaint category select、severity scale(1-10)、rich text description、multi-select departments、follow-up call checkbox 与条件 phone number field、resolution urgency select 与条件 justification、page break、reviewer fields、rating for merit assessment、escalation toggle switch,以及 reviewer signature。应用主题 'simple'、size lg、light dark mode、启用 progress bar、设置自定义 CSS,并将其公开发布。 +2. 在 OpenEMR 中,打开 Huey Connelly 的病历,进入 encounter history,并查看 '2026-03-22' 的就诊——记录 provider、diagnoses 和 SOAP note 内容(patient 152 has a SOAP note with subjective 'Sore throat and nasal congestion for 5 days. Mild ear pain.', objective 'Throat erythematous. TMs clear bilaterally. No cervical lymphadenopathy.', assessment 'Upper respiratory infection; Allergic rhinitis', plan 'Adjust metformin dose. A1C in 3 months. Dietitian referral.').进入 Patient Notes 并添加备注 'Complaint received regarding encounter on 2026-03-22. Patient reports concerns relating to clinical care quality and post-visit instructions. Investigation opened by Patient Experience; clinical record and SOAP documentation under review.',发送给 'dr_dickinson'。进入 Office Notes 并添加 'Patient Complaint Investigation Initiated - Case CMP-2026-0204: Huey Connelly (PID 152). Complaint concerns encounter dated 2026-03-22 at Harbor Health Clinic. Chart review, SOAP note extraction, and provider discussion in progress. Formal response letter pending.'。 +3. 在 OnlyOffice 中,创建一个标题为 'Formal Patient Complaint Response Letter - CMP-2026-0204 - Huey Connelly' 的文档,包含页眉(诊所名称、日期、complaint reference)、患者信息、投诉摘要、临床复核结果(provider、diagnoses 以及提取出的 SOAP notes)、调查结论、三项纠正措施、patient rights section,以及经理签名块。 + +**登录凭据:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_026/description_zh.md b/tasks/uni-m/Healthcare/healthcare_026/description_zh.md new file mode 100644 index 0000000..638d310 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_026/description_zh.md @@ -0,0 +1,29 @@ +**任务要求:** + +作为一名公共卫生官员,为一例疑似须上报病例执行传染病报告工作流,涉及患者 Freeda Stamm:(1) 在 OpenEMR 中,打开 Freeda Stamm 的病历并进入 Patient Flow Board,将患者的 visit status 更新为 'In Exam Room - Droplet Precautions'。然后打开患者病历,创建一次新的就诊,并完成 Review of Systems 表单,constitutional 记录为 'Fever 102.3F x 3 days, malaise, headache, generalized myalgia, decreased appetite',respiratory 记录为 'Mild dry cough x 2 days, no dyspnea, no hemoptysis',GI 记录为 'Decreased appetite, mild nausea, no vomiting, no diarrhea, pain with chewing and swallowing'。完成 Physical Exam 表单,general appearance 记录为 'Adult female appearing uncomfortable and febrile, with visible facial swelling, in mild distress',ENT 记录为 'Bilateral parotid gland swelling and tenderness with obliteration of the angle of the mandible, Stensen duct orifices erythematous and edematous, no purulent discharge, posterior pharynx mildly erythematous'。添加 SOAP note,Subjective 为 '40-year-old female presents with 3-day history of fever, headache, and painful bilateral parotid swelling. Reports exposure to college-age nephew with confirmed mumps 16 days ago. Unsure of MMR vaccination status.',Objective 为 'T 102.3F, HR 96, BP 124/80, RR 16, SpO2 98% RA. Prominent bilateral parotid gland enlargement with obliteration of mandibular angle. Stensen duct erythema bilaterally. Lungs clear. No meningismus.',Assessment 为 'Clinically suspected mumps (parotitis) based on classic bilateral parotitis, fever, and documented epidemiologic exposure to confirmed case within incubation window. Pending serologic and PCR confirmation.',Plan 为 'Initiate droplet precautions for 5 days after parotitis onset. Order mumps IgM/IgG serology and RT-PCR from buccal swab. Supportive care with antipyretics, hydration, soft diet, and analgesics. Notify MA DPH per reportable disease protocol within 24 hours. Initiate contact tracing for household and close contacts within prior 25 days; verify MMR vaccination status.'. 进入 Issues 并添加一个新的医疗问题 'Mumps',ICD-10 code 为 'B26.9',status 为 active,并将其链接到当前就诊。进入 Procedure Order 表单并创建一条新的检验订单:procedure provider 选择 'Riverside Medical Center',procedure 选择 'Mumps IgM/IgG Serology with RT-PCR Buccal Swab',clinical notes 填写 'Suspected acute mumps infection with bilateral parotitis and confirmed exposure history. Collect buccal swab from Stensen duct area for RT-PCR, serum for IgM/IgG serology. Patient on droplet precautions.',priority 设为 'URGENT'。再添加第二条医疗问题 'Sialadenitis, unspecified',ICD-10 code 为 'K11.20',status 为 active。进入 Fee Sheet 添加 ICD-10 codes 'B26.9' 和 'K11.20' 以及 CPT code '99214'。向 'dr_hartmann' 发送一条内部 Message,subject 为 'URGENT: Suspected Mumps Case - Class B Reportable Disease',body 为 'Dear Dr. Hartmann, Patient Freeda Stamm presented today with classic bilateral parotitis, fever, malaise, and pain with mastication following documented exposure to a confirmed mumps case (college-age nephew) 16 days ago, well within the incubation window. Bilateral parotid gland swelling obliterates the mandibular angle; Stensen duct orifices demonstrate erythema consistent with mumps parotitis. Mumps IgM/IgG serology and RT-PCR from buccal swab ordered URGENT. Patient placed on droplet precautions with 5-day isolation counseling from parotitis onset. MA DPH notification submitted per Class B reportable disease protocol. Please assist with coordination of MMR vaccination status verification for household contacts and post-exposure guidance. Thank you.',并附加到患者 Freeda Stamm。(2) 在 OpnForm 中,创建一个传染病通知表,标题为 'Massachusetts Mumps and Parotitis Surveillance Notification Form',包含以下字段:Reporting Clinician Name(text, required)、Reporting Date(date, required, prefill today)、Patient Initials(text, required, max char limit 5, show char limit)、Date of Birth(date, required)、一个 Select 字段 'Reportable Condition',选项为 'Mumps'、'Measles (Rubeola)'、'Rubella'、'Varicella'(required)、Date of Symptom Onset(date, required, disable future dates)、一个 Multi-Select 字段 'Presenting Symptoms',选项为 'Fever'、'Cough'、'Diarrhea'、'Rash'、'Fatigue'、'Headache'、'Myalgia'(required, allow creation of new options)、一个 Select 字段 'Lab Confirmation Status',选项为 'Confirmed'、'Probable'、'Suspected'、'Pending'(required)、一个 Text 字段 'Lab Test Type',仅在 Lab Confirmation Status 为 'Confirmed' 或 'Probable' 时条件显示、一个 Checkbox 字段 'Contact Tracing Initiated'(required)、一个 Number 字段 'Number of Close Contacts Identified',仅在 Contact Tracing Initiated 勾选时条件显示、一个 Code Block (nf-code),内容为 'MUMPS / PAROTITIS REPORTING PROTOCOL: +1. Report suspected/confirmed cases to MA DPH within 24 hours: 617-983-6800 +2. Submit electronic notification via MAVEN portal within 24 hours +3. Maintain droplet precautions for 5 days after parotitis onset +4. Collect buccal swab (Stensen duct area) for RT-PCR within 3 days of parotitis onset (preferred) +5. Collect serum for IgM (acute) and IgG (convalescent) serology +6. Identify all household, classroom, workplace, and close contacts exposed within 12-25 days prior to onset +7. Verify MMR vaccination status (2 documented doses) for all contacts; administer MMR if unvaccinated and non-pregnant +8. Exclude case from work, school, and healthcare settings for 5 days after parotitis onset +9. Counsel on transmission prevention via respiratory droplet hygiene +10. Retain case records per 105 CMR 300.000 for minimum 6 years'、一个 Rich Text 字段 'Additional Clinical Details',以及一个 Divider 后接一个用于 reporting clinician 的 Signature field。将表单主题设为 'simple',颜色设为 '#2563EB',presentation 设为 'classic',启用 progress bar,将 submit button text 设为 'Submit Notification',并将可见性设为 public。添加一个 Email Notification integration,每次提交都发送到 'mumps.surveillance@mass.gov'。(3) 在 OnlyOffice 中,创建一个标题为 'Communicable Disease Case Report - MUM-2026-0509-FS' 的文档,结构为面向当地卫生主管部门的正式 Communicable Disease Case Report:页眉包含诊所名称 'Riverside Medical Center'、report date,以及 case reference number 'MUM-2026-0509-FS';Reporting Facility section(facility name,address '100 Health Blvd, Boston, MA 02108',phone '(617) 555-0100');Patient Demographics section(initials derived from Freeda Stamm,DOB '1986-01-12',age,gender 'Female');Clinical Presentation section(date of symptom onset '2026-05-06',来自 ROS findings 的 presenting symptoms,来自步骤 1 的 physical exam findings);Laboratory section(test ordered 'Mumps IgM/IgG Serology with RT-PCR Buccal Swab',collection status 'Buccal swab and serum collected - sent to state reference lab',provider 'Riverside Medical Center');Diagnosis section(primary: 'Mumps' ICD-10 'B26.9',secondary: 'Sialadenitis, unspecified' ICD-10 'K11.20');Treatment and Isolation section(来自 SOAP note 的 plan);Contact Tracing section(status 'Active - household, workplace, and social contacts being identified; MMR vaccination status being verified',number of contacts identified 8);Public Health Actions section,文本为 'MA DPH notified within 24 hours per Class B reportable disease protocol. Patient placed on droplet precautions and counseled on 5-day isolation from parotitis onset, including exclusion from work and public gatherings. MMR vaccination status verification initiated for all household, workplace, and close contacts; catch-up MMR vaccine being administered to susceptible non-pregnant contacts. MAVEN portal electronic notification submitted. Epidemiologic linkage to confirmed source case (nephew) documented with regional surveillance team. Joint investigation coordinated with Boston Public Health Commission for workplace exposure assessment. Patient counseled on respiratory droplet hygiene and transmission prevention measures.';以及 reporting officer 'Dr. Simone Laurent, MPH, Communicable Disease Public Health Reporting Officer' 的签名块。 + +**步骤:** + +1. 在 OpenEMR 中,进入 Patient Flow Board 并将 Freeda Stamm 的 visit status 更新为 'In Exam Room - Droplet Precautions'。然后打开病历并创建一次新的就诊。 +2. 在该就诊中,完成 Review of Systems 表单(constitutional, respiratory, GI findings)、Physical Exam 表单(general appearance, ENT)以及包含指定内容的 SOAP note。 +3. 进入 Issues 并添加两条医疗问题:'Mumps'(ICD-10 'B26.9')和 'Sialadenitis, unspecified'(ICD-10 'K11.20'),均为 active 并链接到该就诊。 +4. 进入 Procedure Order 表单并为 'Mumps IgM/IgG Serology with RT-PCR Buccal Swab' 创建检验订单,provider 为 'Riverside Medical Center',clinical notes 为指定文本,priority 为指定值。然后通过 Fee Sheet 添加两个 ICD-10 codes 和 CPT '99214'。 +5. 向 'dr_hartmann' 发送一条关于该可报告病例的内部 Message,并附加到患者。 +6. 在 OpnForm 中创建标题为 'Massachusetts Mumps and Parotitis Surveillance Notification Form' 的传染病通知表,包含所有指定字段,包括针对 lab confirmation 细节和 contact tracing 数量的条件逻辑、包含报告说明的 code block、email notification integration,以及适当的表单样式。 +7. 在 OnlyOffice 中创建标题为 'Communicable Disease Case Report - MUM-2026-0509-FS' 的正式 Communicable Disease Case Report 文档,包含所有部分:reporting facility、去标识化患者人口学信息、clinical presentation、laboratory information、diagnoses、treatment/isolation plan、contact tracing status,以及 public health actions。 + +**登录凭据:** + +- openemr: admin / pass +- opnform: seeded_admin@example.com / mw-admin-123 +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_030/description_zh.md b/tasks/uni-m/Healthcare/healthcare_030/description_zh.md new file mode 100644 index 0000000..bd79619 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_030/description_zh.md @@ -0,0 +1,16 @@ +**任务要求:** + +作为一名计费协调员,为患者 Lazaro Lang 执行一次先授权拒绝复核和申诉文档工作流,该患者关于 procedure 'Cardiac Stress Test with Myocardial Perfusion Imaging' 的授权已被拒绝(original authorization number 'AUTH-2026-0301-LL',denial date '2026-03-05',denial reason 'Medical necessity not established for non-invasive cardiac imaging'):(1) 在 OpenEMR 中,打开 Lazaro Lang 的病历并进入 Patient Dashboard。记录患者在 Insurance information section 中的 primary insurance。进入 Issues,查看所有活动中的医疗问题,记录问题名称和 ICD-10 代码。进入就诊历史,查看最近 3 次就诊。对每次就诊,记录日期、诊断和任何 care plan 条目。进入 Billing Manager,筛选 Lazaro Lang 的 claims,记录每一条 claim 的状态(pending, billed, or rejected)。然后为 appeal review visit 创建一次新的就诊:在 Clinical Notes 表单中填写 medical necessity justification 'Patient presents with recurrent exertional chest pain and dyspnea with documented risk factors including hypertension and family history of premature coronary artery disease. Resting EKG shows nonspecific ST-T wave changes. Non-invasive stress imaging is essential to risk-stratify this patient and guide appropriate therapy prior to considering invasive cardiac catheterization.',通过 Fee Sheet 添加 ICD-10 codes 'I20.9' 和 'R07.9',并添加 CPT code '78452'。进入 Misc Billing Options 表单,将 referring provider 设为 'Cassi McClure',将 prior authorization number 设为 'AUTH-2026-0322-LL-APL'。(2) 在 OnlyOffice 中,创建一个标题为 'Prior Authorization Appeal Letter - Lang, Lazaro - 2026-03-22' 的文档,结构为正式的 Prior Authorization Appeal Letter:页眉包含诊所名称 'Downtown Family Practice'、日期以及 appeal reference 'APL-2026-00305-LL';Insurance Information section(来自 OpenEMR insurance data 的 payer name、policy number 'POL908577'、group number 'GRP3143');Patient Information section(姓名、DOB '1960-10-19'、member ID 'MID-POL908577-01');Original Authorization section(authorization number 'AUTH-2026-0301-LL'、procedure requested 'Cardiac Stress Test with Myocardial Perfusion Imaging'、date of denial '2026-03-05'、denial reason 'Medical necessity not established for non-invasive cardiac imaging');Clinical Justification section,包含:活动中医疗问题列表(每条显示 Problem, ICD-10 Code, Status — 来自 Issues)、最近就诊摘要列表(每条显示 Date, Diagnoses, Care Plan — 来自最近 3 次就诊),以及叙述性的 medical necessity statement 'Patient presents with recurrent exertional chest pain and dyspnea with documented risk factors including hypertension and family history of premature coronary artery disease. Resting EKG shows nonspecific ST-T wave changes. Non-invasive stress imaging is essential to risk-stratify this patient and guide appropriate therapy prior to considering invasive cardiac catheterization.';Supporting Evidence section 列出 'Resting 12-lead EKG showing nonspecific ST-T wave changes dated 2026-02-18'、'Cardiology consultation note documenting Class II angina symptoms and Framingham risk score'、以及 'Lipid panel and HbA1c laboratory results demonstrating cardiovascular risk profile';Requested Action section 写明具体 procedure 'Cardiac Stress Test with Myocardial Perfusion Imaging',对应 CPT '78452' 和支持性 ICD-10 codes;以及 'Dr. Cassi McClure' 的签名块,NPI 为 '1871574327'。(3) 在 OnlyOffice 中,创建一个标题为 'Claims and Appeal Tracking - Lang, Lazaro - 2026-03-22' 的电子表格,包含两个工作表。Sheet 1 'Claims Register':列为 Patient Name, Encounter Date, ICD-10 Code, CPT Code, Claim Status, Denial Reason, Appeal Filed (Yes/No), Appeal Date — 为最近 3 次就诊加上新的 appeal encounter 填充行。Sheet 2 'Authorization Timeline':列为 Date, Event, Action Taken, Responsible Party, Status — 为以下事件填充行:original procedure request、initial authorization submission、denial received、clinical review completed、appeal encounter created、appeal letter drafted。 + +**步骤:** + +1. 在 OpenEMR 中,打开 Lazaro Lang 的病历,查看 Patient Dashboard 中的保险信息、Issues 中的活动医疗问题(含 ICD-10 codes,包括 Gingivitis (disorder)),以及最近 3 次就诊(包括 2022-01-08)中的日期、诊断和 care plan 条目。 +2. 进入 Billing Manager,筛选 Lazaro Lang 的 claims,检查并记录每一条 claim 的状态(pending, billed, or rejected),并确认至少有一条 claim 的状态为 'pending'。 +3. 创建一次新的 appeal review 就诊:完成包含 medical necessity justification 的 Clinical Notes 表单,通过 Fee Sheet 添加 ICD-10 和 CPT billing codes,并通过 Misc Billing Options 表单设置 referring provider 和新的 authorization number。 +4. 在 OnlyOffice 中,创建正式的 Prior Authorization Appeal Letter 文档 'Prior Authorization Appeal Letter - Lang, Lazaro - 2026-03-22',包含 insurance information、patient information、original authorization details、clinical justification(含活动中问题列表和就诊摘要列表)、supporting evidence('Resting 12-lead EKG showing nonspecific ST-T wave changes dated 2026-02-18'、'Cardiology consultation note documenting Class II angina symptoms and Framingham risk score'、'Lipid panel and HbA1c laboratory results demonstrating cardiovascular risk profile')、requested action,以及带 NPI 的 provider signature。 +5. 在 OnlyOffice 中,创建标题为 'Claims and Appeal Tracking - Lang, Lazaro - 2026-03-22' 的电子表格,Sheet 1 跟踪所有 claims 及其状态和申诉信息,Sheet 2 记录授权与申诉流程的时间顺序。 + +**登录凭据:** + +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_034/description_zh.md b/tasks/uni-m/Healthcare/healthcare_034/description_zh.md new file mode 100644 index 0000000..a760874 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_034/description_zh.md @@ -0,0 +1,15 @@ +**任务要求:** + +作为一名医疗秘书,为患者 Maria Gonzalez 执行新患者入院教育和健康目标设定工作流:(1) 在 OpnForm 中,创建一个新患者入院问卷,标题为 'New Patient Orientation Questionnaire 2026',包含以下字段:Patient Full Name(text, required)、Date of Birth(date, required)、一个 Select 字段 'Preferred Language',选项为 'English'、'Spanish'、'Mandarin'、'Portuguese'(required)、一个 Select 字段 'How Did You Hear About Us',选项为 'Physician Referral'、'Insurance Directory'、'Online Search'、'Friend/Family'、'Other'(required)、一个 URL 字段 'Referring Website',仅在选择 'Online Search' 时条件显示、一个 Multi-Select 字段 'Health Goals',选项为 'Weight Management'、'Chronic Pain Relief'、'Mental Health Support'、'Preventive Care'、'Medication Management'、'Smoking Cessation'(required, min selection 1, allow creation of new options)、一个 Scale 字段 'Current Health Self-Assessment'(min 1, max 10, step 1, required)、一个 Checkbox 字段 'Do you have a primary care provider currently'(required)、一个 Text 字段 'Current Provider Name',仅在当前 provider checkbox 勾选时条件显示、一个 Video (nf-video) embed 元素,URL 为 'https://www.youtube.com/watch?v=orientationwelcome2026'、一个 Checkbox 字段 'I have watched the orientation video'(required)、一个 Page Break,next button text 为 'Continue to Medical History'、一个 Multi-Select 字段 'Chronic Conditions',选项为 'Diabetes'、'Hypertension'、'Asthma'、'Heart Disease'、'Depression'、'Anxiety'、'None'(required)、一个 Text 字段 'Other Conditions',仅在 Chronic Conditions 中未选择 'None' 时条件显示、一个 Date 字段 'Last Physical Exam Date'(disable future dates)、一个 Checkbox 字段 'Currently Taking Medications'(required)、一个 Text 字段 'Medication List',仅在 currently taking medications 勾选时条件显示,以及一个 Email 字段 'Preferred Contact Email'(required)。将表单主题设为 'default',presentation 设为 'focused',启用 first field auto-focus,将提交后的 redirect URL 设为 'https://clinic.example.com/orientation/thank-you',关闭 re-fillable form,启用 editable submissions 并将按钮文本设为 'Update My Information',并将可见性设为 public。(2) 在 OpenEMR 中,为 Maria Gonzalez 创建一条新的患者记录,人口学信息如下:first name 'Maria',last name 'Gonzalez',DOB '1985-07-22',gender 'Female',primary language 'Spanish',address '45 Oakwood Avenue, Springfield, MA 01103',phone '413-555-0198',email 'maria.gonzalez@example.com'。分配 primary provider 'Dr. Elizbeth Dickinson'。然后进入 Patient History Full Edit,录入 past medical history 'Childhood asthma (resolved); appendectomy in 2010; seasonal allergies',family history 'Mother: Type 2 Diabetes; Father: Hypertension; Maternal grandmother: Breast cancer',social history 中 tobacco use 为 'Never smoker',alcohol use 为 'Social drinker (1-2 drinks per week)'。进入 Issues,添加 2 个医疗问题:'Essential Hypertension',ICD-10 'I10'(active)和 'Type 2 Diabetes Mellitus without complications',ICD-10 'E11.9'(active)。创建一次新的就诊。记录生命体征:BP 138/88, pulse 76, temperature 98.4, height 64 in, weight 168 lbs。添加 Care Plan 表单,goal 为 'Achieve BP below 130/80 and HbA1c below 7.0 within 6 months',instructions 为 'Follow DASH diet, exercise 30 minutes 5 days per week, monitor BP daily, take prescribed medications, follow up in 4 weeks'。添加 Clinical Instructions 表单,文本为 'Welcome to the clinic. Complete new patient orientation questionnaire, register for patient portal, schedule lab work within 2 weeks, and attend follow-up appointment in 4 weeks'。通过 Fee Sheet 添加 ICD-10 code 'Z00.00'。(3) 在 OnlyOffice 中,创建一个标题为 'Welcome Letter - Maria Gonzalez' 的文档,结构为个性化 New Patient Welcome Letter:页眉包含诊所名称 'Springfield Community Health Clinic'、日期和 clinic logo placeholder;问候语 'Dear Maria Gonzalez';Welcome section,文本为 'Welcome to Springfield Community Health Clinic! We are delighted to have you as a new patient and are committed to providing you with compassionate, high-quality care tailored to your individual needs.';Your Care Team section,列出 primary provider 'Dr. Elizbeth Dickinson' 及其联系信息;Health Profile Summary section,使用一个表格,行包括 Active Conditions(来自 Issues 的列表)、Current Vitals(BP、pulse、temp、height、weight、BMI from auto-calculation)、Social History(tobacco、alcohol);Your Health Goals section,写明 care plan goal 'Achieve BP below 130/80 and HbA1c below 7.0 within 6 months',以及 instructions 'Follow DASH diet, exercise 30 minutes 5 days per week, monitor BP daily, take prescribed medications, follow up in 4 weeks';Next Steps section,包含编号条目 'Complete your patient portal registration within 7 days'、'Schedule lab work (CBC, CMP, HbA1c, lipid panel) within 2 weeks'、'Attend your follow-up appointment in 4 weeks';Important Resources section,包含 clinic phone '413-555-0100'、patient portal URL 'https://portal.springfieldclinic.example.com'、after-hours number '413-555-0911';结尾为 'We look forward to partnering with you on your health journey and supporting your path to better wellness.',并附上 'Dr. Elizbeth Dickinson' 的签名块。 + +**步骤:** + +1. 在 OpnForm 中创建标题为 'New Patient Orientation Questionnaire 2026' 的表单,包含患者姓名、DOB、preferred language select、referral source select 与条件 URL 字段、multi-select health goals(min 1,允许新增选项)、health self-assessment scale(1-10)、current provider checkbox 与条件文本、nf-video embed、video watched checkbox、page break、chronic conditions multi-select 与条件 other text、last physical exam date(不允许未来日期)、medications checkbox 与条件列表、以及 email 字段。将 presentation 设为 focused,启用 auto-focus,设置 redirect URL、editable submissions,并将表单发布为 public。 +2. 在 OpenEMR 中,创建一个新患者,填写完整人口学信息(姓名、DOB、gender、language、address、phone、email),并分配 primary provider。进入 Patient History Full Edit,录入 past medical、family 和 social history。在 Issues 中添加 2 个带 ICD-10 代码的医疗问题。创建一个就诊,填写生命体征、Care Plan 表单、Clinical Instructions 表单,并在 Fee Sheet 上添加 ICD-10。 +3. 在 OnlyOffice 中,创建一个标题为 'Welcome Letter - Maria Gonzalez' 的文档,包含诊所页眉、个性化问候、care team section、health profile summary 表格(conditions、带 BMI 的 vitals、social history)、health goals section、3 条编号 next steps、包含联系信息的 important resources,以及医生签名块。 + +**登录凭据:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_038/description_zh.md b/tasks/uni-m/Healthcare/healthcare_038/description_zh.md new file mode 100644 index 0000000..801b89e --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_038/description_zh.md @@ -0,0 +1,16 @@ +**任务要求:** + +作为一名公共卫生官员,执行一项与医疗保健相关感染监测工作流,包括员工暴露报告和月度发病率报告:(1) 在 OpnForm 中,创建一个名为 'HAI Staff Exposure Incident Report - March 2026' 的员工暴露报告表单,并包含以下字段:Staff Member Name (text, required), Employee ID (text, required, max char limit 10, show char limit), Date of Exposure (date, required, disable future dates), Time of Exposure (text, required), Location of Exposure (select with options 'Emergency Department', 'Intensive Care Unit', 'Medical-Surgical Ward', 'Operating Room', required), 一个名为 'Exposure Type' 的 Select 字段,选项为 'Needlestick', 'Splash/Spray', 'Airborne', 'Contact', 'Other' (required), 一个 Text 字段 'Other Exposure Details',仅当 Exposure Type 为 'Other' 时条件显示,一个名为 'Source Patient Known' 的 Select 字段,选项为 'Yes', 'No', 'Unknown' (required),一个 Text 字段 'Source Patient Identifier',仅当 Source Patient Known 为 'Yes' 时条件显示,一个名为 'PPE Worn at Time of Exposure' 的 Multi-Select 字段,选项为 'Gloves', 'Gown', 'N95 Mask', 'Surgical Mask', 'Eye Protection', 'Face Shield', 'None' (required),一个 Checkbox 字段 'Immediate First Aid Administered' (required),一个 Rich Text 字段 'Description of Incident' (required),一个 Number 字段 'Days Since Last PPE Training',一个 Select 字段 'Post-Exposure Prophylaxis Initiated',选项为 'Yes', 'No', 'Not Applicable' (required),一个带有下一步按钮文本 'Proceed to Supervisor Review' 的 Page Break,一个 Text 字段 'Supervisor Name' (required),一个 Rating 字段 'Incident Severity Assessment',最大值为 5,一个 Date 字段 'Follow-Up Date' (required),以及一个供主管使用的 Signature 字段。将表单主题设为 'simple',颜色设为 '#1E6091',展示方式设为 'classic',启用自动保存,将提交按钮文本设为 'Submit Exposure Report',将自定义关闭消息设为 'This exposure reporting form is currently closed. For urgent exposures, please contact Employee Health Services directly at ext. 4357.',并将可见性设为 public。(2) 在 OpenEMR 中,对患者 Carolyne Schuster 和 Hipolito Heller(culture-positive infection cases)分别执行以下操作:打开他们的 chart,创建一个新的 encounter,完成一个 Clinical Notes 表单,分别记录感染详情 'Patient presented with fever 38.9C, purulent wound drainage from right forearm IV site. Wound culture obtained — grew MRSA. Admitted to ICU for IV vancomycin therapy. Contact precautions initiated.' 和 'Patient developed profuse watery diarrhea >6x/day during hospitalization on Ward 4. Stool sample positive for Clostridioides difficile toxin. Isolated with contact precautions. Started on oral metronidazole 500mg TID x 10 days.',通过 Fee Sheet 分别为 Carolyne Schuster 添加 ICD-10 code 'A49.02' 和为 Hipolito Heller 添加 ICD-10 code 'A04.7',并前往 Issues,为每位患者添加一个新的 medical problem:'MRSA bloodstream infection (healthcare-associated)',ICD-10 'A49.02'(active,linked to the current encounter)以及 'Clostridioides difficile enterocolitis (healthcare-associated)',ICD-10 'A04.7'(active,linked to the current encounter)。仅对于 Carolyne Schuster,还要完成一个 Procedure Order form:选择 procedure provider 'Dr. Krystyna Reinger',选择 procedure 'Complete Blood Count',输入 clinical notes 'Order CBC with differential to monitor WBC response to vancomycin therapy for MRSA bacteremia. Baseline and q48h until resolution.',并将 priority 设为 'High'。(3) 在 OnlyOffice 中,创建一个名为 'HAI Surveillance Report - March 2026' 的电子表格,包含三个 sheets。Sheet 1 'Infection Cases':列为 Patient Identifier, Infection Type, ICD-10 Code, Date of Positive Culture, Organism, Location Acquired, Antibiotic Prescribed, Treatment Start Date, Outcome — 为两位患者填充 2 行数据(对于 Carolyne Schuster:Infection Type 'MRSA bloodstream infection (healthcare-associated)', ICD-10 Code 'A49.02', Date of Positive Culture '2026-03-05', Organism 'MRSA', Location Acquired 'ICU', Antibiotic Prescribed 'Vancomycin', Treatment Start Date '2026-03-05', Outcome 'Pending'. 对于 Hipolito Heller:Infection Type 'Clostridioides difficile enterocolitis (healthcare-associated)', ICD-10 Code 'A04.7', Date of Positive Culture '2026-03-05', Organism 'C. diff', Location Acquired 'Ward 4', Antibiotic Prescribed 'Metronidazole', Treatment Start Date '2026-03-05', Outcome 'Recovered'). Sheet 2 'Staff Exposures':列为 Staff ID, Exposure Date, Exposure Type, Location, PPE Compliance, PEP Initiated, Severity Rating, Follow-Up Date — 填充 2 行示例数据 'EMP00421, 2026-03-12, Needlestick, Emergency Department, Partial, Yes, 4, 2026-03-19' 和 'EMP00587, 2026-03-18, Splash/Spray, Intensive Care Unit, Full, Not Applicable, 2, 2026-03-25'。Sheet 3 'Monthly Incidence':列为 Metric, Value — 行包括 Surveillance Period ('2026-03-05' to '2026-03-31'), Total HAI Cases (2), Infection Type 1 ('MRSA bloodstream infection (healthcare-associated)', count 1), Infection Type 2 ('Clostridioides difficile enterocolitis (healthcare-associated)', count 1), Staff Exposures Reported (2), Incidence Rate ('2.4 per 1,000 patient-days'), Lab Orders Submitted (1)。在 Sheet 3 上添加一个柱状图,对比 infection type counts。 + +**步骤:** + +1. 在 OpnForm 中,创建员工暴露报告表单 'HAI Staff Exposure Incident Report - March 2026',包含所有指定字段以及条件逻辑(Other Exposure Details、Source Patient Identifier)、multi-select PPE 字段、page break、包含 rating 和 signature 的主管部分,并配置表单设置(theme、color、presentation、auto-save、submit button text、closed message、public visibility)。 +2. 在 OpenEMR 中,对 Carolyne Schuster:打开 chart,创建 encounter,使用 'Patient presented with fever 38.9C, purulent wound drainage from right forearm IV site. Wound culture obtained — grew MRSA. Admitted to ICU for IV vancomycin therapy. Contact precautions initiated.' 完成 Clinical Notes,通过 Fee Sheet 添加 ICD-10 'A49.02',在 Issues 中添加与 encounter 链接的 medical problem 'MRSA bloodstream infection (healthcare-associated)',并完成针对 'Complete Blood Count' 的 Procedure Order,provider 为 'Dr. Krystyna Reinger',priority 为 High。 +3. 对 Hipolito Heller:打开 chart,创建 encounter,使用 'Patient developed profuse watery diarrhea >6x/day during hospitalization on Ward 4. Stool sample positive for Clostridioides difficile toxin. Isolated with contact precautions. Started on oral metronidazole 500mg TID x 10 days.' 完成 Clinical Notes,通过 Fee Sheet 添加 ICD-10 'A04.7',并在 Issues 中添加与 encounter 链接的 medical problem 'Clostridioides difficile enterocolitis (healthcare-associated)'。 +4. 在 OnlyOffice 中,创建电子表格 'HAI Surveillance Report - March 2026',其中 Sheet 1 'Infection Cases' 预填 2 行 infection case 数据(Carolyne Schuster:MRSA/ICU/Vancomycin/Pending;Hipolito Heller:C. diff/Ward 4/Metronidazole/Recovered),Sheet 2 'Staff Exposures'(2 行 exposure 数据),以及 Sheet 3 'Monthly Incidence'(7 项发病率指标,并用柱状图比较 infection type counts)。 + +**登录凭据:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_045/description_zh.md b/tasks/uni-m/Healthcare/healthcare_045/description_zh.md new file mode 100644 index 0000000..4cf7b65 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_045/description_zh.md @@ -0,0 +1,16 @@ +**任务要求:** + +作为一名患者体验经理,执行一项患者满意度调查发布、提交分析和服务改进行动计划工作流:(1) 在 OpnForm 中,创建一个名为 'Q4 2026 Patient Access & Safety Experience Survey' 的患者满意度调查,并包含以下字段:Visit Date (date, required, disable future dates), Provider Seen (text, required), 一个名为 'Overall Visit Satisfaction' 的 Rating 字段,最大值为 5 (required),一个名为 'Wait Time Acceptability' 的 Scale 字段 (min 1, max 10, step 1, required),一个带有选项 'New Patient', 'Follow-Up', 'Urgent Care', 'Telehealth' 的 Select 字段 'Visit Type' (required),一个名为 'Service Area Ratings' 的 Matrix 字段,行包括 'Wayfinding & Signage', 'Medical Records & Portal Access', 'Specialist Referral Process', 'Patient Safety Practices',列包括 'Poor', 'Fair', 'Good', 'Excellent' (required),一个 Slider 字段 'Likelihood to Recommend' (min 0, max 10, step 1),一个 Checkbox 字段 'Experienced a Problem During Visit'(启用 toggle switch option),一个 Rich Text 字段 'Problem Description',仅当 problem checkbox 被勾选时条件显示,一个名为 'Would You Like a Follow-Up' 的 Select 字段,选项为 'Yes - Phone Call', 'Yes - Email', 'No' (required),一个 Email 字段 'Contact Email',仅当 follow-up 为 'Yes - Email' 时条件显示,一个 Phone Number 字段 'Contact Phone',仅当 follow-up 为 'Yes - Phone Call' 时条件显示,一个带有下一步按钮文本 'Submit Feedback' 的 Page Break,以及一个供患者使用的 Signature 字段(optional)。将表单主题设为 'minimal',颜色设为 '#10B981',size 设为 'md',border radius 设为 'small',presentation 设为 'focused',启用提交时的 confetti animation,将 submitted/thank-you 文本设为 'Thank you for helping us enhance your care journey! Your voice directly shapes our patient safety and access improvements.',切换 re-fillable form 并将按钮文本设为 'Submit Another Survey',禁用搜索引擎索引,并将可见性设为 public。配置一个 Email Notification 集成,每次提交时发送到 'patient.access@clinic.local'。(2) 在 OpenEMR 中,前往 Batch Communication Tool 并选择所有 patients 进行 communication — 编写一封批量电子邮件,主题为 'Your Voice Matters — Share Your Access & Safety Experience',正文为 'Dear Patient, as part of our ongoing commitment to safe, accessible, and patient-centered care, we invite you to complete our Q4 2026 Patient Access & Safety Experience Survey. Your candid input on wayfinding, medical records access, specialist referrals, and safety practices will directly inform our quality improvement initiatives for the coming year. The survey takes approximately 5 minutes. Thank you for partnering with us in delivering safer, smoother care. — Patient Access Committee',邀请 patients 完成调查。然后前往 Office Notes 并添加一条新的 office note,文本为 'Q4 2026 Patient Access & Safety Experience Survey Program officially launched today. This survey cycle prioritizes four high-impact service areas: wayfinding/signage, medical records portal access, specialist referral workflow, and patient safety practices. All clinical and administrative staff are asked to encourage patient participation. Batch email distributed to all active patients. Results will feed the 2027 Annual Quality & Safety Plan. Weekly dashboards will be posted in the staff lounge.',用于宣布调查项目启动。前往 Report: Daily Summary 并选择日期范围 '2026-10-01' to '2026-10-15' — 提取该期间的精确 total encounter count。(3) 在 OnlyOffice 中,创建一个名为 'Q4 2026 Patient Access & Safety Experience Survey Analysis' 的电子表格,包含三个 sheets。Sheet 1 'Raw Responses':列为 Response #, Visit Date, Provider, Overall Satisfaction (1-5), Wait Time Score (1-10), Visit Type, Likelihood to Recommend (0-10), Problem Reported (Yes/No) — 使用样本数据填充 5 行:'1, 2026-10-02, Dr. Pouros, 5, 10, Telehealth, 10, No', '2, 2026-10-04, Dr. Dickinson, 3, 5, Follow-Up, 6, Yes', '3, 2026-10-06, Dr. Kuhic, 4, 8, New Patient, 8, No', '4, 2026-10-09, Dr. Reinger, 2, 4, Urgent Care, 4, Yes', '5, 2026-10-13, Dr. Hartmann, 4, 7, Follow-Up, 9, No'. Sheet 2 'Quality Metrics':列为 Metric, Value — 行包括 Total Responses(使用 Sheet 1 Response # 列、排除表头的 COUNTA 公式),Average Overall Satisfaction(使用 Sheet 1 Overall Satisfaction 列的 AVERAGE 公式),Average Wait Time Score(使用 Sheet 1 Wait Time Score 列的 AVERAGE 公式),Average NPS Score(使用 Sheet 1 Likelihood to Recommend 列的 AVERAGE 公式),Problems Reported Count(使用 Sheet 1 Problem Reported 列中 'Yes' 的 COUNTIF 公式),Follow-Up Requested Count(输入样本数据中请求 follow-up 的响应数量),以及 Daily Encounter Volume from Report(输入从 OpenEMR Daily Summary report 中提取的精确 total encounter count)。Sheet 3 'Safety Action Plan':列为 Service Area, Average Rating, Priority (High/Medium/Low), Improvement Action, Responsible Party, Target Date — 为每个 service area 填充 4 行:'Wayfinding & Signage',rating '3.0',action 'Redesign facility signage with multi-language wayfinding, install digital directory kiosks in main lobby, and add color-coded floor guides';'Medical Records & Portal Access',rating '2.8',action 'Launch patient portal onboarding clinic, simplify records request workflow, and publish video tutorials for portal self-service';'Specialist Referral Process',rating '3.4',action 'Implement centralized referral coordinator role, automate referral status notifications, and reduce referral-to-appointment turnaround to under 10 days';'Patient Safety Practices',rating '4.3',action 'Maintain current safety protocols; add quarterly patient safety town halls and expand medication reconciliation at every visit'。 + +**步骤:** + +1. 在 OpnForm 中,创建一个新的空白表单 'Q4 2026 Patient Access & Safety Experience Survey'。添加所有指定字段:Visit Date (date, disable future dates), Provider Seen (text), Overall Visit Satisfaction (rating, max 5), Wait Time Acceptability (scale 1-10), Visit Type (select with 4 options), Service Area Ratings (matrix with 4 rows × 4 columns), Likelihood to Recommend (slider 0-10), Experienced a Problem (checkbox, toggle switch), Problem Description (rich text, conditional on problem checkbox), Would You Like a Follow-Up (select with 3 options), Contact Email (email, conditional on 'Yes - Email'), Contact Phone (phone, conditional on 'Yes - Phone Call'), Page Break, and Signature。配置表单设置:theme、color、size md、border radius small、focused presentation、submission confetti、thank-you text、re-fillable with button text、disable indexing、public visibility。向 'patient.access@clinic.local' 添加 Email Notification 集成。 +2. 在 OpenEMR 中,前往 Batch Communication Tool,选择 all patients,并编写一封批量电子邮件,主题为 'Your Voice Matters — Share Your Access & Safety Experience',正文为 'Dear Patient, as part of our ongoing commitment to safe, accessible, and patient-centered care, we invite you to complete our Q4 2026 Patient Access & Safety Experience Survey. Your candid input on wayfinding, medical records access, specialist referrals, and safety practices will directly inform our quality improvement initiatives for the coming year. The survey takes approximately 5 minutes. Thank you for partnering with us in delivering safer, smoother care. — Patient Access Committee'。前往 Office Notes 并添加一条新的 office note,文本为 'Q4 2026 Patient Access & Safety Experience Survey Program officially launched today. This survey cycle prioritizes four high-impact service areas: wayfinding/signage, medical records portal access, specialist referral workflow, and patient safety practices. All clinical and administrative staff are asked to encourage patient participation. Batch email distributed to all active patients. Results will feed the 2027 Annual Quality & Safety Plan. Weekly dashboards will be posted in the staff lounge.'。 +3. 在 OpenEMR 中,前往 Report: Daily Summary,日期范围为 '2026-10-01' to '2026-10-15',并提取该期间的精确 total encounter count。记录该数字以供 OnlyOffice 电子表格使用。 +4. 在 OnlyOffice 中,创建一个新的电子表格 'Q4 2026 Patient Access & Safety Experience Survey Analysis'。在 Sheet 1 'Raw Responses' 上,创建 8 列表头并使用提供的样本响应数据填充 5 行。在 Sheet 2 'Quality Metrics' 上,创建 Metric/Value 列并填充 7 行:对 Total Responses 使用 COUNTA 公式,对 Average Overall Satisfaction、Average Wait Time Score 和 Average NPS Score 使用 AVERAGE 公式(全部引用 Sheet 1 数据范围),对 Problems Reported Count 使用 COUNTIF 公式,对 Follow-Up Requested Count 手动输入,并输入从 OpenEMR Daily Summary report 提取的精确 encounter volume。在 Sheet 3 'Safety Action Plan' 上,创建 6 列表头,并为每个 service area 使用 ratings、priorities、actions 和 target dates 填充 4 行。 + +**登录凭据:** + +- opnform: seeded_admin@example.com / mw-admin-123 +- openemr: admin / pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Healthcare/healthcare_048/description_zh.md b/tasks/uni-m/Healthcare/healthcare_048/description_zh.md new file mode 100644 index 0000000..8a44360 --- /dev/null +++ b/tasks/uni-m/Healthcare/healthcare_048/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +作为一名护理协调员,执行一项针对 3 名疫苗接种记录不完整患者的免疫接种历史审核和补种计划工作流:(1) 在 OpenEMR 中,对患者 Cyrstal Labadie:打开其 chart,前往 Immunizations 页面并查看完整的 immunization history — 记录疫苗名称和接种日期。前往 Patient History Full Edit 并记录过去的 medical history。前往 Issues 并查看 active allergies。通过与预期计划比较来识别缺失的疫苗:MMR, Tdap, IPV, Varicella, Hepatitis B。前往 Calendar 并为 Cyrstal Labadie 创建一个新的 appointment,时间为 '2026-05-12' at '09:30',provider 为 'Lorinda Pouros',category 为 'Office Visit',comment 为 'Immunization catch-up visit - review MMR, Tdap, IPV, Varicella, Hep B'。对患者 Numbers Mohr:打开其 chart,前往 Immunizations 并查看历史记录。前往 Issues 并查看 active medical problems and allergies。通过与相同的预期计划比较来识别缺失的疫苗。前往 Calendar 并创建一个 appointment,时间为 '2026-05-13' at '10:00',provider 为 'Elizbeth Dickinson',category 为 'Office Visit',comment 为 'Catch-up immunization appointment for adult vaccines'。对患者 Adrianne Simonis:打开其 chart,前往 Immunizations 并查看历史记录。前往 Issues 并查看 active allergies。通过与相同的预期计划比较来识别缺失的疫苗。前往 Calendar 并创建一个 appointment,时间为 '2026-05-14' at '14:00',provider 为 'Krystyna Reinger',category 为 'Office Visit',comment 为 'Catch-up vaccination visit - prioritize MMR and Tdap'。(2) 在 OpnForm 中,创建一个名为 'Immunization Catch-Up Consent Form 2026' 的免疫补种同意表单,并包含以下字段:Patient Name (text, required), Date of Birth (date, required), Parent/Guardian Name (text, required), 一个名为 'Vaccines Due' 的 Multi-Select 字段,选项为 'MMR', 'Tdap', 'IPV', 'Varicella', 'Hepatitis B' (required, min selection 1),一个 Checkbox 字段 'Patient Has Egg Allergy' (required),一个 Text 字段 'Egg Allergy Severity',仅当 egg allergy checkbox 被勾选时条件显示,一个 Checkbox 字段 'History of Adverse Vaccine Reaction' (required),一个 Rich Text 字段 'Previous Reaction Details',仅当 adverse reaction checkbox 被勾选时条件显示,一个 Date 字段 'Preferred Appointment Date' (disable past dates),一个 Select 字段 'Consent Decision',选项为 'Consent to All Listed Vaccines', 'Consent to Selected Vaccines Only', 'Decline All Vaccines' (required),一个 Multi-Select 字段 'Declined Vaccines',仅当 Consent Decision 为 'Consent to Selected Vaccines Only' 时条件显示,选项为 'MMR', 'Tdap', 'IPV', 'Varicella', 'Hepatitis B',一个带有下一步按钮文本 'Sign Consent' 的 Page Break,以及一个供 parent/guardian 使用的 Signature 字段。将表单颜色设为 '#2563EB',theme 设为 'default',size 设为 'lg',启用 progress bar,将 submit button text 设为 'Submit Consent Form',并将 visibility 设为 public。(3) 在 OnlyOffice 中,创建一个名为 'Immunization_Audit_CatchUp_2026Q2' 的电子表格,包含两个工作表。Sheet 1 'Patient Immunization Gaps':列为 Patient Name, Missing Vaccine, Reason Missing, Next Action, Target Date — 为 3 名患者各填充 2 行(对于 Cyrstal Labadie:Missing Vaccine 'MMR',Reason Missing 'No documented MMR in childhood records',Next Action 'Schedule MMR dose #1',Target Date '2026-05-12';Missing Vaccine 'Tdap',Reason Missing 'Last Tdap >10 years ago',Next Action 'Administer Tdap booster',Target Date '2026-05-12'。对于 Numbers Mohr:Missing Vaccine 'IPV',Reason Missing 'No adult IPV series documented',Next Action 'Review vaccine history and administer IPV',Target Date '2026-05-13';Missing Vaccine 'Hepatitis B',Reason Missing 'Incomplete Hep B series',Next Action 'Complete Hep B series',Target Date '2026-05-13'。对于 Adrianne Simonis:Missing Vaccine 'Varicella',Reason Missing 'No varicella immunity documentation',Next Action 'Check immunity records and vaccinate if needed',Target Date '2026-05-14';Missing Vaccine 'MMR',Reason Missing 'No MMR booster documented',Next Action 'Schedule MMR booster',Target Date '2026-05-14'). Sheet 2 'Catch-Up Schedule Summary':列为 Metric, Value — 行包括 Total Patients Reviewed (3), Total Missing Vaccines Identified (6), Appointments Scheduled (3), Vaccine Types Needed ('MMR, Tdap, IPV, Varicella, Hepatitis B'), Earliest Appointment Date ('2026-05-12'), Latest Appointment Date ('2026-05-14'). Add a bar chart on Sheet 2 comparing missing vaccine counts by type. + +**步骤:** + +1. 在 OpenEMR 中,对 Cyrstal Labadie:打开 chart,查看 Immunizations、Patient History Full Edit、Issues,并创建 Calendar appointment '2026-05-12' at '09:30' with provider 'Lorinda Pouros', category 'Office Visit', comment 'Immunization catch-up visit - review MMR, Tdap, IPV, Varicella, Hep B'。 +2. 对 Numbers Mohr:打开 chart,查看 Immunizations 和 Issues,并创建 Calendar appointment '2026-05-13' at '10:00' with provider 'Elizbeth Dickinson', category 'Office Visit', comment 'Catch-up immunization appointment for adult vaccines'。 +3. 对 Adrianne Simonis:打开 chart,查看 Immunizations 和 Issues,并创建 Calendar appointment '2026-05-14' at '14:00' with provider 'Krystyna Reinger', category 'Office Visit', comment 'Catch-up vaccination visit - prioritize MMR and Tdap'。 +4. 在 OpnForm 中,创建 'Immunization Catch-Up Consent Form 2026',包含所有指定字段、条件逻辑、page break 和 signature,并按要求设置表单外观与可见性。 +5. 在 OnlyOffice 中,创建电子表格 'Immunization_Audit_CatchUp_2026Q2',Sheet 1 填充 3 名患者共 6 条 missing vaccine 记录,Sheet 2 汇总 6 项指标并添加对比 missing vaccine counts 的柱状图。 + +**登录凭据:** + +- openemr: admin / pass +- opnform: seeded_admin@example.com / mw-admin-123 +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Software/software_002/description_zh.md b/tasks/uni-m/Software/software_002/description_zh.md new file mode 100644 index 0000000..ba0e4df --- /dev/null +++ b/tasks/uni-m/Software/software_002/description_zh.md @@ -0,0 +1,16 @@ +**任务要求:** + +对 data-analyzer 和 todo-api 项目执行一次测试执行审计。在 code-server 中,打开集成终端,进入每个项目目录,并运行项目的测试命令(data-analyzer 使用 `pytest tests/test_analyzer.py -v`,todo-api 使用 `make test`)。解析每次运行的输出并记录:tests passed、tests failed,以及 pass rate percentage(passed / (passed + failed) * 100,四舍五入到两位小数)。创建一个 Baserow 数据库 "Regression Test Audit March 2026",其中包含一个名为 "Test Execution Audit" 的表,字段为 Project (primary text), Tests Passed (number), Tests Failed (number), Pass Rate (number with 2 decimals), Pass/Fail (single-select: Pass/Fail), Captured At (date)。添加 exactly two rows——每个项目一行——使用测得的计数;当 pass rate >= 85.00 时将 Pass/Fail 设为 Pass,否则设为 Fail。在 OpenProject 项目 "product-catalog" 中,创建一个 type 为 Task 的单个 work package,subject 为 "Test Execution Audit Report",并在 description 中包含测得的 pass rates、passed/failed counts,以及每个项目相对于阈值 85.00 是通过还是未通过。 + +**步骤:** + +1. 在 code-server terminal 中,cd 到 data-analyzer 并运行 `pytest tests/test_analyzer.py -v`,然后解析输出以提取 tests passed 和 tests failed 的数量,并计算 pass rate percentage +2. 对 todo-api 重复上述操作,使用 `make test` +3. 在 Baserow 中,创建 "Regression Test Audit March 2026" 和 "Test Execution Audit" schema(Project, Tests Passed, Tests Failed, Pass Rate, Pass/Fail, Captured At),并添加 exactly two rows,填入测得的计数、计算得到的 pass rates,以及根据 85.00 评估的 Pass/Fail +4. 在 OpenProject "product-catalog" 中,创建一个单独的 Task work package,subject 为 "Test Execution Audit Report",description 列出这两个项目各自的 measured pass rate、passed/failed counts,以及是否相对于阈值 85.00 通过或未通过 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_004/description_zh.md b/tasks/uni-m/Software/software_004/description_zh.md new file mode 100644 index 0000000..059985d --- /dev/null +++ b/tasks/uni-m/Software/software_004/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +规划一个同步的两周 sprint,名为 "Sprint Synchronize 2025-W10",覆盖两个团队(Backend 和 Data),开始于 2025-03-03,结束于 2025-03-17。在 OpenProject 项目 "Data Analytics Pipeline" 中,创建一个名为 "Sprint Synchronize 2025-W10" 的 Version,并设置指定的开始和结束日期以及 status "open"。为每个团队创建 exactly 4 个 work packages(subject 以 "[Backend]" 或 "[Data]" 为前缀),类型均为 Feature,分配到 version "Sprint Synchronize 2025-W10",并使 estimated time 值分别总和为 team A 的 32 和 team B 的 28。对于 team A 中 exactly one work package,添加一个 "follows" relation 指向 team B 中 exactly one work package,以建模跨团队依赖。在 code-server 中,打开 todo-api 项目,并在 todo-api/app.py 的顶部添加单行注释 "# Sprint Sprint Synchronize 2025-W10: integration touchpoint" 并保存。创建一个 Baserow 数据库 "Sprint Capacity Planner",其中包含一个名为 "Sprint Capacity" 的表(字段:Team [primary text], Planned Hours [number], Work Package Count [number], Has Cross-Team Dep [boolean]),并添加 exactly two rows,反映 OpenProject 中的 counts 和 sums。 + +**步骤:** + +1. 在 OpenProject "Data Analytics Pipeline" 中,创建 Version "Sprint Synchronize 2025-W10",日期为 2025-03-03 到 2025-03-17 +2. 为每个团队创建 4 个 Feature work packages,使用指定的 subject prefix 约定,全部分配到该 version,并设置 estimated hours,使其总和达到指定的团队总计 +3. 在 team A 的一个 work package 和 team B 的一个 work package 之间添加 exactly one "follows" relation +4. 在 code-server 中,在 todo-api/app.py 顶部添加指定的注释行并保存 +5. 在 Baserow 中,创建 "Sprint Capacity Planner" 和 "Sprint Capacity" 表,然后用聚合后的 planned hours 和 work package counts 填充两行 + +**登录凭据:** + +- openproject: admin / AdminPass123! +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_005/description_zh.md b/tasks/uni-m/Software/software_005/description_zh.md new file mode 100644 index 0000000..bc8346a --- /dev/null +++ b/tasks/uni-m/Software/software_005/description_zh.md @@ -0,0 +1,18 @@ +**任务要求:** + +在 Frontend Audit Insights 中开展一次面向前端依赖的技术资产清查和陈旧依赖审计。首先,在 code-server 中打开集成终端,读取 blog-engine/package.json 和 weather-dashboard/package.json;提取每个 package.json 的 'dependencies' 部分中的每一项(不要包含 devDependencies),并保留其精确固定版本字符串。创建一个 Baserow 数据库,名为 "Frontend Dependency Audit 2026",并包含一个名为 "Dependency Inventory" 的表,字段为 Project (primary text), Dependency Name (text), Current Version (text), Manifest File (text), Captured At (date), Stale (boolean)。为每个提取出的 dependency 插入一行,Captured At 设为 2026-04-15;若 dependency 的 major version 低于 3,或者它出现在 ['express', 'ejs', 'react'] 列表中,则将 Stale 设为 true,否则设为 false。在 Metabase 中,创建一个名为 "Frontend Audit Insights" 的 collection,并在其中针对 Baserow Postgres database 保存两个 questions:(1) "Dependencies by Project" — 一个条形图,显示按 Project 分组的 dependency 数量;(2) "Stale vs Current" — 一个饼图,显示按 Stale 分组的行数。创建一个名为 "Frontend Dependency Health" 的 Metabase dashboard,放在 "Frontend Audit Insights" 中,并将这两个 questions 作为 cards 添加进去。在 OpenProject 项目 "Marketing Website" 中,创建 exactly one type 为 Task 的 work package,subject 为 "Upgrade stale dependencies: 2026-04-15",priority 为 High,并在 description 中逐行列出每个 stale dependency,格式为 " / @ "。 + +**步骤:** + +1. 在 code-server 中,打开 terminal 并查看 blog-engine/package.json 和 weather-dashboard/package.json;记录 'dependencies' 部分中的每一项(不要包含 devDependencies)及其精确版本字符串。 +2. 在 Baserow 中,创建数据库 "Frontend Dependency Audit 2026" 和表 "Dependency Inventory",字段为 Project, Dependency Name, Current Version, Manifest File, Captured At, Stale;为每个提取出的 dependency 插入一行,Captured At=2026-04-15,并按规则计算 Stale。 +3. 在 Metabase 中,创建 collection "Frontend Audit Insights";针对 Baserow Postgres database 保存两个 questions——条形图 "Dependencies by Project"(按 Project 分组计数)和饼图 "Stale vs Current"(按 Stale 分组计数)。 +4. 创建一个 Metabase dashboard "Frontend Dependency Health",位于 "Frontend Audit Insights" 中,并将两个 saved questions 作为 cards 添加。 +5. 在 OpenProject 项目 "Marketing Website" 中,创建一个单独的 Task work package,标题为 "Upgrade stale dependencies: 2026-04-15",priority 为 High;其 description 必须逐行列出每个 stale dependency,格式为 " / @ "。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_006/description_zh.md b/tasks/uni-m/Software/software_006/description_zh.md new file mode 100644 index 0000000..053fc35 --- /dev/null +++ b/tasks/uni-m/Software/software_006/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +为三个服务建立一个 SLO registry 和 error-budget dashboard。在 Baserow 中,创建一个名为 "Platform SLO Registry" 的数据库,其中包含一个名为 "Service SLOs" 的表(字段:Service [primary text], SLO Type [single-select: Availability/Latency/ErrorRate], Target [number with 2 decimals], Current [number with 2 decimals], Budget Remaining [number with 2 decimals], Breaching [boolean])。精确插入三行,每个服务各一行,服务名称为 ["payments-gateway", "auth-service", "inventory-api"],并使用来自 [["Availability", 99.95, 99.88], ["Latency", 180.00, 165.40], ["ErrorRate", 0.50, 0.72]] 的相应 target 和 current 值;对于 Availability,Budget Remaining 计算为 Target - Current,对于 Latency 和 ErrorRate,Budget Remaining 计算为 Current - Target(四舍五入到 2 位小数);当 Budget Remaining < 0 时将 Breaching 设为 true,否则设为 false。在 Metabase 中,为 Baserow Postgres database connection 触发一次 database schema sync,使新的 "Service SLOs" 表可见,然后创建一个名为 "Platform SLO Targets vs Current" 的 saved question,针对该 database 返回每行的 Service, SLO Type, Target, Current, Budget Remaining,以 table 显示,并保存到 collection "Platform Reliability"。创建一个名为 "Platform Error Budget Tracker" 的 Metabase dashboard,位于同一个 collection 中,并将该 question 作为 card 添加进去。在 OpenProject 项目 "Infrastructure Upgrade" 中,为每一行 Breaching=true 的记录创建一个 Bug work package,subject 为 "SLO breach: ()",priority 为 High,description 为 "Current=, Target=, Budget Remaining="。 + +**步骤:** + +1. 在 Baserow 中,创建数据库 "Platform SLO Registry" 和表 "Service SLOs",包含指定字段;从 ["payments-gateway", "auth-service", "inventory-api"] 以及 [["Availability", 99.95, 99.88], ["Latency", 180.00, 165.40], ["ErrorRate", 0.50, 0.72]] 插入 exactly three rows,并按定义的规则计算 Budget Remaining 和 Breaching +2. 在 Metabase 中,为 Baserow Postgres database 触发 database schema sync,使 "Service SLOs" 表可被发现;如有需要创建 collection "Platform Reliability";保存一个 table question "Platform SLO Targets vs Current",针对 Baserow 显示所有三行的 Service, SLO Type, Target, Current, Budget Remaining +3. 创建一个 Metabase dashboard "Platform Error Budget Tracker",位于 "Platform Reliability" 中,并将 saved question 作为 card 添加 +4. 在 OpenProject 项目 "Infrastructure Upgrade" 中,为每一行 Breaching=true 的记录创建一个 Bug work package,标题为 "SLO breach: ()",priority 为 High,使用所需的 description 格式 + +**登录凭据:** + +- baserow: admin@example.com / Admin1234 +- code-server: (no username) / 8a128206e2177bce1e48e565 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_008/description_zh.md b/tasks/uni-m/Software/software_008/description_zh.md new file mode 100644 index 0000000..9b3d199 --- /dev/null +++ b/tasks/uni-m/Software/software_008/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +为本季度搭建一个 engineering OKR tracker。在 Baserow 中,创建一个数据库 "Engineering OKRs Q3 2026",包含两个表。Table 1 "Objectives"(字段:Objective ID [primary text], Title [text], Owner [text], Quarter [text])——使用以下 objectives 精确插入 5 行:[('OBJ-1','Scale observability coverage','Priya Patel','Q3-2026'),('OBJ-2','Improve checkout conversion','Marco Rossi','Q3-2026'),('OBJ-3','Harden data pipeline quality','Elena Volkov','Q3-2026'),('OBJ-4','Modernize mobile experience','Jamal Harris','Q3-2026'),('OBJ-5','Grow API gateway adoption','Sophie Laurent','Q3-2026')]。Table 2 "Key Results"(字段:KR ID [primary text], Objective ID [link to Objectives table], Description [text], Target [number], Current [number], Progress Pct [number with 1 decimal], Status [single-select: OnTrack/AtRisk/OffTrack])——使用以下数据精确插入 10 行:[('KR-1','OBJ-1','Instrument 100% of production services with tracing',100,95),('KR-2','OBJ-1','Reduce alert noise by 40%',40,10),('KR-3','OBJ-2','Lift checkout conversion to 4.5%',450,420),('KR-4','OBJ-2','Reduce cart abandonment to 55%',55,68),('KR-5','OBJ-3','Achieve 99% data freshness SLA',99,97),('KR-6','OBJ-3','Resolve 30 data quality incidents',30,12),('KR-7','OBJ-4','Ship 15 redesigned mobile screens',15,14),('KR-8','OBJ-4','Improve mobile crash-free rate to 99.8%',998,994),('KR-9','OBJ-5','Migrate 25 services behind the API gateway',25,8),('KR-10','OBJ-5','Onboard 10 external API consumers',10,2)];将 Progress Pct 计算为 round(Current / Target * 100, 1);当 Progress Pct >= 75 时将 Status 设为 OnTrack,当 Progress Pct >= 40 时设为 AtRisk,否则设为 OffTrack。在 Metabase 中,创建一个 collection "Engineering OKRs Q3 2026",并针对 Baserow Postgres database 保存三个 questions:(1) "KR Status Breakdown" — 一个饼图,按 Status 分组统计 Key Results 数量;(2) "Average Progress by Objective" — 一个条形图,按 Objective ID 分组统计 Progress Pct 平均值;(3) "Off-Track KRs" — 一个 table,列出每一行 Status=OffTrack 的 KR ID, Description, Current, Target, Progress Pct,并按 Progress Pct 升序排序。创建一个 dashboard "Engineering OKRs Q3 2026 Dashboard",位于 "Engineering OKRs Q3 2026" 中,并将所有三个 questions 作为 cards 添加进去。在 OpenProject 项目 "API Gateway" 中,为每个 Status=OffTrack 的 Key Result 创建一个 Task work package,subject 为 "Recover KR: ",priority 为 High,description 为 "Target=, Current=, Progress=%". + +**步骤:** + +1. 在 Baserow 中,创建数据库 "Engineering OKRs Q3 2026" 和 tables "Objectives" 与 "Key Results",并使用指定 schema 和 link field +2. 从 [('OBJ-1','Scale observability coverage','Priya Patel','Q3-2026'),('OBJ-2','Improve checkout conversion','Marco Rossi','Q3-2026'),('OBJ-3','Harden data pipeline quality','Elena Volkov','Q3-2026'),('OBJ-4','Modernize mobile experience','Jamal Harris','Q3-2026'),('OBJ-5','Grow API gateway adoption','Sophie Laurent','Q3-2026')] 插入 5 行到 Objectives,并从 [('KR-1','OBJ-1','Instrument 100% of production services with tracing',100,95),('KR-2','OBJ-1','Reduce alert noise by 40%',40,10),('KR-3','OBJ-2','Lift checkout conversion to 4.5%',450,420),('KR-4','OBJ-2','Reduce cart abandonment to 55%',55,68),('KR-5','OBJ-3','Achieve 99% data freshness SLA',99,97),('KR-6','OBJ-3','Resolve 30 data quality incidents',30,12),('KR-7','OBJ-4','Ship 15 redesigned mobile screens',15,14),('KR-8','OBJ-4','Improve mobile crash-free rate to 99.8%',998,994),('KR-9','OBJ-5','Migrate 25 services behind the API gateway',25,8),('KR-10','OBJ-5','Onboard 10 external API consumers',10,2)] 插入 10 行到 Key Results,并按阈值计算 Progress Pct 和 Status +3. 在 Metabase 中,创建 collection "Engineering OKRs Q3 2026" 并保存三个指定 questions,针对 Baserow +4. 创建 dashboard "Engineering OKRs Q3 2026 Dashboard",位于 "Engineering OKRs Q3 2026" 中,并添加所有三个 questions 作为 cards +5. 在 OpenProject 项目 "API Gateway" 中,为每个 Status=OffTrack 的 Key Result 创建一个 Task work package,使用精确的 subject 和 description 格式 + +**登录凭据:** + +- baserow: admin@example.com / Admin1234 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_009/description_zh.md b/tasks/uni-m/Software/software_009/description_zh.md new file mode 100644 index 0000000..fe5a21a --- /dev/null +++ b/tasks/uni-m/Software/software_009/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +建立一个 Architecture Decision Record (ADR) governance workflow。在 code-server 中,创建一个新文件夹位于 devops-configs/docs/adr/,并在其中创建 exactly 3 个 markdown 文件,命名为 ['005-secrets-management.md', '006-container-orchestration.md', '007-backup-strategy.md']。每个文件必须严格包含五行,顺序如下:第 1 行 "# ADR-: "(其中 NNN 是文件名中的零填充编号,Title 是来自 ['Secrets Management Solution for Production Workloads', 'Container Orchestration Platform Selection', 'Backup and Disaster Recovery Strategy'] 的对应条目),第 2 行 "Status: Review",第 3 行 "Date: 2025-06-10",第 4 行 "Author: DevOps Engineering Guild",第 5 行为来自 ['We need to centralize secret storage and rotation to eliminate plaintext credentials from source control and improve auditability.', 'We need to select a container orchestration platform capable of running stateful and stateless workloads with automated scaling and self-healing.', 'We need to define a comprehensive backup and disaster recovery strategy that meets our RTO and RPO targets across all tier-1 systems.'] 的对应 context sentence。保存每个文件。在 Baserow 中,创建一个名为 "ADR Decision Registry" 的数据库,包含一个名为 "ADR Registry" 的表(字段:ADR ID [primary text], Title [text], Status [single-select: Draft/Review/Approved/Implemented], Author [text], Reviewer [text], Created Date [date], Review Duration Days [number]);将上述 ADR 作为 exactly 3 rows 导入,设置 Status 为 Review,Reviewer 来自 ['Emma Wilson', 'Frank Nguyen', 'Grace Patel'],Created Date 为 2025-06-10,Review Duration Days 为 0。在 OpenProject 项目 "DevOps Automation" 中,为每个 ADR 创建 exactly one Epic-type work package,subject 为 "Implement ADR-<NNN>: <Title>",assignee 为 OpenProject Admin,priority 为 Normal,并在 description 中包含单行 "Linked ADR file: devops-configs/docs/adr/<filename>"。 + +**步骤:** + +1. 在 code-server 中,打开 devops-configs 项目,并使用 File Explorer 创建文件夹 docs/adr/ +2. 使用来自 ['005-secrets-management.md', '006-container-orchestration.md', '007-backup-strategy.md'] 的文件名创建 3 个 ADR markdown 文件,并用来自 ['Secrets Management Solution for Production Workloads', 'Container Orchestration Platform Selection', 'Backup and Disaster Recovery Strategy'] 的标题和来自 ['We need to centralize secret storage and rotation to eliminate plaintext credentials from source control and improve auditability.', 'We need to select a container orchestration platform capable of running stateful and stateless workloads with automated scaling and self-healing.', 'We need to define a comprehensive backup and disaster recovery strategy that meets our RTO and RPO targets across all tier-1 systems.'] 的 context 填充精确的五行结构;保存每个文件 +3. 在 Baserow 中,创建数据库 "ADR Decision Registry" 和 "ADR Registry" 表,并使用指定 field types +4. 将 exactly 3 rows 插入 ADR Registry,每个 ADR 一行,Status=Review,reviewers 来自 ['Emma Wilson', 'Frank Nguyen', 'Grace Patel'],Created Date=2025-06-10,Review Duration Days=0 +5. 在 OpenProject 项目 "DevOps Automation" 中,为每个 ADR 创建 exactly 3 个 Epic work packages——每个 ADR 一个——使用规定的 subject pattern、assignee OpenProject Admin、priority Normal,并在 description 中链接 ADR 文件名 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_012/description_zh.md b/tasks/uni-m/Software/software_012/description_zh.md new file mode 100644 index 0000000..5808c8c --- /dev/null +++ b/tasks/uni-m/Software/software_012/description_zh.md @@ -0,0 +1,14 @@ +**任务要求:** + +为 todo-api 服务发布一个 API endpoint registry 和 deprecation tracker。在 code-server 中,打开 todo-api 项目,并使用 Search panel(Ctrl+Shift+F),将范围限定为 files="todo-api/**" 并启用 regex,查找每一个匹配模式 @(app|bp)\.route\( 的 Flask route registration;记录每个 endpoint 的 HTTP method、URL path、source file 和 line number。在 Baserow 中,创建一个名为 "TodoAPI Endpoint Governance" 的数据库,其中包含一个名为 "API Endpoint Registry" 的表(字段:Endpoint ID [primary text, formatted EP-<NNN>], Method [single-select: GET/POST/PUT/PATCH/DELETE], Path [text], Source File [text], Line Number [number], Version [single-select: v1/v2/v3], Status [single-select: Active/Deprecated/Removed], Deprecation Date [date, nullable])。按照 Source File 字母顺序然后按 Line Number 升序的确定性顺序,为每一个发现的 route 插入 exactly one row,Endpoint IDs 分配为 EP-001, EP-002, ...;Version 根据 [["/api/v1/", "v1"], ["/api/v2/", "v2"], ["/api/v3/", "v3"], ["/health", "v1"]](按 Path 键控)进行设置,所有行的 Status=Active,Deprecation Date=null。 + +**步骤:** + +1. 在 code-server 中,打开 todo-api 项目;使用 Search panel,并启用 regex 和文件范围 "todo-api/**",查找匹配 @(app|bp)\.route\( 的 route registrations;收集每个匹配项的 method、path、file、line number +2. 在 Baserow 中,创建数据库 "TodoAPI Endpoint Governance" 和 "API Endpoint Registry" 表;按规定的确定性顺序为每个 endpoint 插入一行,使用连续的 Endpoint IDs 以及来自 [["/api/v1/", "v1"], ["/api/v2/", "v2"], ["/api/v3/", "v3"], ["/health", "v1"]] 的 Version 分配 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_014/description_zh.md b/tasks/uni-m/Software/software_014/description_zh.md new file mode 100644 index 0000000..1254846 --- /dev/null +++ b/tasks/uni-m/Software/software_014/description_zh.md @@ -0,0 +1,18 @@ +**任务要求:** + +在 todo-api 和 blog-engine 项目中清点并治理 feature flags。在 code-server 中,打开全局 Search panel(Ctrl+Shift+F),启用 regex mode,并将搜索范围中的 'files to include' 设为 "todo-api/**,blog-engine/**",使用 regex pattern FEATURE_FLAG_([A-Z0-9_]+)\s*=。记录每个 hit 的 project、file path、line number,以及捕获到的 flag name。创建一个名为 "Feature Flag Governance" 的 Baserow 数据库,并包含一个名为 "Feature Flags" 的表(字段:Flag Name [primary text], Project [single-select: todo-api/blog-engine], File Path [text], Line Number [number], Default State [single-select: Enabled/Disabled], Owner [text], Target Removal Date [date], Status [single-select: Active/Sunset/Removed])。按 Project 字母顺序、再按 File Path、再按 Line Number 升序,为每个发现的 flag 插入一行;根据 {"NEW_CHECKOUT": {"default_state": "Enabled", "owner": "alice@example.com", "target_removal_date": "2026-05-15"}, "DARK_MODE": {"default_state": "Enabled", "owner": "bob@example.com", "target_removal_date": "2026-08-30"}, "LEGACY_AUTH": {"default_state": "Disabled", "owner": "carol@example.com", "target_removal_date": "2026-04-10"}, "BETA_COMMENTS": {"default_state": "Disabled", "owner": "dave@example.com", "target_removal_date": "2026-12-01"}, "EXPERIMENTAL_SEARCH": {"default_state": "Enabled", "owner": "eve@example.com", "target_removal_date": "2026-06-20"}}(一个按 flag name 键控的 JSON mapping,字段为 default_state、owner、target_removal_date)填充 Default State、Owner 和 Target Removal Date;当 Target Removal Date 在 2026-07-01 当天或之前时将 Status 设为 Sunset,否则设为 Active。在 "Feature Flags" 表上创建一个按 Status 分组的 Kanban view。在 Metabase 中,前往 Admin → Databases,并为 Baserow Postgres database 手动同步 schema,使新的 Feature Flags 表可见。然后创建一个名为 "Feature Flag Governance Q2 2026" 的 collection,并针对 Baserow Postgres database 保存两个 questions:(1) "Flags by Project and State" — 一个条形图,按 Project 分组并按 Default State 拆分,显示 flag 数量;(2) "Sunset Flag Schedule" — 一个 table,列出每一行 Status=Sunset 的 Flag Name, Project, Target Removal Date,并按 Target Removal Date 升序排序。创建一个名为 "Feature Flag Sunset Dashboard" 的 Metabase dashboard,位于该 collection 中,并将两个 questions 作为 cards 添加进去。在 OpenProject 项目 "demo-project" 中,为每个 Sunset flag 创建 exactly one Task work package,subject 为 "Remove feature flag: <Flag Name>",assignee 为 Baserow row 中的 Owner,due date 为 Target Removal Date,priority 为 Normal。 + +**步骤:** + +1. 在 code-server 中,运行一个针对两个项目文件夹的 regex search,使用 pattern FEATURE_FLAG_([A-Z0-9_]+)\s*=,并收集每个匹配项的 project、file path、line number 和 flag name +2. 创建 Baserow database "Feature Flag Governance" 和表 "Feature Flags",使用指定字段;按照提供的 {"NEW_CHECKOUT": {"default_state": "Enabled", "owner": "alice@example.com", "target_removal_date": "2026-05-15"}, "DARK_MODE": {"default_state": "Enabled", "owner": "bob@example.com", "target_removal_date": "2026-08-30"}, "LEGACY_AUTH": {"default_state": "Disabled", "owner": "carol@example.com", "target_removal_date": "2026-04-10"}, "BETA_COMMENTS": {"default_state": "Disabled", "owner": "dave@example.com", "target_removal_date": "2026-12-01"}, "EXPERIMENTAL_SEARCH": {"default_state": "Enabled", "owner": "eve@example.com", "target_removal_date": "2026-06-20"}} JSON mapping 插入一行,并根据 2026-07-01 应用 Status 规则 +3. 为 Feature Flags 表添加一个按 Status 单选字段分组的 Kanban view +4. 在 Metabase 中,打开 Admin → Databases,并为 Baserow Postgres database 手动同步 schema,使 Feature Flags 表出现;然后创建 collection "Feature Flag Governance Q2 2026",保存两个指定 questions,并将它们组合进 dashboard "Feature Flag Sunset Dashboard" +5. 在 OpenProject 项目 "demo-project" 中,为每个 Sunset flag 创建一个 Task work package,使用精确的 subject、assignee、due date 和 priority + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_018/description_zh.md b/tasks/uni-m/Software/software_018/description_zh.md new file mode 100644 index 0000000..796492b --- /dev/null +++ b/tasks/uni-m/Software/software_018/description_zh.md @@ -0,0 +1,13 @@ +**任务要求:** + +针对 todo-api 和 blog-engine 项目运行一次安全漏洞审计,关注依赖 CVEs。在 code-server 中,打开 File Explorer,进入每个项目,并在编辑器中打开 todo-api/requirements.txt 和 blog-engine/package.json;提取每个其 pinned version 恰好匹配以下脆弱条目之一的 dependency:[{"library": "Flask", "version": "2.0.1"}, {"library": "Jinja2", "version": "3.0.1"}, {"library": "SQLAlchemy", "version": "1.4.22"}, {"library": "requests", "version": "2.25.1"}, {"library": "express", "version": "4.17.1"}, {"library": "ejs", "version": "3.1.6"}, {"library": "marked", "version": "2.0.0"}, {"library": "lodash", "version": "4.17.20"}]。在 Baserow 中,创建一个名为 "Dependency Security Audit 2025Q1" 的数据库,并包含一个名为 "CVE Registry" 的表(字段:CVE ID [primary text], Project [single-select: todo-api/blog-engine], Library Name [text], Vulnerable Version [text], Fixed Version [text], CVSS Score [number with 1 decimal], Severity [single-select: Critical/High/Medium/Low], Discovered Date [date])。 + +**步骤:** + +1. 在 code-server 中,打开 todo-api/requirements.txt 和 blog-engine/package.json,并识别每个 pinned version 出现在 [{"library": "Flask", "version": "2.0.1"}, {"library": "Jinja2", "version": "3.0.1"}, {"library": "SQLAlchemy", "version": "1.4.22"}, {"library": "requests", "version": "2.25.1"}, {"library": "express", "version": "4.17.1"}, {"library": "ejs", "version": "3.1.6"}, {"library": "marked", "version": "2.0.0"}, {"library": "lodash", "version": "4.17.20"}] 中的每一个 dependency。 +2. 在 Baserow 中,创建数据库 "Dependency Security Audit 2025Q1" 和表 "CVE Registry",使用完全指定的 schema(字段:CVE ID [primary text], Project [single-select: todo-api/blog-engine], Library Name [text], Vulnerable Version [text], Fixed Version [text], CVSS Score [number with 1 decimal], Severity [single-select: Critical/High/Medium/Low], Discovered Date [date])。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_021/description_zh.md b/tasks/uni-m/Software/software_021/description_zh.md new file mode 100644 index 0000000..0a5b9ba --- /dev/null +++ b/tasks/uni-m/Software/software_021/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +构建一个工程招聘漏斗分析系统。在 Baserow 中,创建一个名为 "Engineering Hiring Pipeline" 的数据库,包含两张表。表 1 "Open Positions"(字段:Position ID [primary text,格式化为 POS-<NNN>,从 POS-001 开始]、Role Title [text]、Level [single-select: Junior/Mid/Senior/Staff/Principal]、Hiring Manager [text]、Team [single-select,取值为 ['Platform', 'Frontend', 'Data', 'Security', 'DevOps']]、Date Opened [date]、Headcount Approved [boolean])——使用以下数据精确插入 6 行:[{"Role Title": "Senior Backend Engineer", "Level": "Senior", "Hiring Manager": "Lane Mahon", "Team": "Platform", "Date Opened": "2026-01-12", "Headcount Approved": true}, {"Role Title": "Staff Frontend Engineer", "Level": "Staff", "Hiring Manager": "Elizabeth Cunningham", "Team": "Frontend", "Date Opened": "2026-01-20", "Headcount Approved": true}, {"Role Title": "Mid Data Engineer", "Level": "Mid", "Hiring Manager": "Jane Dradder", "Team": "Data", "Date Opened": "2026-02-03", "Headcount Approved": true}, {"Role Title": "Principal Security Engineer", "Level": "Principal", "Hiring Manager": "Latisha Mazon", "Team": "Security", "Date Opened": "2026-02-10", "Headcount Approved": false}, {"Role Title": "Junior DevOps Engineer", "Level": "Junior", "Hiring Manager": "John Marshall", "Team": "DevOps", "Date Opened": "2026-02-18", "Headcount Approved": true}, {"Role Title": "Senior Platform Engineer", "Level": "Senior", "Hiring Manager": "Lane Mahon", "Team": "Platform", "Date Opened": "2026-02-25", "Headcount Approved": false}]。表 2 "Candidate Pipeline"(字段:Candidate ID [primary text,格式化为 CAND-<NNN>,从 CAND-001 开始]、Position ID [link to Open Positions]、Stage [single-select: Sourced/Screen/Technical/Onsite/Offer/Hired/Rejected]、Days In Pipeline [number]、Last Updated [date]、Offer Status [single-select: None/Pending/Accepted/Declined])——使用以下数据精确插入 10 行:[{"Position ID": "POS-001", "Stage": "Onsite", "sourced_date": "2026-02-15", "Last Updated": "2026-03-10", "Offer Status": "None"}, {"Position ID": "POS-001", "Stage": "Offer", "sourced_date": "2026-02-01", "Last Updated": "2026-03-12", "Offer Status": "Pending"}, {"Position ID": "POS-002", "Stage": "Technical", "sourced_date": "2026-02-20", "Last Updated": "2026-03-11", "Offer Status": "None"}, {"Position ID": "POS-002", "Stage": "Screen", "sourced_date": "2026-03-01", "Last Updated": "2026-03-08", "Offer Status": "None"}, {"Position ID": "POS-003", "Stage": "Hired", "sourced_date": "2026-02-05", "Last Updated": "2026-03-14", "Offer Status": "Accepted"}, {"Position ID": "POS-003", "Stage": "Rejected", "sourced_date": "2026-02-10", "Last Updated": "2026-02-25", "Offer Status": "Declined"}, {"Position ID": "POS-004", "Stage": "Sourced", "sourced_date": "2026-03-05", "Last Updated": "2026-03-05", "Offer Status": "None"}, {"Position ID": "POS-005", "Stage": "Screen", "sourced_date": "2026-02-28", "Last Updated": "2026-03-09", "Offer Status": "None"}, {"Position ID": "POS-005", "Stage": "Technical", "sourced_date": "2026-02-22", "Last Updated": "2026-03-13", "Offer Status": "None"}, {"Position ID": "POS-006", "Stage": "Sourced", "sourced_date": "2026-03-08", "Last Updated": "2026-03-08", "Offer Status": "None"}];将 Days In Pipeline 计算为候选人在 candidates 数据中的 sourced date 与 2026-03-15 之间的整数天数。在 "Candidate Pipeline" 上添加一个名为 "Funnel" 的 Kanban 视图,并按 Stage 字段分组。 在 Metabase 中,创建一个名为 "Hiring Analytics" 的 collection,并在该 collection 中针对 Baserow Postgres 数据库保存三个 question:(1) "Funnel by Stage" —— 按 Stage 分组的候选人数柱状图;(2) "Average Days-In-Pipeline by Team" —— 将 Candidate Pipeline 行与 Open Positions 连接后,按 Team 分组的 Days In Pipeline 平均值柱状图;(3) "Open Positions by Level" —— 按 Level 分组的 Open Positions 数量饼图,并过滤 Headcount Approved = true。在 Metabase 仪表板中创建一个名为 "Hiring Funnel Snapshot" 的 dashboard,放入该 collection 中,将其描述设为 "Hiring funnel snapshot as of 2026-03-15",并将这三个 question 全部作为卡片添加进去。在 OpenProject 项目 "Internal Tools" 中,为 "Open Positions" 中每一行且 Headcount Approved = true 的职位创建恰好一个 Task-type work package,主题为 "Recruit: <Role Title> (<Level>)",assignee = Donald Wright,priority 为 Normal,描述精确为 "Team: <Team>; Hiring Manager: <Hiring Manager>; Opened: <Date Opened>"。 + +**步骤:** + +1. 在 Baserow 中,创建数据库 "Engineering Hiring Pipeline" 以及两张表,使用完全相同的 schema;用 positions 数据 ([{"Role Title": "Senior Backend Engineer", "Level": "Senior", "Hiring Manager": "Lane Mahon", "Team": "Platform", "Date Opened": "2026-01-12", "Headcount Approved": true}, {"Role Title": "Staff Frontend Engineer", "Level": "Staff", "Hiring Manager": "Elizabeth Cunningham", "Team": "Frontend", "Date Opened": "2026-01-20", "Headcount Approved": true}, {"Role Title": "Mid Data Engineer", "Level": "Mid", "Hiring Manager": "Jane Dradder", "Team": "Data", "Date Opened": "2026-02-03", "Headcount Approved": true}, {"Role Title": "Principal Security Engineer", "Level": "Principal", "Hiring Manager": "Latisha Mazon", "Team": "Security", "Date Opened": "2026-02-10", "Headcount Approved": false}, {"Role Title": "Junior DevOps Engineer", "Level": "Junior", "Hiring Manager": "John Marshall", "Team": "DevOps", "Date Opened": "2026-02-18", "Headcount Approved": true}, {"Role Title": "Senior Platform Engineer", "Level": "Senior", "Hiring Manager": "Lane Mahon", "Team": "Platform", "Date Opened": "2026-02-25", "Headcount Approved": false}]) 和 candidates 数据 ([{"Position ID": "POS-001", "Stage": "Onsite", "sourced_date": "2026-02-15", "Last Updated": "2026-03-10", "Offer Status": "None"}, {"Position ID": "POS-001", "Stage": "Offer", "sourced_date": "2026-02-01", "Last Updated": "2026-03-12", "Offer Status": "Pending"}, {"Position ID": "POS-002", "Stage": "Technical", "sourced_date": "2026-02-20", "Last Updated": "2026-03-11", "Offer Status": "None"}, {"Position ID": "POS-002", "Stage": "Screen", "sourced_date": "2026-03-01", "Last Updated": "2026-03-08", "Offer Status": "None"}, {"Position ID": "POS-003", "Stage": "Hired", "sourced_date": "2026-02-05", "Last Updated": "2026-03-14", "Offer Status": "Accepted"}, {"Position ID": "POS-003", "Stage": "Rejected", "sourced_date": "2026-02-10", "Last Updated": "2026-02-25", "Offer Status": "Declined"}, {"Position ID": "POS-004", "Stage": "Sourced", "sourced_date": "2026-03-05", "Last Updated": "2026-03-05", "Offer Status": "None"}, {"Position ID": "POS-005", "Stage": "Screen", "sourced_date": "2026-02-28", "Last Updated": "2026-03-09", "Offer Status": "None"}, {"Position ID": "POS-005", "Stage": "Technical", "sourced_date": "2026-02-22", "Last Updated": "2026-03-13", "Offer Status": "None"}, {"Position ID": "POS-006", "Stage": "Sourced", "sourced_date": "2026-03-08", "Last Updated": "2026-03-08", "Offer Status": "None"}]) 插入并将 Days In Pipeline 按 2026-03-15 计算。 +2. 在 Baserow 中,为 Candidate Pipeline 添加名为 "Funnel" 的 Kanban 视图,按 Stage 排列。 +3. 在 Metabase 中,创建 collection "Hiring Analytics",并按精确名称、图表类型、分组和过滤器保存这三个指定 question,目标数据库为 Baserow Postgres。 +4. 在 Metabase 中,创建 dashboard "Hiring Funnel Snapshot" 于 "Hiring Analytics" collection 内,将其描述设为 "Hiring funnel snapshot as of 2026-03-15",并将这三个 question 全部作为卡片加入。 +5. 在 OpenProject 项目 "Internal Tools" 中,为每个 Headcount Approved 职位(POS-001、POS-002、POS-003、POS-005)创建一个 Normal 优先级的 Task work package,主题为 "Recruit: <Role Title> (<Level>)",assignee 为 Donald Wright,描述精确为 "Team: <Team>; Hiring Manager: <Hiring Manager>; Opened: <Date Opened>"。 + +**登录凭据:** + +- baserow: admin@example.com / Admin1234 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_023/description_zh.md b/tasks/uni-m/Software/software_023/description_zh.md new file mode 100644 index 0000000..214446d --- /dev/null +++ b/tasks/uni-m/Software/software_023/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +针对库 "typescript",在项目 ["tabler", "weather-dashboard", "todo-api", "blog-engine"] 上执行一个依赖升级活动。在 code-server 中,使用全局 Search 面板(Ctrl+Shift+F)并启用正则表达式,通过 "files to include" 限定为 "tabler/**,weather-dashboard/**,todo-api/**,blog-engine/**",定位每一个包含 "typescript" 的 manifest 文件(requirements.txt 或 package.json);对于每个命中项,打开该文件并记录项目名、manifest 路径以及当前固定版本字符串。在 Baserow 中,创建数据库 "TypeScript Upgrade Campaign July 2026",并创建表 "Upgrade Inventory"(字段:Project [primary text]、Manifest Path [text]、Current Version [text]、Target Version [text]、Migration Complexity [single-select: Low/Medium/High]、Status [single-select: Pending/InProgress/Done]、Captured At [date]),按 Project 的字母顺序为每个发现的项目恰好插入一行,其中 Current Version 来自 manifest,Target Version = "5.4.5",Migration Complexity 依据 {"tabler": "High", "weather-dashboard": "Medium", "todo-api": "Low", "blog-engine": "Low"}(以项目名为键)设定,Status = "Pending",Captured At = 2026-07-08。然后将默认 Grid 视图复制为 "High Complexity",并添加过滤器 Migration Complexity = High。在 OpenProject 项目 "Mobile App Redesign" 中,创建恰好一个 Epic-type 父级 work package,主题为 "Upgrade typescript to 5.4.5",priority 为 Normal,描述精确为 "Campaign Date: 2026-07-08; Target: 5.4.5; Projects: <N>",其中 <N> 为插入的行数;然后为每一条 Status = Pending 的 Baserow 行创建一个 Task-type 子 work package,挂在该 Epic 下,主题为 "[<Project>] Bump typescript <Current Version> → 5.4.5",assignee 为 OpenProject Admin,若 Migration Complexity = High 则 priority 为 High,否则为 Normal。 + +**步骤:** + +1. 在 code-server 中,使用 Search(Ctrl+Shift+F)并限定到 tabler/**,weather-dashboard/**,todo-api/**,blog-engine/**,以正则查找每一个包含 typescript 的 manifest,并记录每个命中的 Project、Manifest Path 与 Current Version。 +2. 在 Baserow 中,创建数据库 TypeScript Upgrade Campaign July 2026 和表 "Upgrade Inventory",使用指定 schema;按字母顺序为每个项目恰好插入一行,Target Version=5.4.5,Migration Complexity 取 {"tabler": "High", "weather-dashboard": "Medium", "todo-api": "Low", "blog-engine": "Low"},Status=Pending,Captured At=2026-07-08。 +3. 复制默认 grid 视图并命名为 "High Complexity";添加过滤器 Migration Complexity = High。 +4. 在 OpenProject 项目 Mobile App Redesign 中,创建一个 Epic,主题为 "Upgrade typescript to 5.4.5",描述中包含 campaign date、target 和 project count。 +5. 在该 Epic 下,为每一条 Status=Pending 的行创建一个 Task child,使用指定主题、assignee OpenProject Admin,并且 High complexity 行优先级为 High,其余为 Normal。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_024/description_zh.md b/tasks/uni-m/Software/software_024/description_zh.md new file mode 100644 index 0000000..312a7ab --- /dev/null +++ b/tasks/uni-m/Software/software_024/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +端到端执行 5 份基础设施 RFC 的技术 RFC 工作流。在 code-server 中,创建一个新文件夹 devops-configs/docs/rfc/,并在其中精确创建 5 个 markdown 文件,文件名为 ["rfc-001-kafka-schema-registry.md", "rfc-002-dbt-incremental-models.md", "rfc-003-airflow-on-kubernetes.md", "rfc-004-data-lake-iceberg.md", "rfc-005-feature-store-rollout.md"]。每个文件必须恰好包含六行,且顺序如下:第 1 行 "# RFC-<NNN>: <Title>"(NNN 为文件名中的补零编号,Title 为以下列表中的对应条目 ["Kafka Schema Registry Adoption", "dbt Incremental Models Migration", "Airflow Deployment on Kubernetes", "Data Lake Migration to Apache Iceberg", "Feature Store Rollout for ML Pipelines"]),第 2 行 "Status: Draft",第 3 行 "Author: Leila Farahani",第 4 行 "Created: 2025-10-06",第 5 行 "Reviewer: <Reviewer>"(来自 {"001": "Takeshi Morimoto", "002": "Beatriz Cardoso", "003": "Henrik Johansson", "004": "Chidera Obi", "005": "Valentina Russo"},以 RFC 编号为键),第 6 行为对应的 decision summary,来自 ["Approved: deploy Confluent Schema Registry with Avro contracts enforced at producer level for all Kafka topics.", "Under review: benchmark incremental materialization strategies on representative fact tables before commitment.", "Approved: migrate Airflow to KubernetesExecutor on dedicated EKS node group with per-task pod isolation.", "Approved: adopt Apache Iceberg on S3 with AWS Glue catalog for all analytics tables within Q4.", "Deferred: revisit after feast vs. tecton vendor evaluation and cost analysis is complete."]。保存每个文件。然后对于文件名索引位于 [1, 3, 4] 的每个 RFC,使用 Find and Replace(Ctrl+H)将精确的行 "Status: Draft" 改为 "Status: Approved",并保存。在 Baserow 中,创建数据库 "Data Platform RFC Registry" 和表 "RFC Registry"(字段:RFC ID [primary text]、Title [text]、Status [single-select: Draft/Review/Approved/Implemented/Deprecated]、Author [text]、Reviewer [text]、Created Date [date]、Decision Date [date, nullable]、Review Duration Days [number])。插入恰好 5 行——每个 RFC 文件一行——其中 RFC ID = "RFC-<NNN>"(补零编号),Title/Author/Reviewer/Created Date 与文件内容一致,Status 对索引位于 [1, 3, 4] 的行为 "Approved",其余为 "Draft",Approved 行的 Decision Date = 2025-10-30,否则为 null,Review Duration Days 为 Created Date 与 2025-10-30 之间的整数天数,Approved 行按该值计算,否则为 0。添加一个 Grid 视图 "Approved RFCs",过滤条件为 Status = Approved,并按 Review Duration Days 升序排序。在 OpenProject 项目 "Data Analytics Pipeline" 中,为每一份 Approved RFC 创建恰好一个 Epic-type work package,主题为 "Implement RFC-<NNN>: <Title>",assignee 为 OpenProject Admin,priority 为 Normal,描述精确为 "Linked RFC file: devops-configs/docs/rfc/<filename>; Decision Date: 2025-10-30; Reviewer: <Reviewer>"。 + +**步骤:** + +1. 在 code-server 中,创建文件夹 devops-configs/docs/rfc/,并为 ["rfc-001-kafka-schema-registry.md", "rfc-002-dbt-incremental-models.md", "rfc-003-airflow-on-kubernetes.md", "rfc-004-data-lake-iceberg.md", "rfc-005-feature-store-rollout.md"] 中的每一个创建文件,文件内容必须严格为六行,来源分别为 ["Kafka Schema Registry Adoption", "dbt Incremental Models Migration", "Airflow Deployment on Kubernetes", "Data Lake Migration to Apache Iceberg", "Feature Store Rollout for ML Pipelines"]、Leila Farahani、2025-10-06、{"001": "Takeshi Morimoto", "002": "Beatriz Cardoso", "003": "Henrik Johansson", "004": "Chidera Obi", "005": "Valentina Russo"} 以及 ["Approved: deploy Confluent Schema Registry with Avro contracts enforced at producer level for all Kafka topics.", "Under review: benchmark incremental materialization strategies on representative fact tables before commitment.", "Approved: migrate Airflow to KubernetesExecutor on dedicated EKS node group with per-task pod isolation.", "Approved: adopt Apache Iceberg on S3 with AWS Glue catalog for all analytics tables within Q4.", "Deferred: revisit after feast vs. tecton vendor evaluation and cost analysis is complete."];保存每个文件。 +2. 对于索引位于 [1, 3, 4] 的每个 RFC,打开文件并使用 Find and Replace 将行 "Status: Draft" 改为 "Status: Approved";保存。 +3. 在 Baserow 中,创建数据库 Data Platform RFC Registry 和 "RFC Registry" 表,使用指定 schema;根据文件和审批规则插入恰好 5 行。 +4. 添加一个 grid 视图 "Approved RFCs",过滤为 Status=Approved,并按 Review Duration Days 升序排序。 +5. 在 OpenProject 项目 Data Analytics Pipeline 中,为每个 Approved RFC 行创建一个 Epic,使用指定主题、assignee=OpenProject Admin、priority Normal,以及精确描述格式。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_025/description_zh.md b/tasks/uni-m/Software/software_025/description_zh.md new file mode 100644 index 0000000..a116e25 --- /dev/null +++ b/tasks/uni-m/Software/software_025/description_zh.md @@ -0,0 +1,20 @@ +**任务要求:** + +对项目 ['todo-api', 'data-analyzer', 'blog-engine', 'weather-dashboard'] 执行代码质量审计,强制执行编码标准。在 code-server 中,对于 ['todo-api', 'data-analyzer', 'blog-engine', 'weather-dashboard'] 里的每个项目,右键单击 Explorer 中的项目文件夹并选择 "Open in Integrated Terminal",然后运行 {'todo-api': 'flake8 .', 'data-analyzer': 'flake8 .', 'blog-engine': 'npx eslint .', 'weather-dashboard': 'npx eslint . --ext .ts,.tsx'}(这是项目名到 lint 命令的映射)。捕获 linter 输出,并编写一个脚本(例如在 code-server 中编写 Python 脚本)将每个 violation 解析为列(Project、File Path、Rule ID、Severity),并生成名为 "lint_violations.csv" 的 CSV 文件,包含 ['todo-api', 'data-analyzer', 'blog-engine', 'weather-dashboard'] 中所有 violation(每个 violation 一行)。在 Baserow 中,创建数据库 "Code Quality Audit Q2 2025" 并导入 "lint_violations.csv" 以创建名为 "Lint Violations" 的表。确保该表具有以下字段:Violation ID(primary text,格式化为 LV-<NNN>,按 CSV 行顺序从 LV-001 连续编号)、Project(single-select,取值来自 ['todo-api', 'data-analyzer', 'blog-engine', 'weather-dashboard'])、File Path(text)、Rule ID(text)、Severity(single-select: Error/Warning/Info)、Captured At(date)。在导入前或导入后通过批量更新,将 Violation ID 连续编号(LV-001、LV-002、...),并将每一行的 Captured At 设为 2025-05-14。添加一个名为 "Top Offenders" 的 Grid 视图,按 File Path 分组(在 footer 中使用 row-count 聚合来查看计数),并添加一个过滤器 Severity = Error。在 Metabase 中,创建一个名为 "Lint Audit Q2 2025" 的 collection,并在 Admin → Databases 中为 Baserow Postgres 数据库触发手动 schema sync,以便 "Lint Violations" 表可见。在该 collection 中,保存两条针对 Baserow Postgres 数据库的 question:(1) "Violations by Project" —— 按 Project 分组、按 Severity 展开的 violation 数量柱状图;(2) "Rule Frequency" —— 列出 Rule ID 和 count 的表格,按 count 降序排序,并限制为前 10 行。创建一个名为 "Code Quality Audit Dashboard" 的 Metabase dashboard,位于同一 collection 中,并将这两个 question 作为卡片添加进去,dashboard description 精确为 "Lint audit 2025-05-14 across 4 projects"。在 OpenProject 项目 "Security Audit" 中,找出 Error-severity violation 最多的前 5 个文件(按 error count 降序排序,若平局则按 File Path 升序)并为每个此类文件创建一个 Task-type work package,主题为 "Fix lint errors: <File Path> (<E> errors)",assignee 为 OpenProject Admin,priority 为 High,描述精确为 "Project: <Project>; Lint summary: <summary of the lint findings for that file>"。 + +**步骤:** + +1. 在 code-server 中,为 ['todo-api', 'data-analyzer', 'blog-engine', 'weather-dashboard'] 中的每个项目打开一个项目作用域的 integrated terminal,并运行对应命令 {'todo-api': 'flake8 .', 'data-analyzer': 'flake8 .', 'blog-engine': 'npx eslint .', 'weather-dashboard': 'npx eslint . --ext .ts,.tsx'};将每个 linter 的输出保存到文件。 +2. 在 code-server 中,编写并运行一个脚本,解析捕获到的 linter 输出并生成单个 CSV 文件 "lint_violations.csv",其列为 Project、File Path、Rule ID、Severity(所有项目中的每个 violation 一行)。 +3. 在 Baserow 中,创建数据库 Code Quality Audit Q2 2025 并导入 "lint_violations.csv" 以创建 "Lint Violations" 表;按照指定配置字段类型(Violation ID primary text,Project 和 Severity 为 single-select,Captured At 为 date),并将 Violation ID 按 CSV 行顺序设为 LV-001、LV-002、...,Captured At 对每一行设为 2025-05-14。 +4. 添加一个名为 "Top Offenders" 的 Grid 视图,按 File Path 分组,并在 footer 中加入 row-count 聚合,同时添加过滤器 Severity=Error。 +5. 在 Metabase 中,为 Baserow Postgres 数据库触发 schema sync,创建 collection Lint Audit Q2 2025,并保存两条指定 question("Violations by Project" 柱状图和 "Rule Frequency" 前 10 表格)。 +6. 在同一 collection 中创建 dashboard Code Quality Audit Dashboard,描述精确为 "Lint audit 2025-05-14 across 4 projects",并将两个 question 作为卡片添加进去。 +7. 在 OpenProject Security Audit 中,为 Error-severity violation 最多的前 5 个文件创建 5 个 Task work package(按 File Path 升序打破平局),使用指定主题、assignee OpenProject Admin、priority High,以及描述格式 "Project: <Project>; Lint summary: <summary of the lint findings for that file>"。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_026/description_zh.md b/tasks/uni-m/Software/software_026/description_zh.md new file mode 100644 index 0000000..2e338d0 --- /dev/null +++ b/tasks/uni-m/Software/software_026/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +对 2024 年第四季度执行一次季度工程投资组合审查。在 OpenProject 项目 "API Gateway" 中,打开 Work packages 列表,并筛选状态为 Closed 且 Updated Date 位于 [2024-10-01, 2024-12-31] 的工作包;按 Work Package ID 升序最多取前 30 条结果。在 Baserow 中,创建数据库 "Portfolio Review Q4-2024" 和两张表。表 1 "Closed Work Packages"(字段:WP ID [primary number]、Subject [text]、Type [single-select: Task/Bug/Feature/Epic/Milestone]、Assignee [text]、Investment Bucket [single-select: NewFeature/TechDebt/Reliability/Security]、Team [single-select,取值为 ['Platform','Product','Data','Security','Reliability']]、Closed Date [date])。对每个被选中的 work package 精确插入一行,并按以下规则分配 Investment Bucket:若 Subject 包含 ['security','auth','vulnerability','sso','saml','encrypt','secure'] 中任意词,则为 Security;若包含 ['reliability','sla','alert','monitor','latency','timeout','502','error','uptime','availability'] 中任意词,则为 Reliability;若 Type 为 Bug,或 Subject 包含 ['refactor','cleanup','migrate','upgrade','debt','legacy','tuning'] 中任意词,则为 TechDebt;否则为 NewFeature。Team 按 {'David Kim':'Platform','Frank Nguyen':'Product','Grace Patel':'Product','Henry Johnson':'Data','James Lee':'Platform','Liam Robinson':'Product','Mia Anderson':'Platform','Paul Harris':'Platform','Samuel Clark':'Security','OpenProject Admin':'Platform'}(以 Assignee 为键)分配。表 2 "Bucket Totals"(字段:Bucket [primary single-select: NewFeature/TechDebt/Reliability/Security]、Count [number]、Share Pct [number with 1 decimal]、Target Pct [number with 1 decimal]、Gap Pct [number with 1 decimal])。精确插入 4 行,按 NewFeature、TechDebt、Reliability、Security 的顺序各一行;Count 为该 bucket 中的 Closed Work Packages 行数;Share Pct = round(Count / <total_closed> * 100, 1);Target Pct 来自 {'NewFeature':50.0,'TechDebt':25.0,'Reliability':15.0,'Security':10.0}(以 bucket 名为键);Gap Pct = round(Target Pct - Share Pct, 1)。在 code-server 中,创建一个新文件 devops-configs/docs/portfolio-review-Q4-2024.md,且恰好包含五行:第 1 行 "# Engineering Investment Portfolio — Q4-2024",第 2 行 "Window: 2024-10-01 → 2024-12-31",第 3 行 "Closed work packages: <total_closed>",第 4 行 "Actual shares — NewFeature: <nf>%; TechDebt: <td>%; Reliability: <rel>%; Security: <sec>%",第 5 行 "Target shares — NewFeature: <nf_t>%; TechDebt: <td_t>%; Reliability: <rel_t>%; Security: <sec_t>%";保存文件。在 OpenProject 项目 "API Gateway" 中,为每一个 Gap Pct > 0(即 under-invested)的 bucket 创建恰好一个 Task-type work package,主题为 "Rebalance next quarter: <Bucket> (+<Gap Pct>%)",assignee 为 OpenProject Admin,priority 为 Normal,描述精确为 "Current: <Share Pct>%; Target: <Target Pct>%; Quarter under review: Q4-2024"。 + +**步骤:** + +1. 在 OpenProject API Gateway 中,筛选 Work packages 为 Status=Closed 且 Updated Date 位于 [2024-10-01,2024-12-31],按 WP ID 升序取前 30 条。 +2. 在 Baserow 中,创建数据库 Portfolio Review Q4-2024 和表 "Closed Work Packages",使用指定 schema;按 investment bucket 分类规则和 Assignee→Team 映射 {'David Kim':'Platform','Frank Nguyen':'Product','Grace Patel':'Product','Henry Johnson':'Data','James Lee':'Platform','Liam Robinson':'Product','Mia Anderson':'Platform','Paul Harris':'Platform','Samuel Clark':'Security','OpenProject Admin':'Platform'} 插入每个选中的 work package 一行。 +3. 创建 "Bucket Totals" 表,按指定顺序插入 4 行,并计算 Count、Share Pct、Target Pct(来自 {'NewFeature':50.0,'TechDebt':25.0,'Reliability':15.0,'Security':10.0})以及 Gap Pct。 +4. 在 code-server 中,创建 devops-configs/docs/portfolio-review-Q4-2024.md,且仅包含指定的五行,并保存。 +5. 在 OpenProject 中,为 Gap Pct > 0 的每个 bucket 创建一个 Task work package,使用指定的主题、assignee、priority 和描述格式。 + +**登录凭据:** + +- openproject: admin / AdminPass123! +- baserow: admin@example.com / Admin1234 +- code-server: (no username) / 8a128206e2177bce1e48e565 diff --git a/tasks/uni-m/Software/software_027/description_zh.md b/tasks/uni-m/Software/software_027/description_zh.md new file mode 100644 index 0000000..56a3b66 --- /dev/null +++ b/tasks/uni-m/Software/software_027/description_zh.md @@ -0,0 +1,18 @@ +**任务要求:** + +为以下服务 ['tabler', 'vue-hackernews-2.0', 'json', 'devops-configs', 'todo-api'] 构建一张跨团队依赖图。在 code-server 中,对于 ['tabler', 'vue-hackernews-2.0', 'json', 'devops-configs', 'todo-api'] 中的每个项目,打开指向该项目文件夹的 integrated terminal,并使用 grep/ripgrep 从项目的主源码目录中提取每一条 import/require 语句(使用 {'tabler':'tabler/core','vue-hackernews-2.0':'vue-hackernews-2.0/src','json':'json/include','devops-configs':'devops-configs','todo-api':'todo-api/app'}——这是项目名到其源码根路径的映射);从每个匹配项中,识别 import 路径中出现的任何精确目标项目名 ['tabler', 'vue-hackernews-2.0', 'json', 'devops-configs', 'todo-api'](仅匹配完整的项目名 token,以避免子串误报,例如通过 'from todo_api' 或 'require("todo-api")' 引用 'todo-api',而不是在其他标识符的子串中出现)。记录每个 (Source Project, Target Project, File Path, Line Number) 元组;忽略自引用。在 Baserow 中,创建数据库 "Service Coupling Atlas Q3" 和两张表。表 1 "Team Ownership"(字段:Project [primary text]、Owning Team [single-select,取值来自 ['Frontend', 'Infrastructure', 'Core Libraries', 'Backend']]、Tech Lead [text])——按以下映射为 ['tabler', 'vue-hackernews-2.0', 'json', 'devops-configs', 'todo-api'] 中的每个项目恰好插入一行:{'tabler':{'owning_team':'Frontend','tech_lead':'Karen Brown'},'vue-hackernews-2.0':{'owning_team':'Frontend','tech_lead':'Liam Robinson'},'json':{'owning_team':'Core Libraries','tech_lead':'Frank Nguyen'},'devops-configs':{'owning_team':'Infrastructure','tech_lead':'Noah Taylor'},'todo-api':{'owning_team':'Backend','tech_lead':'Grace Patel'}}(以项目名为键),Project 设为精确的项目名字符串。表 2 "Dependency Edges"(字段:Edge ID [primary text,格式化为 DE-<NNN>,从 DE-001 开始]、Source Project [link to Team Ownership]、Target Project [link to Team Ownership]、Source File [text]、Line Number [number]、Cross Team [boolean])。按以下确定性顺序为每个发现的 dependency tuple 精确插入一行:先按 Source Project 字母顺序,再按 Source File 字母顺序,再按 Line Number 升序;当 Source Project 的 Owning Team 与 Target Project 的 Owning Team 不同时,Cross Team = true,否则为 false。添加一个名为 "Cross-Team Edges" 的 Grid 视图,过滤条件为 Cross Team = true,并按 Source Project 然后 Target Project 排序。在 OpenProject 项目 "Infrastructure Upgrade" 中,创建恰好一个父级 Epic-type work package,主题为 "Dependency map snapshot: 2025-07-22",priority 为 Normal,描述精确为 "Total edges: <E>; Cross-team edges: <X>",其中 E 和 X 为 Baserow 表中的计数。然后对于每一对不同的团队无序组合 (TeamA, TeamB)(TeamA 在字母上先于 TeamB),只要它们之间至少存在一条 Cross Team = true 的边,就在该 Epic 下创建一个 child Task work package,主题为 "Sync: <TeamA> ↔ <TeamB> (<K> coupling points)",其中 K 为这两个团队之间(任意方向)的 Cross Team = true 边数,assignee 为 OpenProject Admin,若 K >= 2 则 priority 为 High,否则为 Normal,描述精确为 "Projects involved: <comma-separated distinct source and target projects for this team pair, sorted alphabetically>"。 + +**步骤:** + +1. 在 code-server 中,对于 ['tabler', 'vue-hackernews-2.0', 'json', 'devops-configs', 'todo-api'] 中的每个项目,打开项目作用域 terminal,并在其源码根目录 {'tabler':'tabler/core','vue-hackernews-2.0':'vue-hackernews-2.0/src','json':'json/include','devops-configs':'devops-configs','todo-api':'todo-api/app'} 中 grep import/require 语句;提取每个引用另一个项目的 (Source Project, Target Project, File Path, Line Number) 元组,要求通过完整项目名 token 精确匹配。 +2. 在 Baserow 中,创建数据库 Service Coupling Atlas Q3,并按 {'tabler':{'owning_team':'Frontend','tech_lead':'Karen Brown'},'vue-hackernews-2.0':{'owning_team':'Frontend','tech_lead':'Liam Robinson'},'json':{'owning_team':'Core Libraries','tech_lead':'Frank Nguyen'},'devops-configs':{'owning_team':'Infrastructure','tech_lead':'Noah Taylor'},'todo-api':{'owning_team':'Backend','tech_lead':'Grace Patel'}} 为 ['tabler', 'vue-hackernews-2.0', 'json', 'devops-configs', 'todo-api'] 中的每个项目填充 "Team Ownership"(Project 为 primary text)。 +3. 创建 "Dependency Edges" 表,并按指定确定性顺序为每个 dependency tuple 插入一个 DE-NNN 行;Cross Team 根据拥有团队是否不同来设置。 +4. 添加一个过滤为 Cross Team=true 且按 Source 然后 Target project 排序的 "Cross-Team Edges" grid 视图。 +5. 在 OpenProject Infrastructure Upgrade 中,创建父级 Epic,主题为 "Dependency map snapshot: 2025-07-22",并使用指定描述。 +6. 在该 Epic 下,为每一个不同的跨团队 pair(TeamA 字母先于 TeamB)创建一个 Task child,使用指定的主题、priority、assignee 和描述格式。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_029/description_zh.md b/tasks/uni-m/Software/software_029/description_zh.md new file mode 100644 index 0000000..54f42c8 --- /dev/null +++ b/tasks/uni-m/Software/software_029/description_zh.md @@ -0,0 +1,22 @@ +**任务要求:** + +对 6 个候选迁移执行平台迁移成本收益分析。在 Baserow 中,创建数据库 "Data Platform Migration Portfolio Q4 2026" 和表 "Migration Candidates"(字段:Candidate ID [primary text,格式化为 MC-<NN>,从 MC-01 开始]、Candidate Name [text]、Current Annual Cost [number with 2 decimals]、Projected Annual Cost [number with 2 decimals]、Annual Savings [number with 2 decimals]、Effort Weeks [number with 1 decimal]、Risk Score [number with 1 decimal]、Strategic Alignment [single-select: Low/Medium/High]、ROI Score [number with 2 decimals]、Decision [single-select: Approve/Defer/Reject])。使用以下数据精确插入 6 行:[{"name":"Migrate Hadoop Cluster to EMR Serverless","current_annual_cost":450000.00,"projected_annual_cost":270000.00,"effort_weeks":15.0,"risk_score":5.5,"strategic_alignment":"High"},{"name":"Replace Talend ETL with dbt Cloud","current_annual_cost":210000.00,"projected_annual_cost":96000.00,"effort_weeks":9.0,"risk_score":4.0,"strategic_alignment":"High"},{"name":"Migrate Tableau Server to Tableau Cloud","current_annual_cost":156000.00,"projected_annual_cost":120000.00,"effort_weeks":5.0,"risk_score":3.5,"strategic_alignment":"Medium"},{"name":"Retire Legacy SSIS Packages","current_annual_cost":78000.00,"projected_annual_cost":72000.00,"effort_weeks":7.0,"risk_score":8.8,"strategic_alignment":"Low"},{"name":"Move Airflow Self-hosted to MWAA","current_annual_cost":132000.00,"projected_annual_cost":78000.00,"effort_weeks":6.0,"risk_score":4.5,"strategic_alignment":"Medium"},{"name":"Consolidate Data Catalogs onto AWS Glue","current_annual_cost":96000.00,"projected_annual_cost":84000.00,"effort_weeks":8.0,"risk_score":7.0,"strategic_alignment":"Low"}];按 Current Annual Cost - Projected Annual Cost 计算 Annual Savings = round(..., 2);按 ROI Score = round(Annual Savings / (Effort Weeks * 10500) * alignment_multiplier, 2) 计算 ROI Score,其中 alignment_multiplier 在 Low 时为 1.0、Medium 时为 1.25、High 时为 1.5;当 ROI Score >= 1.3 且 Risk Score <= 6.0 时,Decision = "Approve",当 ROI Score < 0.5 或 Risk Score >= 8.5 时,Decision = "Reject",否则为 "Defer"。创建一个名为 "Ranked Candidates" 的 Grid 视图,并按 ROI Score 降序排序。在 code-server 中,打开文件 devops-configs/monitoring/alertmanager.yml,并使用 Find(Ctrl+F)定位 section header "# === DATA PLATFORM MIGRATION Q4 NOTES ===";紧接着在该行下方插入恰好 6 行注释,每个候选一行,按 Candidate ID 升序排列,格式为 "# MIGRATION-CANDIDATE <Candidate ID>: <Candidate Name> — Effort <Effort Weeks>w, ROI <ROI Score>, Decision <Decision>";保存文件。在 Metabase Admin 中,触发 Baserow Postgres 数据库的 schema sync,以便新表可见。然后在 Metabase 中,创建 collection "Data Platform Migration Analysis Q4 2026",并保存三条针对 Baserow Postgres 数据库的 question:(1) "Effort vs ROI" —— 以 Effort Weeks 为 x 轴、ROI Score 为 y 轴的散点图,基于 "Migration Candidates" 表;(2) "Decisions Breakdown" —— 按 Decision 分组的候选数量饼图;(3) "Total Projected Annual Savings (Approved)" —— 一个 scalar(number)可视化,显示筛选 Decision = Approve 后 Annual Savings 的求和。创建一个 Metabase dashboard "Data Platform Migration Dashboard Q4 2026" 于该 collection 中,并将这三个 question 全部作为卡片加入,dashboard description 精确为 "Platform migration portfolio as of 2026-10-08"。在 OpenProject 项目 "data-analytics-pipeline" 中,导航至 Versions (Roadmap) 并创建名为 "Migration-Portfolio-2026-10-08" 的 version,status=open,start date=2026-10-08,due date=2027-03-31。然后为每一个 Decision=Approve 的 Baserow 行创建恰好一个 Epic-type work package,主题为 "Migrate: <Candidate Name>",assignee 为 user9,若 Risk Score >= 5.0 则 priority 为 High,否则为 Normal,分配到该 version,描述精确为 "Effort: <Effort Weeks> weeks; Annual Savings: <Annual Savings>; ROI: <ROI Score>; Strategic Alignment: <Strategic Alignment>"。 + +**步骤:** + +1. 在 Baserow 中,创建数据库 "Data Platform Migration Portfolio Q4 2026" 和表 "Migration Candidates",使用指定字段。 +2. 使用以下数据精确插入 6 行:[{"name":"Migrate Hadoop Cluster to EMR Serverless","current_annual_cost":450000.00,"projected_annual_cost":270000.00,"effort_weeks":15.0,"risk_score":5.5,"strategic_alignment":"High"},{"name":"Replace Talend ETL with dbt Cloud","current_annual_cost":210000.00,"projected_annual_cost":96000.00,"effort_weeks":9.0,"risk_score":4.0,"strategic_alignment":"High"},{"name":"Migrate Tableau Server to Tableau Cloud","current_annual_cost":156000.00,"projected_annual_cost":120000.00,"effort_weeks":5.0,"risk_score":3.5,"strategic_alignment":"Medium"},{"name":"Retire Legacy SSIS Packages","current_annual_cost":78000.00,"projected_annual_cost":72000.00,"effort_weeks":7.0,"risk_score":8.8,"strategic_alignment":"Low"},{"name":"Move Airflow Self-hosted to MWAA","current_annual_cost":132000.00,"projected_annual_cost":78000.00,"effort_weeks":6.0,"risk_score":4.5,"strategic_alignment":"Medium"},{"name":"Consolidate Data Catalogs onto AWS Glue","current_annual_cost":96000.00,"projected_annual_cost":84000.00,"effort_weeks":8.0,"risk_score":7.0,"strategic_alignment":"Low"}];按规则计算 Annual Savings、ROI Score 和 Decision。 +3. 创建名为 "Ranked Candidates" 的 Grid 视图,并按 ROI Score 降序排序。 +4. 在 code-server 中,打开 devops-configs/monitoring/alertmanager.yml 里的 section marker "# === DATA PLATFORM MIGRATION Q4 NOTES ===",并在其正下方插入 6 行注释,按 Candidate ID 升序;保存文件。 +5. 在 Metabase Admin 中,触发 Baserow Postgres 数据库的 schema sync,以便新表可见。 +6. 在 Metabase 中,创建 collection "Data Platform Migration Analysis Q4 2026" 并保存三条 question(散点图、饼图、scalar)。 +7. 创建 Metabase dashboard "Data Platform Migration Dashboard Q4 2026",使用指定描述,并添加全部三个 question 卡片。 +8. 在 OpenProject 项目 data-analytics-pipeline 中,创建 version "Migration-Portfolio-2026-10-08" 并设置指定日期。 +9. 为每一条已批准候选创建一个 Epic work package,使用精确的主题、assignee、priority、version 分配和描述。 + +**登录凭据:** + +- baserow: admin@example.com / Admin1234 +- code-server: (no username) / 8a128206e2177bce1e48e565 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_030/description_zh.md b/tasks/uni-m/Software/software_030/description_zh.md new file mode 100644 index 0000000..782be8c --- /dev/null +++ b/tasks/uni-m/Software/software_030/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +对 3 个工作区项目执行代码复杂度和维护成本审计。在 code-server 中,对于 ["todo-api","data-analyzer","blog-engine"] 中的每个项目,右键单击 Explorer 中的项目文件夹并选择 "Open in Integrated Terminal",然后运行该项目对应的测量命令 {"todo-api":"find app tests -type f -name '*.py' -exec awk 'BEGIN{OFS=\",\"} FNR==1{f=FILENAME; loc=0; fn=0; tl=0} {loc++} /^[[:space:]]*def[[:space:]]/{fn++} END{printf \"%s,%d,%d,%.1f\\n\", f, loc, fn, (fn>0?loc/fn:0)}' {} \\;","data-analyzer":"find src tests scripts -type f -name '*.py' -exec awk 'BEGIN{OFS=\",\"} FNR==1{f=FILENAME; loc=0; fn=0} {loc++} /^[[:space:]]*def[[:space:]]/{fn++} END{printf \"%s,%d,%d,%.1f\\n\", f, loc, fn, (fn>0?loc/fn:0)}' {} \\;","blog-engine":"find src -type f -name '*.js' -exec awk 'BEGIN{OFS=\",\"} FNR==1{f=FILENAME; loc=0; fn=0} {loc++} /function[[:space:]]|=>|^[[:space:]]*[a-zA-Z_]+[[:space:]]*\\(/{fn++} END{printf \"%s,%d,%d,%.1f\\n\", f, loc, fn, (fn>0?loc/fn:0)}' {} \\;"}(这是项目名到 shell 命令的映射);每个命令都必须输出每个文件的报告,包含列 File Path、Lines of Code、Function Count、Avg Function Length。捕获每次运行的输出。在 Baserow 中,创建数据库 "Code Complexity Audit Q2 2025" 和表 "Complexity Metrics"(字段:Metric ID [primary text,格式化为 CM-<NNN>,从 CM-001 开始]、Project [single-select,取值精确为 ["todo-api","data-analyzer","blog-engine"]]、File Path [text]、Lines Of Code [number]、Function Count [number]、Avg Function Length [number with 1 decimal]、Complexity Band [single-select: Low/Medium/High/Critical]、Captured At [date])。按 (Project 字母升序,然后 File Path 字母升序) 的顺序为每个被测文件插入恰好一行;当 Lines Of Code >= 1000 或 Avg Function Length >= 40 时,Complexity Band = "Critical",当 Lines Of Code >= 500 或 Avg Function Length >= 25 时,Complexity Band = "High",当 Lines Of Code >= 200 时,Complexity Band = "Medium",否则为 "Low";Captured At = 2025-05-15。创建一个名为 "Top Offenders" 的 Grid 视图,过滤条件为 Complexity Band IN (High, Critical),按 Lines Of Code 降序排序,并创建一个名为 "By Band" 的 Kanban 视图,按 Complexity Band 分组。在 code-server 中,创建一个新文件 devops-configs/docs/complexity-audit-2025-05-15.md,且恰好包含五行,顺序为:第 1 行 "# Complexity Audit — 2025-05-15",第 2 行 "Projects scanned: <按字母升序排列的项目列表,以逗号分隔>",第 3 行 "Total files measured: <N>",第 4 行 "Critical: <C>; High: <H>; Medium: <M>; Low: <L>"(使用 Baserow 表中的计数),第 5 行 "Top file: <File Path> (<Project>, <Lines Of Code> LOC)",其中 Top file 为 Lines Of Code 最高的单行(若平局则按 File Path 升序);保存文件。在 OpenProject 项目 "security-audit" 中,为 Complexity Band IN (High, Critical) 的每一条 Baserow 行创建恰好一个 Task-type work package,限于按 Lines Of Code 降序、再按 File Path 升序排列的前 10 条,主题为 "Refactor: <File Path> (<Lines Of Code> LOC, <Avg Function Length> avg fn length)",assignee 为 admin,若 Complexity Band = Critical 则 priority 为 High,否则为 Normal,描述精确为 "Project: <Project>; Function Count: <Function Count>; Band: <Complexity Band>; Audit: 2025-05-15"。 + +**步骤:** + +1. 在 code-server 中,对于 ["todo-api","data-analyzer","blog-engine"] 中的每个项目,打开项目作用域 terminal,并运行映射的复杂度命令 {"todo-api":"find app tests -type f -name '*.py' -exec awk ...","data-analyzer":"find src tests scripts -type f -name '*.py' -exec awk ...","blog-engine":"find src -type f -name '*.js' -exec awk ..."};捕获每个文件的输出。 +2. 在 Baserow 中,创建数据库 "Code Complexity Audit Q2 2025" 和 "Complexity Metrics" 表;按指定顺序插入行,Complexity Band 根据阈值分配,Captured At = 2025-05-15。 +3. 创建 "Top Offenders" Grid 视图(过滤 + 排序)和 "By Band" Kanban 视图,按 Complexity Band 分组。 +4. 在 code-server 中,创建 devops-configs/docs/complexity-audit-2025-05-15.md,内容严格为描述中的五行;保存文件。 +5. 在 OpenProject 项目 "security-audit" 中,为符合条件的每一条 Baserow 行创建一个 Task work package(仅限按 Lines Of Code 排名前 10 的记录),使用指定主题、assignee、priority 和描述规则。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_031/description_zh.md b/tasks/uni-m/Software/software_031/description_zh.md new file mode 100644 index 0000000..2aa9f5b --- /dev/null +++ b/tasks/uni-m/Software/software_031/description_zh.md @@ -0,0 +1,20 @@ +**任务要求:** + +为刚关闭的 sprint "Pentest Round 1" 在 OpenProject 项目 "Security Audit" 中执行一次 sprint retrospective 数据收集练习。在 OpenProject 中,打开 "Security Audit" 的 Work packages 列表,按 Version = "Pentest Round 1" 过滤,并记录每个 work package 的 ID、Subject、Type、Status、Estimated Time,以及其 Status 是否为 Closed。在 code-server 中,对于 ["json","data-analyzer"] 中的每个项目,右键单击 Explorer 中的项目文件夹并选择 "Open in Integrated Terminal",然后执行该项目映射的测试命令 {"json":"cmake --build build --target test","data-analyzer":"pytest tests/ -v"}(这是项目名到测试命令的映射);解析终端输出,并为每个项目记录:Tests Passed、Tests Failed、Test Files Count(统计该项目 tests/ 目录下的文件数)以及 Pass Rate = round(Tests Passed / (Tests Passed + Tests Failed) * 100, 2)。在 Baserow 中,创建数据库 "Retro Pentest Round 1" 并包含两张表。表 1 "Sprint Work Packages"(字段:WP ID [primary number]、Subject [text]、Type [single-select: Task/Bug/Feature/Epic/Milestone]、Status [text]、Estimated Hours [number with 1 decimal]、Closed [boolean])。为每个被过滤出的 OpenProject work package 精确插入一行,若 Status 恰好为 "Closed" 则 Closed=true。表 2 "Test Health"(字段:Project [primary single-select,且取值精确为 ["json","data-analyzer"]]、Tests Passed [number]、Tests Failed [number]、Test Files Count [number]、Pass Rate [number with 2 decimals]、Health Badge [single-select: Green/Yellow/Red])。为 ["json","data-analyzer"] 中的每个项目精确插入一行,当 Pass Rate >= 95 时 Health Badge = "Green",当 Pass Rate >= 80 时为 "Yellow",否则为 "Red"。在 "Sprint Work Packages" 上创建一个名为 "Completion Summary" 的 Grid 视图,并按 Closed 分组。在 code-server 中,创建一个新文件 devops-configs/docs/retro-Pentest Round 1.md,且恰好包含六行:第 1 行 "# Retrospective: Pentest Round 1",第 2 行 "Date: 2024-12-03",第 3 行 "Work packages closed: <X> of <T>",其中 X 为 Closed=true 行数,T 为总行数,第 4 行 "Planned hours closed: <P>",其中 P 为 Closed=true 行的 Estimated Hours 之和(四舍五入到 1 位小数),第 5 行 "Test health — <project>:<Pass Rate>% (<Health Badge>) ; <project>:<Pass Rate>% (<Health Badge>) ; ...",按 Project 字母顺序列出每个项目,并用 " ; " 分隔,第 6 行 "Red badges: <R>",其中 R 为 Health Badge = "Red" 的行数;保存文件。在 OpenProject 项目 "Security Audit" 中,创建恰好一个 Task-type work package,主题为 "Retro action items: Pentest Round 1",assignee 为 OpenProject Admin,priority 为 Normal,描述精确为 "Retro doc: devops-configs/docs/retro-Pentest Round 1.md; Closed rate: <X>/<T>; Red projects: <R>"。 + +**步骤:** + +1. 在 OpenProject 项目 "Security Audit" 中,打开 Work packages 列表,按 Version = "Pentest Round 1" 过滤,并记录每个 work package 的 ID/Subject/Type/Status/Estimated Time。 +2. 在 code-server 中,对于 ["json","data-analyzer"] 中的每个项目,打开项目作用域 terminal 并运行映射的测试命令 {"json":"cmake --build build --target test","data-analyzer":"pytest tests/ -v"};解析输出以提取 Tests Passed、Tests Failed,并统计 tests/ 目录下的 Test Files。 +3. 在 Baserow 中,创建数据库 "Retro Pentest Round 1" 以及两张表 "Sprint Work Packages" 和 "Test Health",字段如上。 +4. 用 OpenProject 过滤出的 work package 数据填充 "Sprint Work Packages"(Closed=true 当且仅当 Status="Closed")。 +5. 用 ["json","data-analyzer"] 中每个项目填充 "Test Health",计算 Pass Rate,并按阈值分配 Health Badge。 +6. 在 "Sprint Work Packages" 上创建名为 "Completion Summary" 的 Grid 视图,按 Closed 分组。 +7. 在 code-server 中,创建 devops-configs/docs/retro-Pentest Round 1.md,内容严格为描述中的六行,并使用 Baserow 表中计算出的值;保存文件。 +8. 在 OpenProject 中,创建一个 Task work package "Retro action items: Pentest Round 1",assignee 为 OpenProject Admin,priority 为 Normal,并使用指定的描述。 + +**登录凭据:** + +- openproject: admin / AdminPass123! +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_032/description_zh.md b/tasks/uni-m/Software/software_032/description_zh.md new file mode 100644 index 0000000..f36e5dd --- /dev/null +++ b/tasks/uni-m/Software/software_032/description_zh.md @@ -0,0 +1,19 @@ +**任务要求:** + +为项目 "E-Commerce Platform" 启动一个新的 sprint "Sprint 2025-04",并进行多工件设置。在 OpenProject 项目 "E-Commerce Platform" 中,导航到 Versions (Roadmap) 页面并创建名为 "Sprint 2025-04" 的 version,status=open,start date=2025-04-07,due date=2025-04-18,描述精确为 "Sprint goal: Stabilize checkout and improve cart conversion"。然后导航到 Boards 并创建一个基于 Status 的新 board,标题为 "Sprint 2025-04 Board",使用默认状态列。对于 [{"subject": "Fix race condition in cart merge on login", "type": "Bug", "priority": "High", "estimated_hours": 6.0, "assignee": "OpenProject Admin", "target_module": "blog-engine/src/routes/api.js"}, {"subject": "Add structured logging to checkout routes", "type": "Task", "priority": "Normal", "estimated_hours": 4.5, "assignee": "John Marshall", "target_module": "todo-api/tests/test_categories.py"}, {"subject": "Slug generation helper supports unicode", "type": "Feature", "priority": "Normal", "estimated_hours": 8.0, "assignee": "Lena Hogan", "target_module": "blog-engine/src/utils/slugify.js"}, {"subject": "Export analyzer summary as JSON", "type": "Feature", "priority": "Low", "estimated_hours": 5.0, "assignee": "Jane Dradder", "target_module": "data-analyzer/src/analyzer.py"}, {"subject": "Fix ItemList pagination double-fetch", "type": "Bug", "priority": "Immediate", "estimated_hours": 3.0, "assignee": "Latisha Mazon", "target_module": "vue-hackernews-2.0/src/views/ItemList.vue"}] 中的每个条目(这是一个包含 subject、type、priority、estimated_hours、assignee、target_module 字段的 JSON 数组对象),在 OpenProject 项目 "E-Commerce Platform" 中恰好创建一个 work package,并将其分配到 version "Sprint 2025-04",属性(Type、Subject、Priority、Estimated Time、Assignee)全部与数据完全一致。创建完所有 work package 之后,在项目 "E-Commerce Platform" 的 Meetings 页面上创建恰好一个一次性 meeting,标题为 "Sprint Planning: Sprint 2025-04",时间为 2025-04-07 10:00,并按照 backlog 条目的顺序添加恰好 5 个 agenda items——每个条目一个,标题为 "Review: <subject>"。在 code-server 中,打开 File Explorer,并对每个 backlog 条目打开其 target_module 路径中的文件;使用 Find(Ctrl+F)定位文件的第一个非空行,并在该行正上方插入恰好一行注释,格式为 "# TODO [Sprint 2025-04]: <subject>"(当文件为 .js、.ts、.tsx 或 .vue 时使用 "// TODO" 代替 "# TODO"),然后保存。在 Baserow 中,创建数据库 "Sprint 2025-04 Tracking" 和表 "Sprint Backlog"(字段:Item ID [primary text,格式化为 SB-<NN>,从 SB-01 开始]、Subject [text]、Type [single-select: Task/Bug/Feature/Epic]、Priority [single-select: Low/Normal/High/Immediate]、Estimated Hours [number with 1 decimal]、Assignee [text]、Target Module [text]、OpenProject WP ID [number])。精确插入 5 行,每个 backlog 条目一行,并按 backlog JSON 的相同顺序插入,OpenProject WP ID 设为 OpenProject 创建时分配的数值 work package ID。添加一个名为 "By Priority" 的 Kanban 视图,并按 Priority 分组。 + +**步骤:** + +1. 在 OpenProject 项目 "E-Commerce Platform" 中,在 Versions (Roadmap) 页面创建 version "Sprint 2025-04",设置 status=open、start date 2025-04-07、due date 2025-04-18,并将描述设为 "Sprint goal: Stabilize checkout and improve cart conversion"。 +2. 在同一项目中,创建一个新的基于 Status 的 board,标题为 "Sprint 2025-04 Board",使用默认状态列。 +3. 对于 5 个 backlog 条目中的每一个,在 "E-Commerce Platform" 中创建一个 work package,并将其分配到 version "Sprint 2025-04",且 Type/Subject/Priority/Estimated Time/Assignee 与数据完全一致。 +4. 在 "E-Commerce Platform" 的 Meetings 页面上,创建一个一次性 meeting "Sprint Planning: Sprint 2025-04",时间为 2025-04-07 10:00,并按 backlog 顺序为每个条目添加一个标题为 "Review: <subject>" 的 agenda item。 +5. 在 code-server 中,对于每个 backlog 条目,打开其 target_module 路径中的文件,使用 Find 找到第一个非空行,并在其正上方插入正确格式的 TODO 注释行(.py 文件用 #,.js/.ts/.tsx/.vue 文件用 //),然后保存。 +6. 在 Baserow 中,创建数据库 "Sprint 2025-04 Tracking" 和 "Sprint Backlog" 表,字段如上;按 backlog 顺序插入 5 行,并包含 OpenProject 实际分配的 WP ID。 +7. 在 "Sprint Backlog" 上添加一个名为 "By Priority" 的 Kanban 视图,按 Priority 分组。 + +**登录凭据:** + +- openproject: admin / AdminPass123! +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_033/description_zh.md b/tasks/uni-m/Software/software_033/description_zh.md new file mode 100644 index 0000000..22cab64 --- /dev/null +++ b/tasks/uni-m/Software/software_033/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +审计并修复 devops-configs 项目的 CI/CD pipeline。在 code-server 中,打开文件 devops-configs/.github/workflows/deploy.yml;使用 Find(Ctrl+F)定位顶层 'jobs:' mapping,并记录其下直接定义的每个 job name(即在 'jobs:' 下方一层缩进的名称),以及每个 job 的 'runs-on' 值和是否声明了 'needs:' key。然后在同一文件中,使用 Find and Replace(Ctrl+H)并启用正则模式,将精确 token "ubuntu-18.04" 在整个文件中替换为 "ubuntu-22.04",保存文件(Ctrl+S),并在 Source Control 面板中仅 stage devops-configs/.github/workflows/deploy.yml,提交时使用精确消息 "ci: upgrade runner to ubuntu-22.04"。在 Baserow 中,创建数据库 "CI Workflow Remediation Tracker" 和表 "CI Jobs"(字段:Job ID [primary text,格式化为 CJ-<NN>,从 CJ-01 开始]、Job Name [text]、Runs On [text]、Has Dependencies [boolean]、Stage Category [single-select: Build/Test/Lint/Deploy/Other]、Missing Stage [boolean]);按文件中出现的顺序为每个提取到的 job 精确插入一行(从上到下),并根据 Job Name 使用 {"docker-build": "Build", "npm-build": "Build", "jest": "Test", "e2e": "Test", "prettier": "Lint", "tflint": "Lint", "deploy-staging": "Deploy", "deploy-prod": "Deploy", "notify": "Other"} 进行 Stage Category 映射,若 job 不在映射中则使用 Other;并且对于在插入行中未出现的每个必需 stage(Build、Test、Lint、Deploy),将 Missing Stage=true,且为每个缺失的必需 stage 额外创建一行,Job Name="MISSING:<stage>",Runs On="",Has Dependencies=false,Stage Category=<stage>,Missing Stage=true。添加一个名为 "Gaps" 的 Grid 视图,过滤条件为 Missing Stage=true。在 OpenProject 项目 "devops-automation" 中,为每一条 Missing Stage=true 的行创建恰好一个 Task-type work package,主题为 "Add CI stage: <Stage Category>",assignee 为 Paul Harris,priority 为 High,描述精确为 "Add a job of category <Stage Category> to devops-configs/.github/workflows/deploy.yml; current jobs: <comma-separated list of Job Name values where Missing Stage=false, sorted alphabetically>"。 + +**步骤:** + +1. 在 code-server 中,打开 devops-configs/.github/workflows/deploy.yml,并列出 jobs 顶层映射下的所有 job name、runs-on 值以及 needs 声明。 +2. 在 code-server 中,使用 Find and Replace(Ctrl+H)并启用正则,将 devops-configs/.github/workflows/deploy.yml 中的 'ubuntu-18.04' 替换为 'ubuntu-22.04',保存,并通过 Source Control 面板使用精确消息 'ci: upgrade runner to ubuntu-22.04' 提交。 +3. 在 Baserow 中,创建数据库 'CI Workflow Remediation Tracker' 和 'CI Jobs' 表 schema,并按映射 {"docker-build": "Build", "npm-build": "Build", "jest": "Test", "e2e": "Test", "prettier": "Lint", "tflint": "Lint", "deploy-staging": "Deploy", "deploy-prod": "Deploy", "notify": "Other"} 为每个发现的 job 插入一行。 +4. 对于每个未被现有 job 覆盖的必需 stage(Build/Test/Lint/Deploy),插入一个 Missing Stage=true 的占位行;并添加一个过滤为 Missing Stage=true 的 Grid 视图 'Gaps'。 +5. 在 OpenProject 'devops-automation' 中,为每个 Missing Stage=true 行创建一个 Task work package,使用指定的主题、assignee、priority 和描述。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_034/description_zh.md b/tasks/uni-m/Software/software_034/description_zh.md new file mode 100644 index 0000000..1df491a --- /dev/null +++ b/tasks/uni-m/Software/software_034/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +在 3 个项目 ['weather-dashboard','blog-engine','tabler'] 上执行跨项目测试覆盖率审计。在 code-server 中,对于 ['weather-dashboard','blog-engine','tabler'] 中的每个项目,右键单击 File Explorer 中的项目文件夹并选择 'Open in Integrated Terminal',然后执行该项目的 coverage 命令 {"weather-dashboard":"npx vitest run --coverage","blog-engine":"npx jest --coverage --coverageReporters=text","tabler":"pnpm run test -- --coverage --reporter=text"}(这是项目名到 shell 命令的映射,输出每个模块的 coverage);解析每次运行,提取恰好属于该项目的以下模块的 coverage percentage {"weather-dashboard":["src/services/geocoding.ts","src/utils/constants.ts"],"blog-engine":["src/services/markdownRenderer.js","src/middleware/logger.js"],"tabler":["core/js/tabler.ts","core/scss/"]}(这是项目名到模块路径列表的映射)。在 Baserow 中,创建数据库 "Coverage Audit Sprint 14 2026" 和两张表。表 1 "Coverage By Module"(字段:Entry ID [primary text,格式化为 CV-<NNN>,从 CV-001 开始]、Project [single-select,且取值精确为 ['weather-dashboard','blog-engine','tabler']]、Module Path [text]、Coverage Pct [number with 2 decimals]、Captured At [date]、Below Threshold [boolean])——按照 {"weather-dashboard":["src/services/geocoding.ts","src/utils/constants.ts"],"blog-engine":["src/services/markdownRenderer.js","src/middleware/logger.js"],"tabler":["core/js/tabler.ts","core/scss/"]} 定义的每个 (project, module) 对恰好插入一行,顺序为 Project 字母升序,然后 Module Path 字母升序,Captured At=2026-05-20,并且当 Coverage Pct < 70 时 Below Threshold=true。表 2 "Project Coverage Summary"(字段:Project [primary single-select: 取值为 ['weather-dashboard','blog-engine','tabler']]、Module Count [number]、Avg Coverage Pct [number with 2 decimals]、Below Threshold Count [number])——为每个项目精确插入一行,Avg Coverage Pct = round(该项目各模块 Coverage Pct 的平均值, 2)。在 "Coverage By Module" 上添加一个名为 "Remediation Queue" 的 Grid 视图,过滤为 Below Threshold=true,并按 Coverage Pct 升序排序。在 code-server 中,创建一个新文件 devops-configs/docs/coverage-audit-2026-05-20.md,其内容恰好为以下这些行,顺序不变:第 1 行 "# Coverage Audit — 2026-05-20",第 2 行 "Projects: <按字母升序排列的项目列表,以逗号分隔>",然后按项目字母顺序每个项目一行,格式为 "- <Project>: avg <Avg Coverage Pct>% across <Module Count> modules; <Below Threshold Count> below 70%";保存文件。在 OpenProject 项目 "API Gateway" 中,找出 "Coverage By Module" 中覆盖率最低的 5 个模块(按 Coverage Pct 升序排序,若平局则按 Project 然后 Module Path 字母升序打破平局),并为每个此类模块创建恰好一个 Task-type work package,主题为 "Raise coverage: <Project>/<Module Path> (<Coverage Pct>%)",assignee 为 Bob Martinez,priority 为 High,描述精确为 "Current: <Coverage Pct>%; Target: 70%; Audit: 2026-05-20"。 + +**步骤:** + +1. 在 code-server 中,对于 ['weather-dashboard','blog-engine','tabler'] 中的每个项目,打开项目作用域的 terminal 并运行映射命令 {"weather-dashboard":"npx vitest run --coverage","blog-engine":"npx jest --coverage --coverageReporters=text","tabler":"pnpm run test -- --coverage --reporter=text"},捕获每个模块的 coverage 输出。 +2. 在 Baserow 中,创建数据库 'Coverage Audit Sprint 14 2026',以及 'Coverage By Module' 和 'Project Coverage Summary' 两张表,并按所述排序与计算规则填充行。 +3. 在 'Coverage By Module' 上添加名为 'Remediation Queue' 的 Grid 视图,过滤为 Below Threshold=true,按 Coverage Pct 升序排序。 +4. 在 code-server 中,创建位于 devops-configs/docs/coverage-audit-2026-05-20.md 的报告文件,使用精确的五部分结构并保存。 +5. 在 OpenProject 项目 'API Gateway' 中,为覆盖率最低的 5 个模块创建恰好 5 个 Task work package,使用指定主题、assignee、priority 和描述。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_035/description_zh.md b/tasks/uni-m/Software/software_035/description_zh.md new file mode 100644 index 0000000..11583ec --- /dev/null +++ b/tasks/uni-m/Software/software_035/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +在 OpenProject 项目 "API Gateway" 中协调一次 v1.5.0 发布,并进行变更日志管理和就绪跟踪。进入 Versions (Roadmap) 并创建一个名为 "v1.5.0" 的版本,status=open,start date=2025-08-05,due date=2025-09-20,description 精确为 "Release v1.5.0 coordinated across vue-hackernews-2.0 and tabler"。在 code-server 中,在项目 vue-hackernews-2.0 里打开 vue-hackernews-2.0/CHANGELOG.md,并在编辑器中找到精确行 "## [Unreleased]";将这一单行替换为恰好两行新内容:第 A 行 "## [Unreleased]"(保留在顶部)和第 B 行 "## [v1.5.0] - 2025-09-20" 紧随其下,然后在第 B 行下方再插入恰好三行,格式为 "### Added"、"- Infinite scroll pagination for story lists"、"- Dark mode toggle with localStorage persistence";保存文件。在项目 tabler 中对 tabler/CHANGELOG.md 重复完全相同的结构修改,使用 Accessible color contrast audit across all components 和 New timeline component with responsive variants。 在 Source Control 面板中,对这两个修改过的文件分别单独暂存,并使用精确提交信息 "docs(changelog): prepare v1.5.0" 提交。在 Baserow 中创建一个数据库 "Release v1.5.0 Coordination",其中包含一个表 "Release Readiness"(字段:Gate ID [primary text,格式为 G-<NN>,从 G-01 开始]、Gate Name [single-select: CodeFreeze/QASignoff/StagingDeploy/ProductionDeploy]、Project [single-select: vue-hackernews-2.0/tabler/Both]、Target Date [date]、Status [single-select: NotStarted/InProgress/Done/Blocked]、Owner [text]),并且恰好插入 8 行——每个项目各四个 gate,适用于 vue-hackernews-2.0 和 tabler(顺序为:CodeFreeze/vue-hackernews-2.0、CodeFreeze/tabler、QASignoff/vue-hackernews-2.0、QASignoff/tabler、StagingDeploy/vue-hackernews-2.0、StagingDeploy/tabler、ProductionDeploy/vue-hackernews-2.0、ProductionDeploy/tabler)——Target Date 取自 {"CodeFreeze": "2025-08-28", "QASignoff": "2025-09-06", "StagingDeploy": "2025-09-13", "ProductionDeploy": "2025-09-20"}(按 Gate Name 键控),Status=NotStarted,Owner 取自 {"CodeFreeze": "Eric Rothman", "QASignoff": "Richard Rethman", "StagingDeploy": "Thomas Nickson", "ProductionDeploy": "Sandra Love"}(按 Gate Name 键控)。添加一个名为 "Gate Progress" 的 Kanban 视图,按 Status 分组堆叠。在 OpenProject 项目 "API Gateway" 中,恰好创建 8 个 Milestone 类型工作包——每个 Baserow 行对应一个——subject 为 "[<Gate Name>] <Project>: v1.5.0",分配到版本 "v1.5.0",start date = Target Date,若 Gate Name 为 (StagingDeploy, ProductionDeploy) 则 priority 为 High,否则为 Normal,description 精确为 "Release: v1.5.0; Gate: <Gate Name>; Project: <Project>; Owner: <Owner>"。 + +**步骤:** + +1. 在 OpenProject 项目 'API Gateway' 中,进入 Versions (Roadmap) 页面,使用指定的 status、日期和 description 创建版本 'v1.5.0' +2. 在 code-server 中,按指定方式编辑 vue-hackernews-2.0/CHANGELOG.md 和 tabler/CHANGELOG.md,保存两者,然后通过 Source Control 以精确提交信息 'docs(changelog): prepare v1.5.0' 分别暂存并提交每个文件 +3. 在 Baserow 中创建数据库 'Release v1.5.0 Coordination',包含 'Release Readiness' 表,并按指定顺序插入恰好 8 行 gate 记录,使用 {"CodeFreeze": "2025-08-28", "QASignoff": "2025-09-06", "StagingDeploy": "2025-09-13", "ProductionDeploy": "2025-09-20"} 和 {"CodeFreeze": "Eric Rothman", "QASignoff": "Richard Rethman", "StagingDeploy": "Thomas Nickson", "ProductionDeploy": "Sandra Love"} +4. 在 'Release Readiness' 表上添加按 Status 堆叠的 Kanban 视图 'Gate Progress' +5. 在 OpenProject 中,创建恰好 8 个与 8 条 Baserow 记录对应的 Milestone 工作包,使用指定的 subject、priority、日期和 description,全部分配到版本 'v1.5.0' + +**登录凭据:** + +- openproject: admin / AdminPass123! +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_038/description_zh.md b/tasks/uni-m/Software/software_038/description_zh.md new file mode 100644 index 0000000..dd302d7 --- /dev/null +++ b/tasks/uni-m/Software/software_038/description_zh.md @@ -0,0 +1,19 @@ +**任务要求:** + +构建一个工程指标仪表板,用于衡量 4 个工作区项目的代码与测试文件比率。在 code-server 中,对每个项目 ["todo-api", "blog-engine", "data-analyzer", "json"],在文件资源管理器里右键该项目文件夹并选择 'Open in Integrated Terminal',然后运行与该项目对应的 shell 命令,命令映射为 {"todo-api": "echo \"$(find app -type f -name '*.py' | wc -l) $(find tests -type f -name 'test_*.py' | wc -l)\"", "blog-engine": "echo \"$(find src -type f -name '*.js' | wc -l) $(find tests -type f -name '*.test.js' 2>/dev/null | wc -l)\"", "data-analyzer": "echo \"$(find src -type f -name '*.py' | wc -l) $(find tests -type f -name 'test_*.py' | wc -l)\"", "json": "echo \"$(find include -type f -name '*.hpp' | wc -l) $(find tests/src -type f -name 'unit-*.cpp' | wc -l)\""}(这是一个从项目名到 shell 命令的映射,命令会输出两个整数:源文件数和测试文件数,顺序如此,以空白分隔)。记录每个项目的源文件数(S)和测试文件数(T)。在 Baserow 中创建一个名为 "Engineering Quality Metrics" 的数据库,并创建一个表 "Project Metrics"(字段:Project [primary single-select,且仅包含 ["todo-api", "blog-engine", "data-analyzer", "json"] 中的值]、Source Files [number]、Test Files [number]、Test Coverage Ratio [number,保留 3 位小数]、Quality Tier [single-select: Gold/Silver/Bronze/AtRisk]、Measured At [date])。按 Project 的字母顺序恰好插入每个项目一行;计算 Test Coverage Ratio = round(T / S, 3)(当 S=0 时设为 0.000);当 Test Coverage Ratio >= 0.8 时 Quality Tier 设为 "Gold",当 >= 0.5 时设为 "Silver",当 >= 0.2 时设为 "Bronze",否则设为 "AtRisk";Measured At = 2026-04-01。添加一个按 Test Coverage Ratio 降序排序的 Grid 视图 "Quality Ranking",以及一个按 Quality Tier 堆叠的 Kanban 视图 "By Tier"。在 Metabase 中,打开 Admin → Databases,并对 Baserow Postgres 数据库触发一次手动 schema sync,使 "Project Metrics" 表变得可见。创建一个名为 "Code Quality Audit Q2 2026" 的 collection,并在其中针对 Baserow Postgres 数据库保存三个问题: (1) "Source vs Test File Counts" — 一个条形图,x-axis=Project,并将 Source Files 和 Test Files 作为分组条形;(2) "Tier Distribution" — 按 Quality Tier 分组的项目计数饼图;(3) "Ratio Ranking" — 一张表,列出每一行的 Project、Test Coverage Ratio 和 Quality Tier,并按 Test Coverage Ratio 降序排序。在 "Code Quality Audit Q2 2026" 中创建一个名为 "Code-to-Test Coverage Audit" 的 Metabase dashboard,dashboard description 精确为 "Code-to-test ratio audit 2026-04-01 across 4 projects",并添加这三个问题作为 cards。在 OpenProject 项目 "Customer Portal Redesign" 中,对每个 Quality Tier IN (Bronze, AtRisk) 的 Baserow 行创建恰好一个 Task 类型工作包,subject 为 "Raise test coverage: <Project> (ratio <Test Coverage Ratio>)",assignee 为 qa_lead,Quality Tier=AtRisk 时 priority 为 High,否则为 Normal,description 精确为 "Source: <Source Files>; Tests: <Test Files>; Tier: <Quality Tier>; Measured: 2026-04-01"。 + +**步骤:** + +1. 在 code-server 中打开文件资源管理器,对 ["todo-api", "blog-engine", "data-analyzer", "json"] 中的每个项目文件夹右键,选择 'Open in Integrated Terminal',运行来自 {"todo-api": "echo \"$(find app -type f -name '*.py' | wc -l) $(find tests -type f -name 'test_*.py' | wc -l)\"", "blog-engine": "echo \"$(find src -type f -name '*.js' | wc -l) $(find tests -type f -name '*.test.js' 2>/dev/null | wc -l)\"", "data-analyzer": "echo \"$(find src -type f -name '*.py' | wc -l) $(find tests -type f -name 'test_*.py' | wc -l)\"", "json": "echo \"$(find include -type f -name '*.hpp' | wc -l) $(find tests/src -type f -name 'unit-*.cpp' | wc -l)\""} 的映射命令;记录每个项目的 S(源文件)和 T(测试文件) +2. 在 Baserow 中创建数据库 "Engineering Quality Metrics" 和表 "Project Metrics",使用指定 schema;按字母顺序插入每个项目一行,计算 Test Coverage Ratio 和 Quality Tier;添加 Grid 视图 "Quality Ranking"(按 ratio 降序)和 Kanban 视图 "By Tier" +3. 在 Metabase Admin → Databases 中,对 Baserow Postgres 连接触发手动 schema sync,使新表可见 +4. 在 Metabase 中创建 collection "Code Quality Audit Q2 2026",并将三个必需的问题保存到 Baserow Postgres 数据库中 +5. 创建 Metabase dashboard "Code-to-Test Coverage Audit",放入 "Code Quality Audit Q2 2026" 中,并使用精确 description,然后添加全部三个问题作为 cards +6. 在 OpenProject 项目 "Customer Portal Redesign" 中,为每个 Bronze/AtRisk 项目创建一个 Task 工作包,使用指定的 subject、assignee qa_lead、priority 和精确 description + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- metabase: admin@metabase.local / mw-admin-123 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_039/description_zh.md b/tasks/uni-m/Software/software_039/description_zh.md new file mode 100644 index 0000000..b62a6ed --- /dev/null +++ b/tasks/uni-m/Software/software_039/description_zh.md @@ -0,0 +1,19 @@ +**任务要求:** + +为 sprint "Sprint-2026-Q4-W1" 搭建连接 Producer API Team(拥有 todo-api)和 Insights Engineering Team(拥有 data-analyzer)的跨团队集成测试基础设施。在 code-server 中,打开 todo-api 项目,导航到 todo-api/app/extensions.py,使用 Find (Ctrl+F) 找到精确行 "migrate = Migrate()",并在其正下方恰好插入三行新内容:第 1 行 "# INTEGRATION-POINT Sprint-2026-Q4-W1: consumed by Insights Engineering Team/data-analyzer",第 2 行 "# Contract owner: Yuki Tanaka",第 3 行 "# Review cadence: every sprint";使用 Ctrl+S 保存。然后打开 data-analyzer,导航到 data-analyzer/scripts/run_analysis.py,使用 Find (Ctrl+F) 找到精确行 "def run_pipeline(input_path):",并在其正下方恰好插入两行新内容:第 1 行 "# INTEGRATION-POINT Sprint-2026-Q4-W1: consumes Producer API Team/todo-api",第 2 行 "# Contract owner: Olivia Bennett";保存。在 Source Control 面板中,对这两个修改过的文件分别单独暂存并使用精确提交信息 "docs: mark integration point for Sprint-2026-Q4-W1" 提交。在 OpenProject 项目 "demo-project" 中,进入 Versions (Roadmap) 并创建一个名为 "Sprint-2026-Q4-W1" 的版本,status=open,start date=2026-10-05,due date=2026-10-16,description 精确为 "Cross-team sprint: Producer API Team ↔ Insights Engineering Team"。然后创建恰好 5 个 Feature 类型工作包,每个都分配到版本 "Sprint-2026-Q4-W1",priority 为 High,subject、estimated times 和 assignees 取自 [{"subject": "Publish reminder-events topic [CTR-REMIND-EVT]", "estimated_hours": 13, "assignee": "Yuki Tanaka", "owning_team": "Producer API Team"}, {"subject": "Expose subtask-graph API [CTR-SUBTASK-GR]", "estimated_hours": 11, "assignee": "Yuki Tanaka", "owning_team": "Producer API Team"}, {"subject": "Provide attachment-index export [CTR-ATTACH-IDX]", "estimated_hours": 8, "assignee": "Yuki Tanaka", "owning_team": "Producer API Team"}, {"subject": "Consume reminder-events topic for engagement metrics [CTR-REMIND-EVT]", "estimated_hours": 12, "assignee": "Olivia Bennett", "owning_team": "Insights Engineering Team"}, {"subject": "Ingest subtask-graph API for dependency analytics [CTR-SUBTASK-GR]", "estimated_hours": 10, "assignee": "Olivia Bennett", "owning_team": "Insights Engineering Team"}](一个包含 subject、estimated_hours、assignee、owning_team 字段的 JSON 数组)。对于每一对工作包 (WP_A, WP_B),当 WP_A.owning_team=Producer API Team 且 WP_B.owning_team=Insights Engineering Team,并且它们的 subject 共享来自 ["CTR-REMIND-EVT", "CTR-SUBTASK-GR"] 的标识符(按两个 subject 中都精确出现的 ID token 匹配)时,添加一条从 WP_B 指向 WP_A 的 "follows" relation(WP_B follows WP_A)。在项目 "demo-project" 的 Meetings 页面上,创建恰好一个 recurring meeting,标题为 "Cross-team sync: Sprint-2026-Q4-W1",首次发生时间为 2026-10-06 at 11:00,并按此顺序添加恰好三个 agenda items:"Contract changes since last sync"、"Integration test results"、"Blockers and escalations"。在 Baserow 中创建一个名为 "Q4W1 Integration Contracts Workspace" 的数据库,并创建一个表 "Integration Contracts"(字段:Contract ID [primary text,格式为 IC-<NN>,从 IC-01 开始]、Producer Team [single-select: Producer API Team/Insights Engineering Team]、Consumer Team [single-select: Producer API Team/Insights Engineering Team]、Contract Name [text]、Producer WP ID [number]、Consumer WP ID [number]、Status [single-select: Planned/InProgress/Verified/Broken]、Last Validated [date,可空])。按字母顺序对 ["CTR-REMIND-EVT", "CTR-SUBTASK-GR"] 中的每个唯一标识符恰好插入一行,Producer Team=Producer API Team,Consumer Team=Insights Engineering Team,Producer WP ID = subject 包含该标识符且 owning_team=Producer API Team 的 OpenProject WP ID,Consumer WP ID = 对应的 consumer WP ID,Status=Planned,Last Validated=null。添加一个按 Contract ID 升序排序的 Grid 视图 "Contract Matrix"。 + +**步骤:** + +1. 在 code-server 中编辑 todo-api/app/extensions.py 和 data-analyzer/scripts/run_analysis.py,按要求在锚点行下插入指定的 integration-point 注释块;保存每个文件。 +2. 在 Source Control 面板中,对这两个修改过的文件分别单独暂存并使用精确提交信息 "docs: mark integration point for Sprint-2026-Q4-W1" 提交。 +3. 在 OpenProject 项目 "demo-project" 中,在 Versions (Roadmap) 页面创建版本 "Sprint-2026-Q4-W1",使用指定的日期和 description。 +4. 创建恰好 5 个 Feature 类型工作包,来自 [{"subject": "Publish reminder-events topic [CTR-REMIND-EVT]", "estimated_hours": 13, "assignee": "Yuki Tanaka", "owning_team": "Producer API Team"}, {"subject": "Expose subtask-graph API [CTR-SUBTASK-GR]", "estimated_hours": 11, "assignee": "Yuki Tanaka", "owning_team": "Producer API Team"}, {"subject": "Provide attachment-index export [CTR-ATTACH-IDX]", "estimated_hours": 8, "assignee": "Yuki Tanaka", "owning_team": "Producer API Team"}, {"subject": "Consume reminder-events topic for engagement metrics [CTR-REMIND-EVT]", "estimated_hours": 12, "assignee": "Olivia Bennett", "owning_team": "Insights Engineering Team"}, {"subject": "Ingest subtask-graph API for dependency analytics [CTR-SUBTASK-GR]", "estimated_hours": 10, "assignee": "Olivia Bennett", "owning_team": "Insights Engineering Team"}],分配到版本 "Sprint-2026-Q4-W1",priority 为 High,并使用指定的 subject、estimated times 和 assignees。 +5. 对共享来自 ["CTR-REMIND-EVT", "CTR-SUBTASK-GR"] 的合同标识符的工作包对,添加一条从消费者(Insights Engineering Team)工作包到生产者(Producer API Team)工作包的 "follows" relation。 +6. 在项目 Meetings 页面上,创建一个 recurring meeting "Cross-team sync: Sprint-2026-Q4-W1",首次日期为 2026-10-06 at 11:00,并按顺序添加恰好三个 agenda items。 +7. 在 Baserow 中创建数据库 "Q4W1 Integration Contracts Workspace" 和表 "Integration Contracts",为每个共享合同标识符插入一行,所有字段按要求填写;添加 Grid 视图 "Contract Matrix"。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- openproject: admin / AdminPass123! +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_040/description_zh.md b/tasks/uni-m/Software/software_040/description_zh.md new file mode 100644 index 0000000..59dd907 --- /dev/null +++ b/tasks/uni-m/Software/software_040/description_zh.md @@ -0,0 +1,18 @@ +**任务要求:** + +为 tabler 项目构建一个前端组件清单。在 code-server 中,打开 tabler 项目,并使用全局 Search 面板(Ctrl+Shift+F),启用 regex,'files to include' 限定为 "tabler/core/**",'files to exclude' 设为 "**/node_modules/**,**/dist/**",使用正则表达式 ^\s*export\s+(?:default\s+)?(?:class|function|const)\s+([A-Z][A-Za-z0-9_]*) 来定位每个组件声明。记录每个组件的名称、文件路径和行号。然后在同一个 Search 面板中,清空查询并运行第二个正则搜索,模式为 ^\s*import\s+\{?\s*([A-Z][A-Za-z0-9_]*)\s*\}?\s+from\s+['"][^'"]+['"](相同范围),找出该项目中每个组件的导入;按组件统计导入该组件的不同文件数量(组件的 usage_count)。在 Baserow 中创建一个名为 "Tabler Component Audit" 的数据库,并创建一个表 "Frontend Components"(字段:Component ID [primary text,格式为 FC-<NNN>,从 FC-001 开始]、Component Name [text]、File Path [text]、Line Number [number]、Usage Count [number]、Category [single-select: Layout/Form/Display/Navigation/Chart/Utility]、Deprecation Candidate [boolean]、Captured At [date])。按 File Path 字母序然后 Line Number 升序,恰好为每个发现的组件插入一行;Category 从 {"TablerTheme":"Utility","TablerCore":"Utility","NavBar":"Navigation","SideBar":"Navigation","FormInput":"Form","FormSelect":"Form","Card":"Display","Modal":"Display","PageLayout":"Layout","GridContainer":"Layout","BarChart":"Chart","LineChart":"Chart"} 中获取(按 Component Name 键控,缺失时默认为 "Utility");当 Usage Count <= 1 时 Deprecation Candidate=true,否则为 false;Captured At=2026-03-20。添加一个名为 "High-Impact Components" 的 Grid 视图,过滤条件为 Usage Count >= 5,并按 Usage Count 降序排序,以及一个按 Category 堆叠的 Kanban 视图 "By Category"。在 code-server 中,在 tabler/docs/COMPONENTS.md 创建一个新文件,内容必须恰好按顺序包含这些行:第 1 行 "# tabler Component Inventory",第 2 行 "Captured: 2026-03-20",第 3 行 "Total components: <N>" 其中 N 是插入的行数,第 4 行 "Deprecation candidates: <D>" 其中 D 是 Deprecation Candidate=true 的行数,然后按 Component Name 字母顺序为每个组件输出一行,格式为 "- <Component Name> (<Category>, used <Usage Count>x) — <File Path>:<Line Number>";使用 Ctrl+S 保存。在 Source Control 面板中,仅暂存这个新文件并以精确提交信息 "docs: add component inventory 2026-03-20" 提交。在 OpenProject 项目 "demo-project" 中,为每个 Deprecation Candidate=true 的 Baserow 行创建恰好一个 Task 类型工作包,subject 为 "Review deprecation: <Component Name>",assignee 为 OpenProject Admin,priority 为 Normal,description 精确为 "File: <File Path>:<Line Number>; Usage: <Usage Count>; Category: <Category>; Captured: 2026-03-20"。 + +**步骤:** + +1. 在 code-server 中打开 tabler 项目,使用启用 regex 且限定范围的全局 Search 面板运行组件声明正则 ^\s*export\s+(?:default\s+)?(?:class|function|const)\s+([A-Z][A-Za-z0-9_]*); 记录每个匹配的名称、路径和行号。 +2. 使用同一范围运行第二个正则 ^\s*import\s+\{?\s*([A-Z][A-Za-z0-9_]*)\s*\}?\s+from\s+['"][^'"]+['"],并按导入该组件的不同文件数计算 usage_count。 +3. 在 Baserow 中创建数据库 "Tabler Component Audit" 和表 "Frontend Components",使用指定 schema;插入每个组件一行,Category 来自 {"TablerTheme":"Utility","TablerCore":"Utility","NavBar":"Navigation","SideBar":"Navigation","FormInput":"Form","FormSelect":"Form","Card":"Display","Modal":"Display","PageLayout":"Layout","GridContainer":"Layout","BarChart":"Chart","LineChart":"Chart"},Deprecation Candidate 按规则计算,Captured At=2026-03-20;添加 Grid 视图和 Kanban 视图。 +4. 在 code-server 中,创建 tabler/docs/COMPONENTS.md,内容严格遵循指定的行结构(标题、计数,然后按 Component Name 字母序列出每个组件);保存。 +5. 在 Source Control 面板中,仅暂存新的 COMPONENTS.md 文件,并以精确提交信息 "docs: add component inventory 2026-03-20" 提交。 +6. 在 OpenProject 项目 "demo-project" 中,为每个 Deprecation Candidate 行创建一个 Task 工作包,使用精确的 subject、assignee OpenProject Admin、priority Normal 和 description 格式。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_041/description_zh.md b/tasks/uni-m/Software/software_041/description_zh.md new file mode 100644 index 0000000..e21241a --- /dev/null +++ b/tasks/uni-m/Software/software_041/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +构建一个发布候选版 QA 签署工作流,包含基于公开表单的干系人签署。在 OpenProject 项目 "data-analytics-pipeline" 中,进入 Versions (Roadmap) 并创建一个名为 "v3.2.0-rc1" 的版本,status=open,start date=2025-07-07,due date=2025-07-16,description 精确为 "Release candidate for v3.2.0; sign-off window 2025-07-07 to 2025-07-16"。在 code-server 中,打开 data-analyzer 项目里的 data-analyzer/pyproject.toml,并使用 Find (Ctrl+F) 找到行 "version":"(适用于 package.json)或 "version = "(适用于 Python pyproject.toml/setup.py);使用 Find and Replace (Ctrl+H) 将版本字符串从 0.1.0 改为精确的 3.2.0-rc1,使用 Ctrl+S 保存。然后在同一项目中打开 data-analyzer/CHANGELOG.md,使用 Find (Ctrl+F) 找到精确行 "## [Unreleased]",并在其正下方恰好插入三行新内容:第 A 行 "## [3.2.0-rc1] - 2025-07-07",第 B 行 "### Candidate for v3.2.0",第 C 行 "- Sign-off window: 2025-07-07 to 2025-07-16";保存文件。在 Source Control 面板中,将仓库下拉切换到 data-analyzer,恰好暂存这两个修改过的文件,并以精确提交信息 "chore(release): prepare 3.2.0-rc1 candidate" 提交。在 Baserow 中创建一个数据库 "RC Sign-off v3.2.0" 和两个表。表 1 "Sign-off Criteria"(字段:Criterion ID [primary text,格式为 SC-<NN>,从 SC-01 开始]、Criterion Name [text]、Category [single-select: Functional/Performance/Security/Documentation/Rollback]、Required Approver Role [single-select: QALead/SecurityEngineer/ProductOwner/ReleaseManager]、Target [text]、Status [single-select: Pending/Passed/Failed])——使用 [{"name": "Data ingestion pipeline validated", "category": "Functional", "approver_role": "QALead", "target": "All loader and reporter unit tests pass"}, {"name": "Analysis throughput >= 1M rows/min", "category": "Performance", "approver_role": "QALead", "target": "Benchmark completes within 60s for 1M-row dataset"}, {"name": "No secrets or credentials in repo", "category": "Security", "approver_role": "SecurityEngineer", "target": "truffleHog and gitleaks scans return zero findings"}, {"name": "User manual and API reference refreshed", "category": "Documentation", "approver_role": "ProductOwner", "target": "docs/ site builds and CHANGELOG is current"}, {"name": "Database migration rollback rehearsed", "category": "Rollback", "approver_role": "ReleaseManager", "target": "Rollback tested in staging within 8 minutes"}](一个包含 name、category、approver_role、target 的对象列表)恰好插入 5 行,所有 Status=Pending。表 2 "Stakeholder Approvals"(字段:Approval ID [primary text,格式为 AP-<NNN>,从 AP-001 开始]、Approver Name [text]、Approver Role [text]、Criterion ID [link to Sign-off Criteria]、Approved [boolean]、Comment [long text]、Submitted At [date])——初始留空;它将通过表单提交填充。在 "Stakeholder Approvals" 表上创建一个名为 "RC Sign-off Form" 的 Form 视图,标题为 "v3.2.0-rc1 Sign-off",描述为 "Please submit your approval for each assigned criterion. Window closes 2025-07-16.",在表单中包含除 Approval ID 和 Submitted At 之外的所有字段,将 Approver Name、Approver Role、Criterion ID 和 Approved 标记为必填,并将提交后消息配置为 "Thank you — your approval for v3.2.0-rc1 has been recorded.";启用表单提交时的邮件通知。记录公开表单 URL。然后使用 [{"approver_name": "Paul Garcia", "approver_role": "QALead", "criterion_id": "SC-01", "approved": true, "comment": "Loader and reporter unit tests all green on CI."}, {"approver_name": "Paul Garcia", "approver_role": "QALead", "criterion_id": "SC-02", "approved": true, "comment": "Benchmark completed in 47s for 1M-row dataset."}, {"approver_name": "Thomas Nickson", "approver_role": "SecurityEngineer", "criterion_id": "SC-03", "approved": true, "comment": "truffleHog and gitleaks scans clean; no secrets detected."}, {"approver_name": "Nora Mott", "approver_role": "ProductOwner", "criterion_id": "SC-04", "approved": false, "comment": "API reference section for new reporter module is missing; needs update before GA."}, {"approver_name": "Michael Robicheaux", "approver_role": "ReleaseManager", "criterion_id": "SC-05", "approved": true, "comment": "Rollback rehearsal finished in 6 minutes on staging."}, {"approver_name": "Sandra Love", "approver_role": "QALead", "criterion_id": "SC-01", "approved": true, "comment": "Secondary QA confirmation — full regression pack clean."}](一个包含 approver_name、approver_role、criterion_id、approved、comment 的对象列表)恰好提交 6 次,每个条目一次提交;在所有提交记录之后,将所有行的 Submitted At 更新为 2025-07-14,并按提交顺序将 Approval ID 顺序填入,从 AP-001 开始(AP-001、AP-002、……)。对于每个 Criterion ID,只要该 Criterion 的 Required Approver Role 提交过至少一次 Approved=true,则将对应的 "Sign-off Criteria" 行的 Status 更新为 "Passed";如果该 Required Approver Role 提交过至少一次 Approved=false,则将 Status 设为 "Failed";其他保持 "Pending"。在 OpenProject 项目 "data-analytics-pipeline" 中,创建恰好一个父级 Milestone 类型工作包,subject 为 "RC Sign-off: v3.2.0-rc1",分配到版本 "v3.2.0-rc1",start date=2025-07-16,priority High,description 精确为 "Sign-off form: <public_form_url>; Passed: <P>; Failed: <F>; Pending: <N>",其中 <public_form_url> 是上面记录的 URL,P/F/N 是来自 "Sign-off Criteria" 表的计数。此外,为每个 Status=Failed 的 "Sign-off Criteria" 行创建恰好一个 Bug 类型工作包,设上面的 Milestone 为其 parent,分配到版本 "v3.2.0-rc1",subject 为 "Fix before GA: <Criterion Name>",priority High,assignee michael.robicheaux,description 精确为 "Category: <Category>; Target: <Target>; Required Approver Role: <Required Approver Role>"。 + +**步骤:** + +1. 在 OpenProject 项目 "data-analytics-pipeline" 中,在 Versions (Roadmap) 页面创建版本 "v3.2.0-rc1",使用指定的 status、日期和 description。 +2. 在 code-server 中,打开 data-analyzer/pyproject.toml,使用 Find and Replace 将版本从 0.1.0 改为 3.2.0-rc1 并保存;打开 data-analyzer/CHANGELOG.md,在 "## [Unreleased]" 正下方插入三行指定内容并保存;在 Source Control 面板将仓库切换到 data-analyzer,恰好暂存这两个文件,并以 "chore(release): prepare 3.2.0-rc1 candidate" 提交。 +3. 在 Baserow 中创建数据库 "RC Sign-off v3.2.0" 和表 "Sign-off Criteria",填充 5 行,创建 "Stakeholder Approvals"(初始为空)以及名为 "RC Sign-off Form" 的 Form 视图,按指定方式配置(必填字段、提交后消息、启用邮件通知);记录公开表单 URL。 +4. 使用给定数据恰好提交 6 次表单;所有提交完成后,将所有行的 Submitted At 设为 2025-07-14 并按提交顺序填充 Approval ID;然后根据对应必需角色是否提交 approved=true/false 更新 Sign-off Criteria 状态为 "Passed" 或 "Failed"。 +5. 在 OpenProject 中创建父级 Milestone 工作包 "RC Sign-off: v3.2.0-rc1",分配版本并使用包含表单 URL 和计数的描述,以及每个 Failed criterion 对应的 Bug 工作包,设置指定的 subject、priority、assignee michael.robicheaux 和 description,并将 Milestone 作为 parent。 + +**登录凭据:** + +- openproject: admin / AdminPass123! +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_042/description_zh.md b/tasks/uni-m/Software/software_042/description_zh.md new file mode 100644 index 0000000..0567470 --- /dev/null +++ b/tasks/uni-m/Software/software_042/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +对可部署服务 ["blog-engine", "devops-configs", "tabler", "todo-api"] 进行 Docker 和容器化合规审计。在 code-server 中,对每个服务 ["blog-engine", "devops-configs", "tabler", "todo-api"],打开其 Dockerfile,路径由 {"blog-engine": "blog-engine/Dockerfile", "devops-configs": "devops-configs/docker/Dockerfile.node", "tabler": "tabler/Dockerfile", "todo-api": "todo-api/Dockerfile"} 给出(这是一个从服务名到 Dockerfile 路径的 JSON 映射)。对于每个 Dockerfile,使用编辑器记录:FROM 基础镜像(包含 tag 的完整字符串)、镜像 tag 是否为 "latest" 或缺失、是否存在 USER 指令(如果存在,则是否为 "root")、是否声明了 HEALTHCHECK、RUN 指令的数量,以及 Dockerfile 是否包含 multi-stage build(即是否有多个 FROM 指令)。使用全局 Search 面板(Ctrl+Shift+F),启用 regex,将 'files to include' 设为 "**/Dockerfile,**/Dockerfile.*,**/*.dockerfile",并使用模式 (AKIA[0-9A-Z]{16}|(aws_secret|api[_-]?key|token|passwd|password|secret)\s*[:=]\s*['\"][^'\"]{4,}['\"]),同时启用 case-insensitive 标志(点击 'Aa' 按钮或在搜索面板中使用 /pattern/i 切换)来检测 Dockerfile 中的任何硬编码密钥模式(AWS keys、API tokens、passwords);将每个命中记录为 (file_path, line_number, pattern_name)。在 Baserow 中创建一个名为 "Container Security Review 2026-04-12" 的数据库,并创建两个表。表 1 "Dockerfile Audit"(字段:Audit ID [primary text,格式为 DA-<NN>,从 DA-01 开始]、Service [single-select,且仅包含 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中的值]、Dockerfile Path [text]、Base Image [text]、Uses Latest Tag [boolean]、Runs As Root [boolean]、Has Healthcheck [boolean]、Multistage Build [boolean]、Run Instruction Count [number]、Captured At [date]、Compliance Score [number])——按字母顺序在 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中每个服务插入恰好一行;Compliance Score 的计算方式为:从 100 开始;如果 Uses Latest Tag=true 则减 25;如果 Runs As Root=true 则减 25;如果 Has Healthcheck=false 则减 15;如果 Multistage Build=false 则减 10;再减去 5 * max(0, Run Instruction Count - 6);最后向下截断到不小于 0。Captured At=2026-04-12。表 2 "Hardcoded Secrets"(字段:Finding ID [primary text,格式为 HS-<NNN>,从 HS-001 开始]、Service [single-select,且仅包含 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中的值]、File Path [text]、Line Number [number]、Pattern Name [single-select: AWSKey/APIToken/Password/Other]、Severity [single-select: Critical/High]、Detected At [date])——按 File Path 字母序然后 Line Number 升序,针对每个 regex 命中插入恰好一行;当 Pattern Name IN (AWSKey, APIToken) 时 Severity=Critical,否则为 High;Detected At=2026-04-12。为 "Dockerfile Audit" 创建一个名为 "Compliance Ranking" 的 Grid 视图,按 Compliance Score 升序(最小值在前)排序;为 "Hardcoded Secrets" 创建一个名为 "By Pattern" 的 Kanban 视图,按 Pattern Name 堆叠。在 code-server 中,在 devops-configs/docs/docker-audit-2026-04-12.md 创建一个新文件,内容必须恰好按顺序包含这些行:第 1 行 "# Docker Audit — 2026-04-12",第 2 行 "Services scanned: <comma-separated services sorted alphabetically>",第 3 行 "Avg compliance score: <avg_score>" 其中 avg_score = round(所有行的 Compliance Score 平均值, 1),第 4 行 "Services below 75: <failing_count>",第 5 行 "Hardcoded secrets found: <secret_count> (Critical: <crit>; High: <high>)";使用 Ctrl+S 保存。在 Source Control 面板中,将仓库下拉切换到 devops-configs,仅暂存这个新文件,并以精确提交信息 "audit: docker compliance 2026-04-12" 提交。在 OpenProject 项目 "devops-automation" 中,进入 Admin - Enumerations (Priorities) 并确认 "Immediate" 存在。然后为 "Hardcoded Secrets" 中的每一行创建恰好一个 Bug 类型工作包,subject 为 "SECRET LEAK [<Service>]: <Pattern Name> at <File Path>:<Line Number>",assignee 为 sandra.love,priority 在 Severity=Critical 时为 Immediate,否则为 High,description 精确为 "Audit date: 2026-04-12; File: <File Path>:<Line Number>; Pattern: <Pattern Name>"。此外,为每一条 Compliance Score < 75 的 "Dockerfile Audit" 行创建恰好一个 Task 类型工作包,subject 为 "Harden Dockerfile: <Service> (score <Compliance Score>)",assignee 为 richard.rethman,priority 为 High,description 精确为 "Base: <Base Image>; LatestTag: <Uses Latest Tag>; Root: <Runs As Root>; Healthcheck: <Has Healthcheck>; Multistage: <Multistage Build>; RUN count: <Run Instruction Count>"。 + +**步骤:** + +1. 在 code-server 中,打开每个服务的 Dockerfile(路径为 {"blog-engine": "blog-engine/Dockerfile", "devops-configs": "devops-configs/docker/Dockerfile.node", "tabler": "tabler/Dockerfile", "todo-api": "todo-api/Dockerfile"}),记录 base image、latest-tag 使用情况、USER presence/root status、HEALTHCHECK presence、RUN count 以及是否为 multistage;然后在全局 regex Search(Ctrl+Shift+F)中使用 **/Dockerfile,**/Dockerfile.*,**/*.dockerfile 范围,模式为 (AKIA[0-9A-Z]{16}|(aws_secret|api[_-]?key|token|passwd|password|secret)\s*[:=]\s*['\"][^'\"]{4,}['\"]) 并启用 case-insensitive 标志(点击搜索面板中的 'Aa' 切换)以收集硬编码密钥命中。 +2. 在 Baserow 中创建数据库 "Container Security Review 2026-04-12" 和表 "Dockerfile Audit",按字母顺序为 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中每个服务插入一行,使用记录的属性,并按给定扣分规则计算 Compliance Score,向下截断到 >=0,Captured At=2026-04-12。 +3. 创建表 "Hardcoded Secrets" 并为每个 regex 命中插入一行,按 File Path 然后 Line Number 排序,Severity 由 Pattern Name 推导,Detected At=2026-04-12;为 Compliance Score 建立按升序排序的 Grid 视图 "Compliance Ranking" 以及按 Pattern Name 堆叠的 Kanban 视图 "By Pattern"。 +4. 在 code-server 中,创建 devops-configs/docs/docker-audit-2026-04-12.md,使用计算得到的 avg_score、failing_count、secret_count、Critical count 和 High count 写入恰好 5 行报告,保存后在 devops-configs 仓库中仅暂存该文件,并以 "audit: docker compliance 2026-04-12" 提交。 +5. 在 OpenProject 项目 "devops-automation" 中,验证/创建 "Immediate" priority enumeration,然后为每一条 Hardcoded Secrets 记录创建一个 Bug 工作包(Critical 用 Immediate,High 用 High),使用指定的 subject/assignee/description;并为每一条 Compliance Score < 75 的 Dockerfile Audit 记录创建一个 Task 工作包(priority High,assignee richard.rethethman)并使用指定的 subject 和 description。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Software/software_043/description_zh.md b/tasks/uni-m/Software/software_043/description_zh.md new file mode 100644 index 0000000..c871212 --- /dev/null +++ b/tasks/uni-m/Software/software_043/description_zh.md @@ -0,0 +1,13 @@ +**任务要求:** + +作为 Marketing Communications Manager,协调一项针对来信媒体询问的回应:(1)在 Mattermost 中,在 Marketing & Growth 团队里创建一个新的私有频道,名为 'media-response-privacy-security',purpose 为 'Coordinate response to Robert Singh media inquiry regarding customer data privacy and security posture.'。发布一条消息 'Journalist: Robert Singh (Stellar Tech). Key questions: (1) data protection controls and certifications, (2) incident response readiness and breach notification commitments, (3) executive availability to discuss our security roadmap.',总结记者姓名、媒体机构和邮件中的关键问题。然后使用 @mention 在线程中的后续回复里标记 'tonda',文本为 '@tonda — please review the draft statement and approved quote for legal vetting and executive sign-off before we respond. Given security sensitivity, target turnaround: 24 hours.'。将原始询问信息摘要消息保存/标记以便后续参考。(2)在 OnlyOffice 中,创建一个新文档,标题为 'Media Statement - Data Privacy and Security Inquiry',放在 My Documents 中。其结构应包含:标题 'Official Statement — Customer Data Privacy and Security Posture',一个 'Background' 部分,文本为 'On April 28, Stellar Tech reporter Robert Singh contacted our communications team requesting an official statement on our customer data privacy controls, security certifications, incident response readiness, and executive commentary on our security roadmap.',一个 'Key Messages' 部分,包含 4 条项目符号:'1) Protecting customer data is foundational to our business and embedded in every layer of our platform. 2) We maintain industry-recognized certifications and undergo regular independent third-party audits of our controls. 3) Our incident response program is continuously tested with clear escalation paths and transparent customer notification commitments. 4) Executive leadership is available to discuss our multi-year security investment roadmap in greater depth.',以及一个 'Approved Quote' 部分,文本为 'Customer trust is earned through consistent, transparent, and rigorous protection of their data — it is a commitment we live by every day, not a checkbox we periodically revisit.',署名为 'Maria Wilson, Product Manager'。启用文档的 track changes。将该文档共享给 'amit.singh' 以便编辑。 + +**步骤:** + +1. 在 Mattermost(Marketing & Growth 团队)中,创建私有频道 'media-response-privacy-security',purpose 为 'Coordinate response to Robert Singh media inquiry regarding customer data privacy and security posture.'。发布 'Journalist: Robert Singh (Stellar Tech). Key questions: (1) data protection controls and certifications, (2) incident response readiness and breach notification commitments, (3) executive availability to discuss our security roadmap.' 来总结询问。在线程中 @mention 'tonda',内容为 '@tonda — please review the draft statement and approved quote for legal vetting and executive sign-off before we respond. Given security sensitivity, target turnaround: 24 hours.'。保存/标记原始摘要消息。 +2. 在 OnlyOffice 中,创建文档 'Media Statement - Data Privacy and Security Inquiry' 于 My Documents,包含标题、Background 部分('On April 28, Stellar Tech reporter Robert Singh contacted our communications team requesting an official statement on our customer data privacy controls, security certifications, incident response readiness, and executive commentary on our security roadmap.')、Key Messages 部分(4 条 bullet '1) Protecting customer data is foundational to our business and embedded in every layer of our platform. 2) We maintain industry-recognized certifications and undergo regular independent third-party audits of our controls. 3) Our incident response program is continuously tested with clear escalation paths and transparent customer notification commitments. 4) Executive leadership is available to discuss our multi-year security investment roadmap in greater depth.')、以及 Approved Quote 部分('Customer trust is earned through consistent, transparent, and rigorous protection of their data — it is a commitment we live by every day, not a checkbox we periodically revisit.',署名 'Maria Wilson, Product Manager')。启用 track changes,并共享给 'amit.singh' 供编辑。 + +**登录凭据:** + +- mattermost: admin / SeedAdmin1pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Software/software_044/description_zh.md b/tasks/uni-m/Software/software_044/description_zh.md new file mode 100644 index 0000000..235495e --- /dev/null +++ b/tasks/uni-m/Software/software_044/description_zh.md @@ -0,0 +1,33 @@ +**任务要求:** + +作为 Board Secretary,准备并分发一套董事会会议材料:(1)在 OnlyOffice 中,在 Common Documents 创建一个新演示文稿,标题为 'Annual_Strategy_Board_Session_2026'。添加 3 张幻灯片:Slide 1 标题 'Annual Strategy Board Session 2026',正文 'Year-End Strategic Review and Forward Planning - Prepared by the Office of the Board Secretary';Slide 2 标题 'Session Agenda',并包含一个有 3 列(Topic, Presenter, Duration)和 5 行的表格,内容为 Row1: Opening Remarks and Prior Minutes | Administrator | 10 min;Row2: FY2026 Financial Close Preview | Laura Brown | 30 min;Row3: 2027 Product Strategy | Maria Wilson | 25 min;Row4: Engineering Roadmap and Platform Investments | Jun Chen | 20 min;Row5: Talent and Culture Report | Amit Singh | 15 min;Slide 3 标题 'Resolutions and Closing',正文 'Directors will deliberate on strategic resolutions, record votes on the FY2027 operating plan, and confirm dates for the upcoming committee reviews.'。将演示文稿共享给用户 'laura.brown' 供编辑、用户 'jun.chen' 供查看。然后将演示文稿下载为 PDF 格式。(2)在 ownCloud 中,在根目录下创建名为 'Annual_Strategy_Session_2026' 的文件夹。在其内创建两个子文件夹:'Financial_Close' 和 'Governance_Materials'。将下载的 PDF 上传到 'Annual_Strategy_Session_2026'。在 'Governance_Materials' 中创建一个名为 'resolution_log.txt' 的文本文件,内容为 'Annual Strategy Session 2026 Resolution Log +Resolution A: Adoption of FY2027 Operating Plan - PENDING +Resolution B: Renewal of Audit Committee Charter - PENDING +Resolution C: Ratification of Director Compensation - PENDING +Quorum Verification: TBD +Minutes Certified By: Office of the Board Secretary'。将标签 'Restricted' 添加到文件夹 'Annual_Strategy_Session_2026'。与 group 'admin' 以只读权限共享 'Annual_Strategy_Session_2026'。获取该文件夹的私有链接(permanent internal link)以供参考。(3)在 Mattermost 中,在 Product & Design 团队里,进入已有频道 'Roadmap'。发布一条消息 'Annual Strategy Session 2026 materials have been finalized. Directors may access the complete governance binder through the ownCloud private link: [PRIVATE_LINK]. Please review before the session.',其中包含第 2 步获得的私有链接。将这条消息 pin 到频道。然后向用户 'katheleen' 发送一条私信,文本为 'Hello Katheleen, kindly perform a legal review of the Annual Strategy Session 2026 governance binder referenced in the Roadmap channel. The resolution log and FY2027 plan need counsel sign-off prior to circulation. Thank you.',请求对治理材料进行法律审查。(4)在 Roundcube 中,创建一个新的发件人身份,显示名为 'Marcus Torres - Corporate Secretariat',email 为 'marcus.torres@mail.local',organization 为 'Office of the Corporate Secretariat',并设置纯文本签名 'Marcus Torres +Acting Board Secretary +Office of the Corporate Secretariat +marcus.torres@mail.local'。然后使用这个新身份,向 ['sarah.obrien@mail.local', 'ben.kowalski@mail.local', 'emma.larsson@mail.local'] 发送一封邮件,CC 为 'rachel.goldberg@mail.local',subject 为 'Annual Strategy Session 2026 - Governance Binder and Resolutions',body 为 'Dear Directors, + +Attached you will find the complete governance binder for the Annual Strategy Session 2026, including the session agenda, FY2027 operating plan preview, and the pending resolutions slate. Please review carefully ahead of the session and come prepared to vote on the listed resolutions. + +Do not hesitate to reach out should you require any clarifications. + +Kind regards, +Marcus Torres +Acting Board Secretary',并将 message priority 设为 High。发送后,转到 Sent 文件夹并将该已发送邮件标记为 flagged。 + +**步骤:** + +1. 在 OnlyOffice 中创建一份演示文稿,包含指定幻灯片(标题页、议程表页、总结页),共享给指定用户并设置不同权限,然后下载为 PDF。 +2. 在 ownCloud 中创建带有 financials 和 governance 子文件夹的层级董事会文件夹结构,上传 PDF,创建投票记录文本文件,添加标签,与 board members group 以只读方式共享,并获取私有链接。 +3. 在 Mattermost 中,在高管频道发布包含 ownCloud 私有链接的董事会准备公告,将其置顶,并向公司法务发送私信请求法律审查。 +4. 在 Roundcube 中,创建一个新的发件人身份,包含组织和签名信息,使用该身份撰写并发送一封高优先级邮件给董事会成员,然后在 Sent 文件夹中标记该邮件。 + +**登录凭据:** + +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- owncloud: admin / admin +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Software/software_046/description_zh.md b/tasks/uni-m/Software/software_046/description_zh.md new file mode 100644 index 0000000..e7a5c0b --- /dev/null +++ b/tasks/uni-m/Software/software_046/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +构建一个发布候选版 QA 签署工作流,包含基于公开表单的干系人签署。在 OpenProject 项目 "data-analytics-pipeline" 中,进入 Versions (Roadmap) 并创建一个名为 "v3.2.0-rc1" 的版本,status=open,start date=2025-07-07,due date=2025-07-16,description 精确为 "Release candidate for v3.2.0; sign-off window 2025-07-07 to 2025-07-16"。在 code-server 中,打开 data-analyzer/pyproject.toml,并使用 Find (Ctrl+F) 找到行 "version":"(适用于 package.json)或 "version = "(适用于 Python pyproject.toml/setup.py);使用 Find and Replace (Ctrl+H) 将版本字符串从 0.1.0 改为精确的 3.2.0-rc1,使用 Ctrl+S 保存。然后在同一项目中打开 data-analyzer/CHANGELOG.md,使用 Find (Ctrl+F) 找到精确行 "## [Unreleased]",并在其正下方恰好插入三行新内容:第 A 行 "## [3.2.0-rc1] - 2025-07-07",第 B 行 "### Candidate for v3.2.0",第 C 行 "- Sign-off window: 2025-07-07 to 2025-07-16";保存文件。在 Source Control 面板中,将仓库下拉切换到 data-analyzer,恰好暂存这两个修改过的文件,并以精确提交信息 "chore(release): prepare 3.2.0-rc1 candidate" 提交。在 Baserow 中创建一个数据库 "RC Sign-off v3.2.0" 和两个表。表 1 "Sign-off Criteria"(字段:Criterion ID [primary text,格式为 SC-<NN>,从 SC-01 开始]、Criterion Name [text]、Category [single-select: Functional/Performance/Security/Documentation/Rollback]、Required Approver Role [single-select: QALead/SecurityEngineer/ProductOwner/ReleaseManager]、Target [text]、Status [single-select: Pending/Passed/Failed])——使用 [{"name": "Data ingestion pipeline validated", "category": "Functional", "approver_role": "QALead", "target": "All loader and reporter unit tests pass"}, {"name": "Analysis throughput >= 1M rows/min", "category": "Performance", "approver_role": "QALead", "target": "Benchmark completes within 60s for 1M-row dataset"}, {"name": "No secrets or credentials in repo", "category": "Security", "approver_role": "SecurityEngineer", "target": "truffleHog and gitleaks scans return zero findings"}, {"name": "User manual and API reference refreshed", "category": "Documentation", "approver_role": "ProductOwner", "target": "docs/ site builds and CHANGELOG is current"}, {"name": "Database migration rollback rehearsed", "category": "Rollback", "approver_role": "ReleaseManager", "target": "Rollback tested in staging within 8 minutes"}](一个包含 name、category、approver_role、target 的对象列表)恰好插入 5 行,所有 Status=Pending。表 2 "Stakeholder Approvals"(字段:Approval ID [primary text,格式为 AP-<NNN>,从 AP-001 开始]、Approver Name [text]、Approver Role [text]、Criterion ID [link to Sign-off Criteria]、Approved [boolean]、Comment [long text]、Submitted At [date])——初始留空;它将通过表单提交填充。在 "Stakeholder Approvals" 表上创建一个名为 "RC Sign-off Form" 的 Form 视图,标题为 "v3.2.0-rc1 Sign-off",描述为 "Please submit your approval for each assigned criterion. Window closes 2025-07-16.",在表单中包含除 Approval ID 和 Submitted At 之外的所有字段,将 Approver Name、Approver Role、Criterion ID 和 Approved 标记为必填,并将提交后消息配置为 "Thank you — your approval for v3.2.0-rc1 has been recorded.";启用表单提交时的邮件通知。记录公开表单 URL。然后使用 [{"approver_name": "Paul Garcia", "approver_role": "QALead", "criterion_id": "SC-01", "approved": true, "comment": "Loader and reporter unit tests all green on CI."}, {"approver_name": "Paul Garcia", "approver_role": "QALead", "criterion_id": "SC-02", "approved": true, "comment": "Benchmark completed in 47s for 1M-row dataset."}, {"approver_name": "Thomas Nickson", "approver_role": "SecurityEngineer", "criterion_id": "SC-03", "approved": true, "comment": "truffleHog and gitleaks scans clean; no secrets detected."}, {"approver_name": "Nora Mott", "approver_role": "ProductOwner", "criterion_id": "SC-04", "approved": false, "comment": "API reference section for new reporter module is missing; needs update before GA."}, {"approver_name": "Michael Robicheaux", "approver_role": "ReleaseManager", "criterion_id": "SC-05", "approved": true, "comment": "Rollback rehearsal finished in 6 minutes on staging."}, {"approver_name": "Sandra Love", "approver_role": "QALead", "criterion_id": "SC-01", "approved": true, "comment": "Secondary QA confirmation — full regression pack clean."}](一个包含 approver_name、approver_role、criterion_id、approved、comment 的对象列表)恰好提交 6 次,每个条目一次提交;在所有提交记录之后,将所有行的 Submitted At 更新为 2025-07-14,并按提交顺序将 Approval ID 顺序填入,从 AP-001 开始(AP-001、AP-002、……)。对于每个 Criterion ID,只要该 Criterion 的 Required Approver Role 提交过至少一次 Approved=true,则将对应的 "Sign-off Criteria" 行的 Status 更新为 "Passed";如果该 Required Approver Role 提交过至少一次 Approved=false,则将 Status 设为 "Failed";其他保持 "Pending"。在 OpenProject 项目 "data-analytics-pipeline" 中,创建恰好一个父级 Milestone 类型工作包,subject 为 "RC Sign-off: v3.2.0-rc1",分配到版本 "v3.2.0-rc1",start date=2025-07-16,priority High,description 精确为 "Sign-off form: <public_form_url>; Passed: <P>; Failed: <F>; Pending: <N>",其中 <public_form_url> 是上面记录的 URL,P/F/N 是来自 "Sign-off Criteria" 表的计数。此外,为每个 Status=Failed 的 "Sign-off Criteria" 行创建恰好一个 Bug 类型工作包,设上面的 Milestone 为其 parent,分配到版本 "v3.2.0-rc1",subject 为 "Fix before GA: <Criterion Name>",priority High,assignee michael.robicheaux,description 精确为 "Category: <Category>; Target: <Target>; Required Approver Role: <Required Approver Role>"。 + +**步骤:** + +1. 在 OpenProject 项目 "data-analytics-pipeline" 中,在 Versions (Roadmap) 页面创建版本 "v3.2.0-rc1",使用指定的 status、日期和 description。 +2. 在 code-server 中,打开 data-analyzer/pyproject.toml,使用 Find and Replace 将版本从 0.1.0 改为 3.2.0-rc1 并保存;打开 data-analyzer/CHANGELOG.md,在 "## [Unreleased]" 正下方插入三行指定内容并保存;在 Source Control 面板将仓库切换到 data-analyzer,恰好暂存这两个文件,并以 "chore(release): prepare 3.2.0-rc1 candidate" 提交。 +3. 在 Baserow 中创建数据库 "RC Sign-off v3.2.0" 和表 "Sign-off Criteria",填充 5 行,创建 "Stakeholder Approvals"(初始为空)以及名为 "RC Sign-off Form" 的 Form 视图,按指定方式配置(必填字段、提交后消息、启用邮件通知);记录公开表单 URL。 +4. 使用给定数据恰好提交 6 次表单;所有提交完成后,将所有行的 Submitted At 设为 2025-07-14 并按提交顺序填充 Approval ID;然后根据对应必需角色是否提交 approved=true/false 更新 Sign-off Criteria 状态为 "Passed" 或 "Failed"。 +5. 在 OpenProject 中创建父级 Milestone 工作包 "RC Sign-off: v3.2.0-rc1",分配版本并使用包含表单 URL 和计数的描述,以及每个 Failed criterion 对应的 Bug 工作包,设置指定的 subject、priority、assignee michael.robicheaux 和 description,并将 Milestone 作为 parent。 + +**登录凭据:** + +- openproject: admin / AdminPass123! +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 diff --git a/tasks/uni-m/Software/software_047/description_zh.md b/tasks/uni-m/Software/software_047/description_zh.md new file mode 100644 index 0000000..02476d6 --- /dev/null +++ b/tasks/uni-m/Software/software_047/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +构建一个 Docker 和容器化合规审计,覆盖可部署服务 ["blog-engine", "devops-configs", "tabler", "todo-api"]。在 code-server 中,对每个服务 ["blog-engine", "devops-configs", "tabler", "todo-api"],打开其 Dockerfile,路径由 {"blog-engine": "blog-engine/Dockerfile", "devops-configs": "devops-configs/docker/Dockerfile.node", "tabler": "tabler/Dockerfile", "todo-api": "todo-api/Dockerfile"} 给出(一个从服务名到 Dockerfile 路径的 JSON 映射)。对于每个 Dockerfile,使用编辑器记录:FROM 基础镜像(包含 tag 的完整字符串)、镜像 tag 是否为 "latest" 或缺失、是否存在 USER 指令(若存在,则是否为 "root")、是否声明 HEALTHCHECK、RUN 指令数量,以及 Dockerfile 是否包含 multi-stage build(即是否有多个 FROM 指令)。使用全局 Search 面板(Ctrl+Shift+F),启用 regex,将 'files to include' 设为 "**/Dockerfile,**/Dockerfile.*,**/*.dockerfile",并使用模式 (AKIA[0-9A-Z]{16}|(aws_secret|api[_-]?key|token|passwd|password|secret)\s*[:=]\s*['\"][^'\"]{4,}['\"]),同时启用大小写不敏感标志(点击 'Aa' 按钮或在搜索面板中使用 /pattern/i 切换),以检测 Dockerfile 中任何硬编码密钥模式(AWS keys、API tokens、passwords);将每个命中记录为 (file_path, line_number, pattern_name)。在 Baserow 中创建一个名为 "Container Security Review 2026-04-12" 的数据库,并创建两个表。表 1 "Dockerfile Audit"(字段:Audit ID [primary text,格式为 DA-<NN>,从 DA-01 开始]、Service [single-select,且仅包含 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中的值]、Dockerfile Path [text]、Base Image [text]、Uses Latest Tag [boolean]、Runs As Root [boolean]、Has Healthcheck [boolean]、Multistage Build [boolean]、Run Instruction Count [number]、Captured At [date]、Compliance Score [number])——按字母顺序在 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中每个服务插入恰好一行;Compliance Score 的计算方式为:从 100 开始;如果 Uses Latest Tag=true 则减 25;如果 Runs As Root=true 则减 25;如果 Has Healthcheck=false 则减 15;如果 Multistage Build=false 则减 10;再减去 5 * max(0, Run Instruction Count - 6);最后向下截断到不小于 0。Captured At=2026-04-12。表 2 "Hardcoded Secrets"(字段:Finding ID [primary text,格式为 HS-<NNN>,从 HS-001 开始]、Service [single-select,且仅包含 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中的值]、File Path [text]、Line Number [number]、Pattern Name [single-select: AWSKey/APIToken/Password/Other]、Severity [single-select: Critical/High]、Detected At [date])——按 File Path 字母序然后 Line Number 升序,针对每个 regex 命中插入恰好一行;当 Pattern Name IN (AWSKey, APIToken) 时 Severity=Critical,否则为 High;Detected At=2026-04-12。为 "Dockerfile Audit" 创建一个名为 "Compliance Ranking" 的 Grid 视图,按 Compliance Score 升序(最小值在前)排序;为 "Hardcoded Secrets" 创建一个名为 "By Pattern" 的 Kanban 视图,按 Pattern Name 堆叠。在 code-server 中,在 devops-configs/docs/docker-audit-2026-04-12.md 创建一个新文件,内容必须恰好按顺序包含这些行:第 1 行 "# Docker Audit — 2026-04-12",第 2 行 "Services scanned: <comma-separated services sorted alphabetically>",第 3 行 "Avg compliance score: <avg_score>" 其中 avg_score = round(所有行的 Compliance Score 平均值, 1),第 4 行 "Services below 75: <failing_count>",第 5 行 "Hardcoded secrets found: <secret_count> (Critical: <crit>; High: <high>)";使用 Ctrl+S 保存。在 Source Control 面板中,将仓库下拉切换到 devops-configs,仅暂存这个新文件,并以精确提交信息 "audit: docker compliance 2026-04-12" 提交。在 OpenProject 项目 "devops-automation" 中,进入 Admin - Enumerations (Priorities) 并确认 "Immediate" 存在。然后为 "Hardcoded Secrets" 中的每一行创建恰好一个 Bug 类型工作包,subject 为 "SECRET LEAK [<Service>]: <Pattern Name> at <File Path>:<Line Number>",assignee 为 sandra.love,priority 在 Severity=Critical 时为 Immediate,否则为 High,description 精确为 "Audit date: 2026-04-12; File: <File Path>:<Line Number>; Pattern: <Pattern Name>"。此外,为每一条 Compliance Score < 75 的 "Dockerfile Audit" 行创建恰好一个 Task 类型工作包,subject 为 "Harden Dockerfile: <Service> (score <Compliance Score>)",assignee 为 richard.rethman,priority 为 High,description 精确为 "Base: <Base Image>; LatestTag: <Uses Latest Tag>; Root: <Runs As Root>; Healthcheck: <Has Healthcheck>; Multistage: <Multistage Build>; RUN count: <Run Instruction Count>"。 + +**步骤:** + +1. 在 code-server 中,打开每个服务的 Dockerfile(路径为 {"blog-engine": "blog-engine/Dockerfile", "devops-configs": "devops-configs/docker/Dockerfile.node", "tabler": "tabler/Dockerfile", "todo-api": "todo-api/Dockerfile"}),记录 base image、latest-tag 使用情况、USER presence/root status、HEALTHCHECK presence、RUN count 以及是否为 multistage;然后在全局 regex Search(Ctrl+Shift+F)中使用 **/Dockerfile,**/Dockerfile.*,**/*.dockerfile 范围,模式为 (AKIA[0-9A-Z]{16}|(aws_secret|api[_-]?key|token|passwd|password|secret)\s*[:=]\s*['\"][^'\"]{4,}['\"]) 并启用大小写不敏感标志(点击搜索面板中的 'Aa' 切换)以收集硬编码密钥命中。 +2. 在 Baserow 中创建数据库 "Container Security Review 2026-04-12" 和表 "Dockerfile Audit",按字母顺序为 ["blog-engine", "devops-configs", "tabler", "todo-api"] 中每个服务插入一行,使用记录的属性,并按给定扣分规则计算 Compliance Score,向下截断到 >=0,Captured At=2026-04-12。 +3. 创建表 "Hardcoded Secrets" 并为每个 regex 命中插入一行,按 File Path 然后 Line Number 排序,Severity 由 Pattern Name 推导,Detected At=2026-04-12;为 Compliance Score 建立按升序排序的 Grid 视图 "Compliance Ranking" 以及按 Pattern Name 堆叠的 Kanban 视图 "By Pattern"。 +4. 在 code-server 中,创建 devops-configs/docs/docker-audit-2026-04-12.md,使用计算得到的 avg_score、failing_count、secret_count、Critical count 和 High count 写入恰好 5 行报告,保存后在 devops-configs 仓库中仅暂存该文件,并以 "audit: docker compliance 2026-04-12" 提交。 +5. 在 OpenProject 项目 "devops-automation" 中,验证/创建 "Immediate" priority enumeration,然后为每一条 Hardcoded Secrets 记录创建一个 Bug 工作包(Critical 用 Immediate,High 用 High),使用指定的 subject/assignee/description;并为每一条 Compliance Score < 75 的 Dockerfile Audit 记录创建一个 Task 工作包(priority High,assignee richard.rethman)并使用指定的 subject 和 description。 + +**登录凭据:** + +- code-server: (no username) / 8a128206e2177bce1e48e565 +- baserow: admin@example.com / Admin1234 +- openproject: admin / AdminPass123! diff --git a/tasks/uni-m/Teamwork/teamwork_009/description_zh.md b/tasks/uni-m/Teamwork/teamwork_009/description_zh.md new file mode 100644 index 0000000..c871212 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_009/description_zh.md @@ -0,0 +1,13 @@ +**任务要求:** + +作为 Marketing Communications Manager,协调一项针对来信媒体询问的回应:(1)在 Mattermost 中,在 Marketing & Growth 团队里创建一个新的私有频道,名为 'media-response-privacy-security',purpose 为 'Coordinate response to Robert Singh media inquiry regarding customer data privacy and security posture.'。发布一条消息 'Journalist: Robert Singh (Stellar Tech). Key questions: (1) data protection controls and certifications, (2) incident response readiness and breach notification commitments, (3) executive availability to discuss our security roadmap.',总结记者姓名、媒体机构和邮件中的关键问题。然后使用 @mention 在线程中的后续回复里标记 'tonda',文本为 '@tonda — please review the draft statement and approved quote for legal vetting and executive sign-off before we respond. Given security sensitivity, target turnaround: 24 hours.'。将原始询问信息摘要消息保存/标记以便后续参考。(2)在 OnlyOffice 中,创建一个新文档,标题为 'Media Statement - Data Privacy and Security Inquiry',放在 My Documents 中。其结构应包含:标题 'Official Statement — Customer Data Privacy and Security Posture',一个 'Background' 部分,文本为 'On April 28, Stellar Tech reporter Robert Singh contacted our communications team requesting an official statement on our customer data privacy controls, security certifications, incident response readiness, and executive commentary on our security roadmap.',一个 'Key Messages' 部分,包含 4 条项目符号:'1) Protecting customer data is foundational to our business and embedded in every layer of our platform. 2) We maintain industry-recognized certifications and undergo regular independent third-party audits of our controls. 3) Our incident response program is continuously tested with clear escalation paths and transparent customer notification commitments. 4) Executive leadership is available to discuss our multi-year security investment roadmap in greater depth.',以及一个 'Approved Quote' 部分,文本为 'Customer trust is earned through consistent, transparent, and rigorous protection of their data — it is a commitment we live by every day, not a checkbox we periodically revisit.',署名为 'Maria Wilson, Product Manager'。启用文档的 track changes。将该文档共享给 'amit.singh' 以便编辑。 + +**步骤:** + +1. 在 Mattermost(Marketing & Growth 团队)中,创建私有频道 'media-response-privacy-security',purpose 为 'Coordinate response to Robert Singh media inquiry regarding customer data privacy and security posture.'。发布 'Journalist: Robert Singh (Stellar Tech). Key questions: (1) data protection controls and certifications, (2) incident response readiness and breach notification commitments, (3) executive availability to discuss our security roadmap.' 来总结询问。在线程中 @mention 'tonda',内容为 '@tonda — please review the draft statement and approved quote for legal vetting and executive sign-off before we respond. Given security sensitivity, target turnaround: 24 hours.'。保存/标记原始摘要消息。 +2. 在 OnlyOffice 中,创建文档 'Media Statement - Data Privacy and Security Inquiry' 于 My Documents,包含标题、Background 部分('On April 28, Stellar Tech reporter Robert Singh contacted our communications team requesting an official statement on our customer data privacy controls, security certifications, incident response readiness, and executive commentary on our security roadmap.')、Key Messages 部分(4 条 bullet '1) Protecting customer data is foundational to our business and embedded in every layer of our platform. 2) We maintain industry-recognized certifications and undergo regular independent third-party audits of our controls. 3) Our incident response program is continuously tested with clear escalation paths and transparent customer notification commitments. 4) Executive leadership is available to discuss our multi-year security investment roadmap in greater depth.')、以及 Approved Quote 部分('Customer trust is earned through consistent, transparent, and rigorous protection of their data — it is a commitment we live by every day, not a checkbox we periodically revisit.',署名 'Maria Wilson, Product Manager')。启用 track changes,并共享给 'amit.singh' 供编辑。 + +**登录凭据:** + +- mattermost: admin / SeedAdmin1pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Teamwork/teamwork_011/description_zh.md b/tasks/uni-m/Teamwork/teamwork_011/description_zh.md new file mode 100644 index 0000000..235495e --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_011/description_zh.md @@ -0,0 +1,33 @@ +**任务要求:** + +作为 Board Secretary,准备并分发一套董事会会议材料:(1)在 OnlyOffice 中,在 Common Documents 创建一个新演示文稿,标题为 'Annual_Strategy_Board_Session_2026'。添加 3 张幻灯片:Slide 1 标题 'Annual Strategy Board Session 2026',正文 'Year-End Strategic Review and Forward Planning - Prepared by the Office of the Board Secretary';Slide 2 标题 'Session Agenda',并包含一个有 3 列(Topic, Presenter, Duration)和 5 行的表格,内容为 Row1: Opening Remarks and Prior Minutes | Administrator | 10 min;Row2: FY2026 Financial Close Preview | Laura Brown | 30 min;Row3: 2027 Product Strategy | Maria Wilson | 25 min;Row4: Engineering Roadmap and Platform Investments | Jun Chen | 20 min;Row5: Talent and Culture Report | Amit Singh | 15 min;Slide 3 标题 'Resolutions and Closing',正文 'Directors will deliberate on strategic resolutions, record votes on the FY2027 operating plan, and confirm dates for the upcoming committee reviews.'。将演示文稿共享给用户 'laura.brown' 供编辑、用户 'jun.chen' 供查看。然后将演示文稿下载为 PDF 格式。(2)在 ownCloud 中,在根目录下创建名为 'Annual_Strategy_Session_2026' 的文件夹。在其内创建两个子文件夹:'Financial_Close' 和 'Governance_Materials'。将下载的 PDF 上传到 'Annual_Strategy_Session_2026'。在 'Governance_Materials' 中创建一个名为 'resolution_log.txt' 的文本文件,内容为 'Annual Strategy Session 2026 Resolution Log +Resolution A: Adoption of FY2027 Operating Plan - PENDING +Resolution B: Renewal of Audit Committee Charter - PENDING +Resolution C: Ratification of Director Compensation - PENDING +Quorum Verification: TBD +Minutes Certified By: Office of the Board Secretary'。将标签 'Restricted' 添加到文件夹 'Annual_Strategy_Session_2026'。与 group 'admin' 以只读权限共享 'Annual_Strategy_Session_2026'。获取该文件夹的私有链接(permanent internal link)以供参考。(3)在 Mattermost 中,在 Product & Design 团队里,进入已有频道 'Roadmap'。发布一条消息 'Annual Strategy Session 2026 materials have been finalized. Directors may access the complete governance binder through the ownCloud private link: [PRIVATE_LINK]. Please review before the session.',其中包含第 2 步获得的私有链接。将这条消息 pin 到频道。然后向用户 'katheleen' 发送一条私信,文本为 'Hello Katheleen, kindly perform a legal review of the Annual Strategy Session 2026 governance binder referenced in the Roadmap channel. The resolution log and FY2027 plan need counsel sign-off prior to circulation. Thank you.',请求对治理材料进行法律审查。(4)在 Roundcube 中,创建一个新的发件人身份,显示名为 'Marcus Torres - Corporate Secretariat',email 为 'marcus.torres@mail.local',organization 为 'Office of the Corporate Secretariat',并设置纯文本签名 'Marcus Torres +Acting Board Secretary +Office of the Corporate Secretariat +marcus.torres@mail.local'。然后使用这个新身份,向 ['sarah.obrien@mail.local', 'ben.kowalski@mail.local', 'emma.larsson@mail.local'] 发送一封邮件,CC 为 'rachel.goldberg@mail.local',subject 为 'Annual Strategy Session 2026 - Governance Binder and Resolutions',body 为 'Dear Directors, + +Attached you will find the complete governance binder for the Annual Strategy Session 2026, including the session agenda, FY2027 operating plan preview, and the pending resolutions slate. Please review carefully ahead of the session and come prepared to vote on the listed resolutions. + +Do not hesitate to reach out should you require any clarifications. + +Kind regards, +Marcus Torres +Acting Board Secretary',并将 message priority 设为 High。发送后,转到 Sent 文件夹并将该已发送邮件标记为 flagged。 + +**步骤:** + +1. 在 OnlyOffice 中创建一份演示文稿,包含指定幻灯片(标题页、议程表页、总结页),共享给指定用户并设置不同权限,然后下载为 PDF。 +2. 在 ownCloud 中创建带有 financials 和 governance 子文件夹的层级董事会文件夹结构,上传 PDF,创建投票记录文本文件,添加标签,与 board members group 以只读方式共享,并获取私有链接。 +3. 在 Mattermost 中,在高管频道发布包含 ownCloud 私有链接的董事会准备公告,将其置顶,并向公司法务发送私信请求法律审查。 +4. 在 Roundcube 中,创建一个新的发件人身份,包含组织和签名信息,使用该身份撰写并发送一封高优先级邮件给董事会成员,然后在 Sent 文件夹中标记该邮件。 + +**登录凭据:** + +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- owncloud: admin / admin +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_014/description_zh.md b/tasks/uni-m/Teamwork/teamwork_014/description_zh.md new file mode 100644 index 0000000..5ce8196 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_014/description_zh.md @@ -0,0 +1,29 @@ +**任务要求:** + +作为一名销售运营经理,准备并交付一份客户入职材料包:(1) 在 OnlyOffice 中,在 My Documents 里创建一个新文档,标题为 'Meridian Biotech - Welcome Letter'。将其结构设置为标题 'Welcome to the Meridian Biotech Journey',一段 'Dear Dr. Eleanor Chadwick,',随后是正文 'On behalf of our entire organization, we are honored to welcome Meridian Biotech as our newest research partner. Our mission is to accelerate your scientific and operational objectives through tailored solutions, rigorous data governance, and a responsive support model designed for life sciences workflows.',一个名为 'Your Dedicated Team' 的部分,其中包含一个有 3 列(Role, Name, Email)和 5 行的表格,分别填入 Account Manager, Laura Brown, laura.brown@onlyoffice.local; HR Director, Amit Singh, amit.singh@onlyoffice.local; Engineering Lead, Jun Chen, jun.chen@onlyoffice.local; Product Manager, Maria Wilson, maria.wilson@onlyoffice.local; Customer Success Lead, Alice Wang, alice@onlyoffice.com,以及结尾 'Sincerely and with excitement for what lies ahead, The Sales Operations Team'。然后在 My Documents 中创建第二个文档,标题为 'Meridian Biotech - Service Agreement',包含标题 'Professional Services Agreement',一个 'Scope of Services' 部分,文本为 'Provider shall furnish platform configuration, HIPAA-aligned integration with Client's laboratory information systems, validation support, a dedicated customer success lead, and ongoing Tier-2 and Tier-3 production support, including semi-annual roadmap alignment sessions.',一个 'Terms' 部分,含 6 条编号项目 '1. Term: 36 months commencing on the effective date, with automatic renewal in 12-month increments unless terminated with 90 days written notice. 2. Fees: Monthly subscription billed in advance; professional services billed against the approved Statement of Work. 3. Service Levels: 99.95% platform availability with defined service credits as set forth in Exhibit A. 4. Confidentiality and Data Protection: Each party shall safeguard the other's confidential and regulated data in accordance with applicable privacy laws. 5. Intellectual Property: Pre-existing IP remains with the originating party; deliverables are licensed per the Statement of Work. 6. Termination: Either party may terminate for uncured material breach upon 30 days written notice.',以及一个 'Acceptance' 部分,文本为 'The parties, intending to be legally bound, execute this Agreement through their authorized representatives below.'。将 'Meridian Biotech - Service Agreement' 在 OnlyOffice 中标记为收藏。(2) 在 ownCloud 中,创建一个名为 'Meridian-Biotech-Onboarding' 的文件夹,位于根目录下。在其中创建子文件夹 'Client-Messages' 和 'Signed-Agreements'。在 'Meridian-Biotech-Onboarding' 中创建一个名为 'meridian-onboarding-plan.txt' 的文本文件,内容为 'Meridian Biotech Onboarding Plan: +- Kickoff workshop scheduled +- Welcome letter distributed +- Service agreement executed +- Lab systems integration scoped +- Validation protocol draft circulated +- Production cutover date confirmed +- 60-day post-launch review booked'。为 'Client-Messages' 创建一个只读权限的公共分享链接,并为公共链接设置密码 'Meridian$Bio2026'。 (3) 在 Mattermost 中,在 Product & Design 团队里,创建一个新的公共频道,名为 'client-meridian-biotech',目的为 'Dedicated workspace for coordinating the Meridian Biotech onboarding program, product alignment, and ongoing partnership updates.'。在频道中发布消息 'Kicking off the Meridian Biotech client channel! Onboarding is officially underway — please review the pinned welcome letter and agreement, and introduce yourselves so the client knows their dedicated team.'。然后在该消息线程中回复,文本为 'Action items: (1) read the welcome letter, (2) countersign the service agreement, (3) access the Meridian ownCloud workspace, (4) RSVP for the kickoff workshop, (5) import the Meridian contacts into your Roundcube address book, (6) subscribe to this channel for updates.'。为原始启动消息添加表情反应 'handshake'。 (4) 在 Roundcube 中,在 Personal Address Book 里创建 5 个新联系人:Eleanor Chadwick, eleanor.chadwick@meridianbiotech.com; Rajiv Venkatraman, rajiv.venkatraman@meridianbiotech.com; Astrid Lindqvist, astrid.lindqvist@meridianbiotech.com; Omar El-Sayed, omar.elsayed@meridianbiotech.com; Nora Whitfield, nora.whitfield@meridianbiotech.com。创建一个名为 'Meridian Biotech Contacts' 的新联系人组,并将所有新创建的联系人加入该组。然后向该联系人组撰写一封电子邮件,主题为 'Welcome to Meridian Biotech Onboarding - Your Partnership Package Inside',正文为 'Dear Meridian Biotech team, + +It is our privilege to formally welcome you as a partner. The secure link below provides access to your personalized welcome letter, service agreement, and onboarding plan. Your dedicated cross-functional team is already in place and eager to support a smooth, compliant launch. Please do not hesitate to reach out with any questions. + +With warm regards, +The Sales Operations Team',并在正文中附上文本 'Secure Client Messages Folder: https://owncloud.local/s/MeridianClientMessages2026 (password protected - Meridian$Bio2026)',引用第 2 步中的公共链接 URL。将邮件优先级设为 Low。发送该邮件。 + +**步骤:** + +1. 在 OnlyOffice 中,创建一份欢迎信文档 'Meridian Biotech - Welcome Letter',包含 5 行团队表格,以及一份带有 scope、6 条 terms 和 acceptance 部分的服务协议文档 'Meridian Biotech - Service Agreement',位于 My Documents;将服务协议标记为收藏。 +2. 在 ownCloud 中,创建 'Meridian-Biotech-Onboarding',包含 'Client-Messages' 和 'Signed-Agreements' 子文件夹,添加 'meridian-onboarding-plan.txt',并在 'Client-Messages' 上创建一个受密码保护的公共分享链接(密码 'Meridian$Bio2026')。 +3. 在 Mattermost 中,在 Product & Design 团队里创建公共频道 'client-meridian-biotech',发布启动消息,在线程中回复行动项清单,并为启动消息添加 'handshake' 反应。 +4. 在 Roundcube 中,创建 5 个新联系人,将他们分组为 'Meridian Biotech Contacts',并向该组撰写并发送一封低优先级电子邮件,邮件中引用 ownCloud 公共链接和密码。 + +**登录凭据:** + +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- owncloud: admin / admin +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_020/description_zh.md b/tasks/uni-m/Teamwork/teamwork_020/description_zh.md new file mode 100644 index 0000000..ef6e55a --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_020/description_zh.md @@ -0,0 +1,28 @@ +**任务要求:** + +作为一名人力资源沟通专员,执行一项政策文档更新和发布流程:(1) 在 ownCloud 中,导航到现有文件 'Telehealth_GP_Phone_Service_Fee_Alignment_Determination_2021.docx',位置在文件夹 'files/doc/healthcare'。下载该文件。然后将 'Telehealth_GP_Phone_Service_Fee_Alignment_Determination_2021.docx' 重命名为 'Telehealth_GP_Phone_Service_Fee_Alignment_Determination_2021_ARCHIVED.docx'。为 'Telehealth_GP_Phone_Service_Fee_Alignment_Determination_2021_ARCHIVED.docx' 添加标签 'archived'。在 'files/doc/healthcare' 中创建一个名为 'Telehealth_Fee_Alignment_Policy_v2.txt' 的新文本文件,内容为 'Telehealth Fee Alignment Policy v2 — Effective September 1, 2026. This policy updates reimbursement structures for GP phone and video telehealth consultations. Phone consultations under 10 minutes are reimbursed at Tier A ($25); 10-20 minutes at Tier B ($45); over 20 minutes at Tier C ($75). Video consultations receive a 15% premium over equivalent phone tiers. Providers must document patient consent and clinical justification for every telehealth encounter. Claims must be submitted within 30 days of service. Non-compliance with documentation requirements will result in claim denial. Rural and remote patient exemptions apply per Schedule B.'。(2) 在 OnlyOffice 中,在 Common Documents 里创建一个新文档,标题为 'Telehealth Fee Alignment Policy v2 - Change Summary'。将其结构设置为标题 'Telehealth Fee Alignment Policy v2 — Summary of Changes',一个 'Effective Date' 部分,文本为 'This updated policy takes effect on September 1, 2026 and supersedes the 2021 determination.',一个 'Summary of Changes' 部分,包含一个 3 列(Section, Previous Language, Updated Language)和 5 行的表格,填入 [['Phone Consultation Tiers', 'Flat rate of $35 regardless of duration', 'Tiered pricing: Tier A $25 (<10 min), Tier B $45 (10-20 min), Tier C $75 (>20 min)'], ['Video Consultation Premium', 'Same rate as phone consultation', '15% premium over equivalent phone tier'], ['Documentation Requirements', 'Clinical notes only', 'Patient consent AND clinical justification required for every encounter'], ['Claim Submission Window', '60 days from service date', '30 days from service date'], ['Rural/Remote Exemptions', 'Case-by-case review', 'Standardized exemptions per Schedule B']],以及一个 'Acknowledgment Required By' 部分,文本为 'All clinical and billing staff must acknowledge this policy in the HR portal by August 20, 2026.'。在文档上启用 track changes。将文档共享给用户 'laura.brown' 以便编辑。 (3) 在 Mattermost 中,在 Marketing & Growth 团队里,进入现有频道 'Analytics'。发布消息 '📢 Policy Update: Telehealth Fee Alignment Policy v2 is now published, effective September 1, 2026. Major changes include tiered phone consultation pricing, a 15% video premium, stricter documentation requirements, and a shortened 30-day claim window. Full policy available in ownCloud (files/doc/healthcare). Please acknowledge in the HR portal by August 20, 2026.'。将这条消息固定到频道。然后进入现有频道 'Brand Design',发布消息 'HR/Comms team: Telehealth Fee Alignment Policy v2 rollout underway. Old 2021 determination archived, v2 policy published, change summary shared with legal (laura.brown) for review. Please flag any branding/communication asset updates needed for provider-facing materials.'。在 'Brand Design' 中对自己的消息回复线程,文本为 'Heads up: all-staff email with read-receipt is scheduled today. Please track acknowledgment rates via the HR portal dashboard — we need 100% by August 20.'。(4) 在 Roundcube 中,导航到 Settings > Identities,并编辑默认身份,将 organization 字段设为 'Acme Health Services — HR Communications'。然后撰写一封电子邮件给 'all-staff@acmehealth.local',CC 为 'hr.director@acmehealth.local',BCC 为 'compliance.officer@acmehealth.local',主题为 '[Action Required] Telehealth Fee Alignment Policy v2 — Effective September 1, 2026',正文为 'Dear Colleagues, + +We are releasing Telehealth Fee Alignment Policy v2, effective September 1, 2026. Key updates include: a new tiered phone consultation pricing structure (Tier A $25, Tier B $45, Tier C $75), a 15% video consultation premium, enhanced documentation requirements (patient consent + clinical justification), a shortened claim submission window (30 days), and standardized rural/remote exemptions per Schedule B. + +The full policy is available in ownCloud under files/doc/healthcare (Telehealth_Fee_Alignment_Policy_v2.txt). A detailed change summary document has been prepared in OnlyOffice Common Documents. + +Please acknowledge receipt and review of this policy in the HR portal no later than August 20, 2026. + +Questions? Reply to this email or reach out in the #analytics Mattermost channel. + +Best regards, +HR Communications'。在该邮件上请求回执(MDN)。发送邮件。发送后,进入 Sent 文件夹并将该已发送邮件标记为 flagged。 + +**步骤:** + +1. 在 ownCloud 中,找到 'Telehealth_GP_Phone_Service_Fee_Alignment_Determination_2021.docx',位于 'files/doc/healthcare',下载它,将其重命名为 'Telehealth_GP_Phone_Service_Fee_Alignment_Determination_2021_ARCHIVED.docx',并为其添加标签 'archived'。创建一个新的文本文件 'Telehealth_Fee_Alignment_Policy_v2.txt',内容为更新后的政策。 +2. 在 OnlyOffice 中,在 Common Documents 里创建文档 'Telehealth Fee Alignment Policy v2 - Change Summary',包含标题、有效日期部分、一个 5 行的变更对比表以及一个确认截止日期部分。启用 track changes 并共享给法律审阅人以便编辑。 +3. 在 Mattermost 中,在 'Analytics' 中发布 '📢 Policy Update: Telehealth Fee Alignment Policy v2 is now published, effective September 1, 2026. Major changes include tiered phone consultation pricing, a 15% video premium, stricter documentation requirements, and a shortened 30-day claim window. Full policy available in ownCloud (files/doc/healthcare). Please acknowledge in the HR portal by August 20, 2026.' 并将其置顶。然后在 'Brand Design' 中发布 'HR/Comms team: Telehealth Fee Alignment Policy v2 rollout underway. Old 2021 determination archived, v2 policy published, change summary shared with legal (laura.brown) for review. Please flag any branding/communication asset updates needed for provider-facing materials.',并在线程中回复 'Heads up: all-staff email with read-receipt is scheduled today. Please track acknowledgment rates via the HR portal dashboard — we need 100% by August 20.'。 +4. 在 Roundcube 中,编辑默认身份,将 organization 设为 'Acme Health Services — HR Communications'。按指定内容撰写并发送包含 CC/BCC、主题、正文且请求回执的邮件。发送后进入 Sent 并标记该邮件。 + +**登录凭据:** + +- owncloud: admin / admin +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_030/description_zh.md b/tasks/uni-m/Teamwork/teamwork_030/description_zh.md new file mode 100644 index 0000000..aa7d5d6 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_030/description_zh.md @@ -0,0 +1,16 @@ +**任务要求:** + +作为一名跨部门项目协调员,编制一份跨团队状态报告并以分级访问方式分发:(1) 在 OnlyOffice 中,在 Common Documents 里创建一个新文档,标题为 'Cross-Team Bi-Weekly Status Report - W26-W27 2026'。将其结构设置为标题 'Cross-Team Bi-Weekly Status Report',一个 'Report Period' 部分,文本为 'Bi-Weekly Period: June 22 – July 3, 2026',一个 'Engineering Updates' 部分,包含一个有 3 列(Author, Update, Date)的表格,一个 'Marketing Updates' 部分,使用相同的表格结构,一个 'Product Updates' 部分,使用相同的表格结构,以及一个最终的 'Cross-Team Risks' 部分,文本为 'Primary risks include recurring incident postmortem findings not being actioned within SLA, delayed brand asset approvals impacting campaign timelines, and UX research insights arriving too late in the sprint cycle to influence design decisions.'。将文档共享给用户 'jun.chen' 以便查看,并共享给用户 'amit.singh' 以便编辑。 (2) 在 ownCloud 中,创建一个名为 'Leadership_BiWeekly_Reports' 的文件夹。在其中创建一个名为 '2026-P13-P14' 的子文件夹。在 '2026-P13-P14' 中创建一个名为 'exec_summary.txt' 的文本文件,内容为 'Executive Summary - Bi-Weekly Period June 22 – July 3, 2026: Engineering resolved 4 P1 incidents and delivered comprehensive postmortems; runbook updates are underway. Brand Design finalized the refreshed logo system and shipped updated style guides across all marketing channels. UX Research completed 3 rounds of user interviews, producing actionable insights that will shape the upcoming onboarding redesign. Coordination between teams remains strong; follow-ups needed on incident action-item tracking and brand asset handoff cadence.'。为 'Leadership_BiWeekly_Reports' 添加标签 'biweekly-leadership'。查看 activity feed 以确认共享活动已出现。 (3) 在 Roundcube 中,导航到 Settings > Preferences > Composing Messages,并将 auto-save draft interval 设置为 '5 minutes'。然后撰写一封电子邮件给 ['jun.chen@onlyoffice.local', 'amit.singh@onlyoffice.local', 'laura.brown@onlyoffice.local'],BCC 为 'records@onlyoffice.local',主题为 'Bi-Weekly Cross-Team Status Report - June 22 to July 3, 2026',正文为 'Leadership Team, Please find this bi-weekly cross-team status summary. Engineering: 4 P1 incidents resolved with completed postmortems; runbook refresh in progress. Marketing: refreshed logo system and style guides shipped across brand channels. Product/UX: 3 user interview rounds completed, insights feeding into the onboarding redesign. Key risks: incident action-item follow-through, brand handoff delays, and late-arriving research insights. Full report available in OnlyOffice Common Documents and ownCloud Leadership_BiWeekly_Reports folder. Best regards, Cross-Department Project Coordinator',总结各部门的关键发现。请求该邮件的回执(MDN)。发送邮件。发送后,进入 Sent 文件夹,打开已发送邮件,并验证主题行匹配 'Bi-Weekly Cross-Team Status Report - June 22 to July 3, 2026'。 + +**步骤:** + +1. 在 OnlyOffice 中,在 Common Documents 里创建一个结构化的状态报告文档,包含各部门表格结构,并以不同权限级别与特定用户共享。 +2. 在 ownCloud 中,为报告创建一个层级文件夹结构,添加执行摘要文本文件,给文件夹添加标签,并验证 activity feed。 +3. 在 Roundcube 中,配置撰写偏好,然后撰写并发送一封包含 BCC 和回执请求的领导摘要邮件,并在 Sent 文件夹中验证已发送邮件。 + +**登录凭据:** + +- mattermost: admin / SeedAdmin1pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- owncloud: admin / admin +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_032/description_zh.md b/tasks/uni-m/Teamwork/teamwork_032/description_zh.md new file mode 100644 index 0000000..bc874e6 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_032/description_zh.md @@ -0,0 +1,34 @@ +**任务要求:** + +作为一名管理员经理,识别文件存储中已被替代的文档,将它们归档,通过消息通知团队,并发送正式变更通知:(1) 在 ownCloud 中,导航到现有文件夹 'doc/healthcare'。找到文件 Kima_w_Medical_Center_Nursing_Position_Description.docx, Inflammation_Protein_Results_Mann_Whitney_U_Test_Ratios_Sensitivity_Specificity.docx, MassHealth_Medicaid_CHIP_Section_1115_Demonstration_Waiver.docx(3 个文件)。对于每个文件,查看其文件详情(大小和修改日期)并记录下来。将每个文件重命名,在其当前名称前加上 'ARCHIVED_'(例如,'Kima_w_Medical_Center_Nursing_Position_Description.docx' 变为 'ARCHIVED_Kima_w_Medical_Center_Nursing_Position_Description.docx')。在 'doc/healthcare' 下创建一个名为 'Obsolete_Healthcare_2026H1' 的新文件夹。将所有已重命名的文件移动到 'Obsolete_Healthcare_2026H1'。为每个已移动文件添加标签 'obsolete'。在 'doc/healthcare' 中创建一个名为 'ACTIVE_HEALTHCARE_DOCS.txt' 的新文本文件,内容为 'Current Active Healthcare Documents: +- Kima Medical Center Nursing Position Description v3 (doc/healthcare/nursing_position_v3.docx) +- Inflammation Protein Study Final Report 2026 (doc/healthcare/inflammation_protein_final_2026.docx) +- MassHealth 1115 Waiver Renewal 2026 (doc/healthcare/masshealth_1115_renewal_2026.docx)',列出当前活动文档名称及其位置。 (2) 在 OnlyOffice 中,在 Common Documents 里创建一个名为 'Healthcare_Archive_Register_2026H1' 的新电子表格。在 Sheet1 中,设置第 1 行表头:Original Filename (A1), Archived Filename (B1), Original Size (C1), Last Modified (D1), Archived Date (E1), Replacement Document (F1)。填入 3 行(第 2 到第 4 行)数据,内容来自 ownCloud:原始名称、带有 'ARCHIVED_' 前缀的归档名称、文件大小、修改日期、今天日期 '2026-04-20',以及替换文档名称 nursing_position_v3.docx, inflammation_protein_final_2026.docx, masshealth_1115_renewal_2026.docx。再添加一行,在 A 列写入 'Total Archived',并在 B 列使用 COUNTA 公式统计所有归档文件名。将电子表格共享给用户 'amit.singh' 以便编辑。 (3) 在 Mattermost 中,在 Product & Design 团队里,进入现有频道 'bug-triage'。发布消息 'Healthcare Archive Notice: The following superseded healthcare documents have been moved to the archive folder. Originals: Kima_w_Medical_Center_Nursing_Position_Description.docx, Inflammation_Protein_Results_Mann_Whitney_U_Test_Ratios_Sensitivity_Specificity.docx, MassHealth_Medicaid_CHIP_Section_1115_Demonstration_Waiver.docx. Replacements: nursing_position_v3.docx, inflammation_protein_final_2026.docx, masshealth_1115_renewal_2026.docx. Effective 2026-04-20.',列出所有已归档文件及其替换项。然后使用 /header 将频道头部设置为 'Report and triage bugs. Healthcare document archive audit complete 2026-04-20. See ACTIVE_HEALTHCARE_DOCS.txt for current versions.'。向用户 'admin' 发送一条直接消息,文本为 'Please review and revoke any external sharing links associated with the archived healthcare files in doc/healthcare/Obsolete_Healthcare_2026H1. Appreciated.',请求移除任何与已归档文件相关的外部共享。 (4) 在 Roundcube 中,创建一个新的发件人身份,显示名称为 'Admin Manager - Healthcare Records',邮箱为 'admin.healthcare@mail.local',organization 为 'Corporate Records Office',并设置一个纯文本签名 'Admin Manager +Healthcare Records Control +Corporate Records Office +admin.healthcare@mail.local'。使用该身份向 carlos.mendez@mail.local, rachel.goldberg@mail.local, tom.andersen@mail.local, amira.hassan@mail.local 撰写一封邮件,主题为 'Formal Notice: Healthcare Document Supersession Effective 2026-04-20',正文为 'Dear Department Heads, + +Please be advised that the following healthcare documents have been formally superseded and archived as of 2026-04-20: + +1. Kima_w_Medical_Center_Nursing_Position_Description.docx -> replaced by nursing_position_v3.docx (effective 2026-04-20) +2. Inflammation_Protein_Results_Mann_Whitney_U_Test_Ratios_Sensitivity_Specificity.docx -> replaced by inflammation_protein_final_2026.docx (effective 2026-04-20) +3. MassHealth_Medicaid_CHIP_Section_1115_Demonstration_Waiver.docx -> replaced by masshealth_1115_renewal_2026.docx (effective 2026-04-20) + +All archived originals are now stored in doc/healthcare/Obsolete_Healthcare_2026H1 with the ARCHIVED_ prefix. Please direct your teams to use the replacement documents only. + +Regards, +Admin Manager',列出每个已替代文档、其替换项和生效日期。将消息优先级设为 Normal。发送邮件。然后进入 Settings > Folders,创建一个名为 'Healthcare_Archive_Notices' 的新邮件文件夹。进入 Sent,选择已发送邮件,并将其移动到 'Healthcare_Archive_Notices'。 + +**步骤:** + +1. 在 ownCloud 中,找到已被替代的文件,记录其详情,用 'ARCHIVED_' 前缀重命名,将其移动到新的归档文件夹,为每个文件打标签,并创建一个当前版本索引文件 +2. 在 OnlyOffice 中,创建一个归档登记表,记录所有已归档文件及其元数据和替换文档,包括 COUNTA 公式,并与 records manager 共享 +3. 在 Mattermost 中,在 operations 频道发布一则归档通知,列出变更,更新频道头部,并向 IT admin 发送 DM 请求权限清理 +4. 在 Roundcube 中,创建一个新发件人身份,撰写并发送一封正式变更通知邮件给 department heads,创建一个用于归档通知的邮件文件夹,并将已发送邮件移入其中 + +**登录凭据:** + +- owncloud: admin / admin +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_042/description_zh.md b/tasks/uni-m/Teamwork/teamwork_042/description_zh.md new file mode 100644 index 0000000..c72ae5d --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_042/description_zh.md @@ -0,0 +1,34 @@ +**任务要求:** + +作为一家创业公司的联合创始人,通过准备合作文件、配置工作区访问并交付入职材料来接纳一名新的自由职业承包人:(1) 在 ownCloud 中,导航到 Users Management 并创建一个新用户账号,用户名为 'diego.martinez',密码为 'Onboard#2026$',邮箱为 'diego.martinez@contractors.local'。将该用户加入 'admin' 组。将该用户的存储配额设置为 '10 GB'。然后导航到 All Files 并创建一个名为 'Diego_Martinez_Workspace' 的文件夹。在其中创建子文件夹 'Deliverables' 和 'Briefs'。在 'Briefs' 中创建一个名为 'Mobile_App_Brief.txt' 的文本文件,内容为 'Project: Mobile App MVP. Goal: Ship a cross-platform iOS/Android MVP within 12 weeks using React Native. Primary deliverables include architecture document, authentication module, core feature screens, and production-ready builds for both stores. Review cadence: bi-weekly on Tuesdays.'。为 'Briefs' 创建一个只读权限的公共分享链接,并将过期日期设置为 '2026-09-30'。将 'Diego_Martinez_Workspace' 以读写权限共享给用户 'diego.martinez'。 (2) 在 OnlyOffice 中,在 My Documents 里创建一个新文档,标题为 'Engagement_Letter_Diego_Martinez'。将其结构设置为标题 'Independent Contractor Engagement Agreement',一个 'Parties' 部分,文本为 'This agreement is entered between Acme Ventures Inc. (the Company) and Diego Martinez (the Contractor), effective May 4, 2026.',一个 'Scope of Work' 部分,文本为 'Contractor shall provide mobile application development services for the Mobile App MVP initiative, including architecture design, authentication module implementation, core feature development, and App Store/Play Store build preparation, per the attached Project Brief.',一个 'Compensation' 部分,包含一个有 3 列(Deliverable, Rate, Payment Terms)和 5 行的表格,填入 [["Architecture Document", "$3,000", "Net 15 upon acceptance"], ["Authentication Module", "$5,000", "Net 15 upon acceptance"], ["Core Feature Screens", "$8,000", "50% upfront, 50% on delivery"], ["Store Build & Submission", "$3,500", "Net 15 upon submission"], ["Post-Launch QA & Handoff", "$2,000", "Net 15 upon final sign-off"]],一个 'Confidentiality' 部分,文本为 'Contractor agrees to maintain strict confidentiality of all proprietary information, source code, user data, and business processes disclosed during the engagement, for a period of 5 years beyond termination.',以及一个 'Term' 部分,文本为 'This engagement commences on May 4, 2026 and terminates on September 30, 2026, unless extended in writing by both parties.'。将该文档共享给用户 'jun.chen' 以便编辑。将文档标记为收藏。 (3) 在 Mattermost 中,在 Marketing & Growth 团队里,进入现有频道 'Brand Design'。使用 /invite 命令邀请用户 'karrie' 到该频道。发布消息 'Team, please welcome Diego Martinez, our new freelance mobile developer joining us for the Mobile App MVP engagement through September 30. Diego will be partnering with brand and marketing on in-app visual assets and launch collateral — please loop him in on relevant brand reviews.',介绍该承包人。然后向 'karrie' 发送一条直接消息,文本为 'Hi Diego! Welcome aboard. Your ownCloud workspace is Diego_Martinez_Workspace (read-write). Project brief is here (read-only, expires 2026-09-30): https://owncloud.local/s/briefs-diego-2026. Engagement letter is in OnlyOffice My Documents as Engagement_Letter_Diego_Martinez. Ping me on Mattermost anytime.',包含工作区访问细节和第 1 步中的公共链接。然后再次进入 'Brand Design' 并使用 /header 将频道头部设置为 'Brand assets, style guides, and design feedback. Contractor onboarding active through 2026-09-30 — welcome Diego Martinez (Mobile App MVP).'. (4) 在 Roundcube 中,导航到 Settings > Preferences > Composing Messages,并验证 HTML editor usage 偏好已设置;如果没有,则将其设置为 'on reply to HTML message'。然后导航到 Settings > Identities,并创建一个新身份,显示名称为 'Sarah O'Brien — Co-Founder',邮箱为 'sarah.obrien@mail.local',organization 为 'Acme Ventures Inc.',并设置一个 HTML 签名 '<p><strong>Sarah O'Brien</strong><br/>Co-Founder, Acme Ventures Inc.<br/><a href="mailto:sarah.obrien@mail.local">sarah.obrien@mail.local</a></p>'。使用该身份撰写一封电子邮件给 'diego.martinez@contractors.local',CC 为 'ops@acmeventures.local',主题为 'Welcome to Acme Ventures — Mobile App MVP Onboarding',正文为 'Hi Diego, + +Welcome to the team! Below is a summary of your engagement and workspace access. + +Engagement Summary: +- Term: May 4, 2026 – September 30, 2026 +- Scope: Mobile App MVP (architecture, auth module, core screens, store builds, QA) +- Compensation: Per the Engagement Letter in OnlyOffice (Engagement_Letter_Diego_Martinez) + +Workspace Access: +- ownCloud: Diego_Martinez_Workspace (read-write) +- Project Brief public link (read-only, expires 2026-09-30): https://owncloud.local/s/briefs-diego-2026 +- Mattermost: Marketing & Growth → #brand-design + +Please review and countersign the engagement letter at your earliest convenience. + +Best, +Sarah',包含合作条款摘要和工作区访问说明。请求发送状态通知(DSN)。发送邮件。 + +**步骤:** + +1. 在 ownCloud Users Management 中,创建一个新用户 'diego.martinez',设置密码、邮箱、组 'admin' 和配额 '10 GB'。然后在 All Files 中创建 'Diego_Martinez_Workspace',其下有子文件夹 'Deliverables' 和 'Briefs'。在 briefs 中创建 'Mobile_App_Brief.txt'。为 'Briefs' 创建公共链接(只读,过期时间 '2026-09-30')。将工作区以读写权限共享给承包人。 +2. 在 OnlyOffice 中,在 My Documents 里创建 'Engagement_Letter_Diego_Martinez',包含 Parties、Scope of Work、Compensation 表格(5 行)、Confidentiality 和 Term 部分。与 'jun.chen' 共享以便编辑。标记为收藏。 +3. 在 Mattermost 中,在 'Brand Design' 里使用 /invite 添加 'karrie'。发布 'Team, please welcome Diego Martinez, our new freelance mobile developer joining us for the Mobile App MVP engagement through September 30. Diego will be partnering with brand and marketing on in-app visual assets and launch collateral — please loop him in on relevant brand reviews.'。向 'karrie' 发送包含公共链接的 DM,内容为 'Hi Diego! Welcome aboard. Your ownCloud workspace is Diego_Martinez_Workspace (read-write). Project brief is here (read-only, expires 2026-09-30): https://owncloud.local/s/briefs-diego-2026. Engagement letter is in OnlyOffice My Documents as Engagement_Letter_Diego_Martinez. Ping me on Mattermost anytime.'。使用 /header 将频道头部更新为 'Brand assets, style guides, and design feedback. Contractor onboarding active through 2026-09-30 — welcome Diego Martinez (Mobile App MVP).'。 +4. 在 Roundcube 中,检查并设置 Composing Messages 中的 HTML editor 偏好。创建一个新的身份,带有 'Sarah O'Brien — Co-Founder'、'sarah.obrien@mail.local'、'Acme Ventures Inc.' 和 HTML 签名。使用该身份向 'diego.martinez@contractors.local'(CC 'ops@acmeventures.local')撰写并发送电子邮件,主题为 'Welcome to Acme Ventures — Mobile App MVP Onboarding',正文如上,并请求 DSN。 + +**登录凭据:** + +- owncloud: admin / admin +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_043/description_zh.md b/tasks/uni-m/Teamwork/teamwork_043/description_zh.md new file mode 100644 index 0000000..31501e2 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_043/description_zh.md @@ -0,0 +1,30 @@ +**任务要求:** + +作为一名合规官,监控即将到期的文档,启动续期,替换过时版本,并通知利益相关者:(1) 在 ownCloud 中,导航到 Tags 视图并按标签 'pending' 过滤文件。从筛选结果中,准确识别 5 个文件:IDCC2022_FosterinCollaborationDMP_JAC.pptx, Ionescu_S1.pptx, Li_et_al_ESR1_mutations_paper_updated_SM.pptx, Module5-Repositories_presentation.pptx, Fathallah_Exeter University_November 2023_slides.pptx。然后导航到包含这些文件的文件夹 'ppt'。在 'ppt' 内创建一个名为 'Retired_2025Q3' 的子文件夹。将所有 5 个即将到期的文件移动到 'Retired_2025Q3'。对于每个已移动文件,通过在文件名后追加 '_EXPIRED_2025-09-30' 来重命名它(例如,'document.txt' 变为 'document_EXPIRED_2025-09-30.txt')。从每个已归档文件中移除标签 'pending',并添加标签 'archived'。然后在 'ppt' 中创建 5 个新的空文本文件,分别命名为 IDCC2022_FosterinCollaborationDMP_JAC_2025Q4.txt, Ionescu_S1_2025Q4.txt, Li_et_al_ESR1_mutations_paper_updated_SM_2025Q4.txt, Module5-Repositories_presentation_2025Q4.txt, Fathallah_Exeter_University_November_2023_slides_2025Q4.txt。为每个新文件添加标签 'approved'。 (2) 在 OnlyOffice 中,在 Common Documents 里创建一个名为 'Presentation_Renewal_Register_2025Q3' 的新电子表格。在 Sheet1 中,设置第 1 行表头:Document Name (A1), Archived Filename (B1), Replacement Filename (C1)。填入 5 行,分别对应这 5 个文档的原始文件名、重命名后的归档文件名和替换文件名。再添加一行,在 A 列写入 'Documents Renewed',并在 C 列使用 COUNTA 公式统计所有替换文件名。将电子表格共享给用户 'Jun Chen' 以便编辑,并共享给用户 'Laura Brown' 以便查看。 (3) 在 Mattermost 中,在 Product & Design 团队里,进入现有频道 'UX Research'。发布消息 'Presentation Document Renewal Notice: Effective 2025-10-01, the following presentation files have been retired and replaced with updated versions: (1) IDCC2022_FosterinCollaborationDMP_JAC.pptx -> IDCC2022_FosterinCollaborationDMP_JAC_2025Q4.txt; (2) Ionescu_S1.pptx -> Ionescu_S1_2025Q4.txt; (3) Li_et_al_ESR1_mutations_paper_updated_SM.pptx -> Li_et_al_ESR1_mutations_paper_updated_SM_2025Q4.txt; (4) Module5-Repositories_presentation.pptx -> Module5-Repositories_presentation_2025Q4.txt; (5) Fathallah_Exeter University_November 2023_slides.pptx -> Fathallah_Exeter_University_November_2023_slides_2025Q4.txt.',列出每个过期文档及其替换项。然后使用 /purpose 将频道目的设置为 'Share UX research insights, coordinate user interviews, discuss findings, and track Q3 2025 presentation renewals.'。向用户 'genesis, ginny, nilda' 发送一个群组私信,文本为 'Hi research team, the presentation files you previously contributed to in /ppt have been retired as of 2025-10-01. Please review the replacement placeholder files in ownCloud and upload the updated content versions.',通知他们与其文档相关的续期。 (4) 在 Roundcube 中,导航到 Settings > Preferences > Special Folders,并验证 Archive 文件夹已设为 'Archive';如果没有,则设置它。然后撰写一封电子邮件给 compliance-oversight@regulator.gov,BCC 为 'compliance-internal@mail.local',主题为 'Q3 2025 Presentation Document Renewal Notification',正文为 'Dear Regulatory Authority, + +This email confirms the renewal of the following presentation documents effective 2025-10-01: + +1. IDCC2022_FosterinCollaborationDMP_JAC (replaced by IDCC2022_FosterinCollaborationDMP_JAC_2025Q4) +2. Ionescu_S1 (replaced by Ionescu_S1_2025Q4) +3. Li_et_al_ESR1_mutations_paper_updated_SM (replaced by Li_et_al_ESR1_mutations_paper_updated_SM_2025Q4) +4. Module5-Repositories_presentation (replaced by Module5-Repositories_presentation_2025Q4) +5. Fathallah_Exeter_University_November_2023_slides (replaced by Fathallah_Exeter_University_November_2023_slides_2025Q4) + +Prior versions have been retired and archived. Please acknowledge receipt. + +Best regards, +Compliance Office',列出每个已续期文档及其新的生效日期。将消息优先级设为 High。发送邮件。然后在 Sent 文件夹中选择已发送邮件,并使用 archive 功能将其归档。 + +**步骤:** + +1. 在 ownCloud 中,使用 Tags 视图按 'pending' 过滤并识别 5 个文件(IDCC2022_FosterinCollaborationDMP_JAC.pptx, Ionescu_S1.pptx, Li_et_al_ESR1_mutations_paper_updated_SM.pptx, Module5-Repositories_presentation.pptx, Fathallah_Exeter University_November 2023_slides.pptx)。导航到 'ppt',创建 'Retired_2025Q3',并将所有即将到期的文件移动进去。将每个文件重命名并加上 '_EXPIRED_2025-09-30' 后缀。移除 'pending' 并为每个文件添加 'archived'。在 'ppt' 中创建 5 个空白替换文本文件,并为每个文件打上 'approved' 标签。 +2. 在 OnlyOffice 中,在 Common Documents 里创建电子表格 'Presentation_Renewal_Register_2025Q3',表头为 Document Name, Archived Filename, Replacement Filename。填入 5 行原始、归档和替换文件名。再添加一行,在 A 列写入 'Documents Renewed',并在 C 列使用 COUNTA 公式。与 'Jun Chen'(编辑)和 'Laura Brown'(查看)共享。 +3. 在 Mattermost 中,在 'UX Research'(Product & Design team)里发布续期通知,列出所有 5 个过期->替换映射。使用 /purpose 将频道目的更新为 'Share UX research insights, coordinate user interviews, discuss findings, and track Q3 2025 presentation renewals.'。向 'genesis, ginny, nilda' 发送群组 DM,内容为 'Hi research team, the presentation files you previously contributed to in /ppt have been retired as of 2025-10-01. Please review the replacement placeholder files in ownCloud and upload the updated content versions.'。 +4. 在 Roundcube 中,在 Special Folders 中验证/设置 Archive 文件夹为 'Archive'。撰写并发送一封给 'compliance-oversight@regulator.gov'(BCC 'compliance-internal@mail.local')的邮件,主题为 'Q3 2025 Presentation Document Renewal Notification',正文列出每个续期文档,并将优先级设为 High。将 Sent 中的已发送邮件归档。 + +**登录凭据:** + +- owncloud: admin / admin +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_052/description_zh.md b/tasks/uni-m/Teamwork/teamwork_052/description_zh.md new file mode 100644 index 0000000..7408223 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_052/description_zh.md @@ -0,0 +1,25 @@ +**任务要求:** + +作为一名客户支持负责人,通过电子邮件接收、协调内部审查、记录发现并发送正式解决方案来调查一项客户投诉:(1) 在 Roundcube 中,在 INBOX 下创建一个名为 'Priority Client Issues' 的新邮件文件夹。 (2) 在 Mattermost 中,在 Engineering Hub 团队里,进入 'Code Reviews' 频道。搜索包含 'Helix' 的消息,以检查此前是否提到过这个客户。然后创建一个名为 'helix-analytics-export-investigation' 的新私有频道,目的为 'Private coordination channel for investigating the Helix Analytics Inc. data export pipeline failure and tracking resolution'。在新频道中发布一条消息 'Complaint Brief: Helix Analytics Inc. reported that their monthly data export pipeline has been failing for 3 consecutive days, blocking their executive dashboard refresh. Client is requesting root cause analysis and a manual data backfill. Priority: Critical.',总结投诉细节。然后在一个线程回复中使用 @mention 标记 'delana',文本为 '@delana Can you lead the technical investigation on the export pipeline failure? Please pull scheduler logs, API error traces, and storage metrics from the past 5 days and post findings here within 12 hours.',请求技术调查。再在第二个线程回复中使用 @mention 标记 'stephany',文本为 '@stephany Please share Helix Analytics Inc. account history, contract SLA for data exports, prior ticket history, and executive escalation contacts so we can align on the response.',请求账户历史。关注该线程以接收通知。 (3) 在 ownCloud 中,创建一个名为 'Helix-Analytics-Export-Investigation-2026-04' 的文件夹。在其中创建子文件夹 'Technical-Evidence' 和 'Client-Communications'。在 'Helix-Analytics-Export-Investigation-2026-04' 中创建一个名为 'export-investigation-log.txt' 的文本文件,内容为 'Investigation Notes - Helix Analytics Inc. Data Export Complaint + +Client: Helix Analytics Inc. +Contact: carlos.mendez@mail.local +Date Received: 2026-04-20 +Severity: Critical +Status: Under Investigation + +Initial Assessment: Monthly data export pipeline failing for 3 consecutive days, blocking executive dashboard. Scheduler logs and API error traces under review. Engineering and Account Management engaged. Target resolution: 24 hours with manual backfill.'。为 'Technical-Evidence' 创建一个公共分享链接,权限为仅上传(file drop),以便团队成员提交证据。 (4) 在 OnlyOffice 中,在 Common Documents 里创建一个名为 'Helix Analytics Export Failure - Resolution Report' 的新文档。将其结构设置为标题 'Resolution Report: Helix Analytics Inc. Data Export Pipeline Failure',一个 'Complaint Details' 部分,文本为 'Client: Helix Analytics Inc. Primary Contact: carlos.mendez@mail.local. Date Received: 2026-04-20. Summary: Helix Analytics Inc. reported that their scheduled monthly data export pipeline had failed for three consecutive days (2026-04-17 through 2026-04-19), blocking the refresh of their executive dashboards and delaying board-level reporting. Client requested formal root cause analysis, a manual data backfill covering the missed period, and SLA credit.',其中包含客户名称、收到日期和投诉摘要;一个 'Investigation Timeline' 部分,包含一个有 3 列(Date, Action, Responsible)和 6 行的表格,填入 [['2026-04-20', 'Complaint received via email and logged', 'Support Lead'], ['2026-04-20', 'Private investigation channel created; engineering and AM engaged', 'Support Lead'], ['2026-04-20', 'Scheduler logs and API error traces analyzed', 'Delana (Senior Engineer)'], ['2026-04-21', 'Root cause identified in export worker credential rotation', 'Delana (Senior Engineer)'], ['2026-04-21', 'Manual data backfill executed for missed period', 'Delana (Senior Engineer)'], ['2026-04-22', 'Account history reviewed, SLA credit calculated, resolution drafted', 'Stephany (Tech Lead) / Support Lead']],一个 'Root Cause Analysis' 部分,文本为 'Root cause: A scheduled credential rotation for the export worker service account completed on 2026-04-16 but the updated secret was not propagated to the export scheduler pod configuration. The scheduler continued to authenticate with stale credentials, which silently failed after the grace period expired on 2026-04-17. Failure alerts were routed to a legacy Slack channel that had been archived, preventing detection until the client reported the issue.',一个 'Resolution' 部分,文本为 'Immediate fix: Rotated credentials were propagated to the export scheduler and a manual backfill covering 2026-04-17 through 2026-04-19 was executed and verified against source-of-truth counts. A 15% SLA credit has been applied to Helix Analytics Inc.s current billing cycle, and a dedicated data platform engineer has been assigned for the next 30 days to monitor export runs.',以及一个 'Preventive Measures' 部分,含 5 条编号项目 ['Migrate all secret-rotation workflows to the centralized secret manager with automated pod-config refresh.', 'Re-route all export-pipeline failure alerts to the active on-call rotation channel with pager escalation.', 'Add synthetic export health checks that run every 6 hours and alert on consecutive failures.', 'Introduce a client-facing export status dashboard for Helix Analytics Inc. and other enterprise accounts.', 'Mandate a quarterly audit of all alert routing configurations to detect references to archived channels.']。在 'Resolution' 部分添加一个评论,文本为 'Please confirm the 15% SLA credit figure against Helix Analytics Inc.s contract terms with Finance, and validate the 30-day dedicated engineer assignment with the Data Platform staffing lead before this is sent.'。将文档共享给用户 'laura.brown' 以便查看,并共享给用户 'jun.chen' 以便编辑。 + +**步骤:** + +1. 在 Roundcube 中,创建一个投诉邮件文件夹。 +2. 在 Mattermost 中,搜索 support 频道里关于该客户的先前提及,创建一个私有调查频道,发布投诉简报,在线程回复中标记工程和客户经理联系人,并关注线程。 +3. 在 ownCloud 中,创建一个包含 evidence 和 correspondence 子文件夹的调查文件夹,创建调查备注,并创建一个用于证据收集的 file-drop 公共链接。 +4. 在 OnlyOffice 中,创建一份包含投诉细节、时间线表、根因、解决方案和预防措施的解决报告文档。添加审阅评论,并与两个不同权限级别的用户共享。 + +**登录凭据:** + +- roundcubemail: james.whitfield@mail.local / User123! +- mattermost: admin / SeedAdmin1pass +- owncloud: admin / admin +- onlyoffice: admin@onlyoffice.local / NewAdmin123! diff --git a/tasks/uni-m/Teamwork/teamwork_074/description_zh.md b/tasks/uni-m/Teamwork/teamwork_074/description_zh.md new file mode 100644 index 0000000..52c91da --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_074/description_zh.md @@ -0,0 +1,34 @@ +**任务要求:** + +作为一名销售运营经理,准备一份客户季度业务回顾演示包,包含性能数据,并在交付给客户之前用于内部审查分发:(1) 在 OnlyOffice 中,在 My Documents 里创建一个名为 'Globex_Industries_Q2_2026_QBR_Data' 的新电子表格。在 Sheet1 中,设置第 1 行表头:Month (A1), Revenue (B1), Support Tickets (C1), SLA Compliance % (D1), NPS Score (E1)。填入 3 行(第 2 到第 4 行)数据,月份名称为 'April, May, June',性能数据为 187500,54,97.8,58;203000,47,98.6,63;221000,39,99.2,68。在最后一个月份后添加一行,在 A 列写入 'Average',并在 B 到 E 列使用 AVERAGE 公式。再添加一行,在 A 列写入 'Max',并在 B 到 E 列使用 MAX 公式。再添加一行,在 A 列写入 'Min',并在 B 到 E 列使用 MIN 公式。然后在 Common Documents 中创建一个名为 'Globex_Industries_Q2_2026_QBR_Presentation' 的新演示文稿。添加 4 张幻灯片:第 1 张幻灯片标题为 'Globex Industries Q2 2026 Quarterly Business Review',正文为 'Partnership Review and Growth Strategy - Prepared for Globex Industries Leadership Team';第 2 张幻灯片标题为 'Q2 2026 Performance Metrics',正文包含相同的性能数据;第 3 张幻灯片标题为 'Q2 Performance Highlights',正文为 'Average Revenue: $203,833 | Peak Revenue: $221,000 (June) | Max SLA Compliance: 99.2% | Peak NPS: 68',突出平均值和最大值;第 4 张幻灯片标题为 'Q3 2026 Proposed Initiatives',正文为 '1. Roll out Enterprise SSO integration for all Globex users; 2. Deploy custom analytics dashboard with real-time metrics; 3. Establish dedicated technical account management pod',列出 3 项提议举措。将演示文稿共享给用户 'jun.chen' 以便编辑,并共享给用户 'amit.singh' 以便查看。将演示文稿下载为 PDF 格式。 (2) 在 ownCloud 中,创建一个名为 'Globex_Industries_QBR_Q2_2026' 的文件夹。在其中创建子文件夹 'MetricsData' 和 'SlideDeck'。将下载的 PDF 上传到 'SlideDeck'。在 'MetricsData' 中,创建一个名为 'metric_sources.txt' 的文本文件,内容为 'Revenue: Extracted from HubSpot closed-won deals, aggregated monthly by deal close date for Globex Industries account. | Support Tickets: Pulled from Intercom support export, filtered by Globex organization, counted by creation month. | SLA Compliance %: Derived from Intercom SLA reports, calculated as percentage of tickets meeting first-response and full-resolution SLAs per month. | NPS Score: Collected via monthly AskNicely survey to all Globex Industries power users, averaged and scored using standard NPS methodology.',列出每个指标的数据来源和采集方法。将 'Globex_Industries_QBR_Q2_2026' 与组 'admin' 以读写权限共享。将 'SlideDeck' 单独与组 'admin' 以只读权限共享。获取 'SlideDeck' 的私有链接。查看 Shared with others 视图,以确认两个共享都已出现。 (3) 在 Mattermost 中,在 Product & Design 团队里,创建一个名为 'globex-qbr-q2-review' 的新私有频道,频道头部为 'Internal review channel for Globex Industries Q2 2026 QBR deliverables',目的为 'Coordinate internal review and approval of the Globex Industries Q2 2026 QBR presentation and supporting data before client delivery'。在频道中发布消息 'Team, please review the Globex Industries Q2 2026 QBR package at the following private link. Review and sign-off needed by 2026-07-22 EOD.',包含第 2 步中的私有链接,并请求在 '2026-07-22 EOD' 前审查。然后使用 @mention 在线程回复中标记 'christene',文本为 '@christene Could you please verify the technical accuracy of the SLA compliance figures and ticket volume counts in slides 2 and 3? Need your sign-off before we send to the client.',请求验证技术准确性。为原始审查请求消息添加表情反应 'thumbsup'。 (4) 在 Roundcube 中,导航到 Settings > Identities,创建一个新身份,显示名称为 'Marcus Torres - Sales Operations',邮箱为 'marcus.torres@mail.local',organization 为 'Sales Operations - TechCorp',并设置一个纯文本签名 'Marcus Torres +Sales Operations Manager +TechCorp +marcus.torres@mail.local ++1-555-0187'。然后使用该身份撰写一封电子邮件给 'linda.park@globexindustries.com',CC 为 'emma.larsson@mail.local',主题为 'Globex Industries Q2 2026 Quarterly Business Review - Proposed Meeting Date',正文为 'Hi Linda, + +I hope you are doing well. I would like to propose a Quarterly Business Review meeting on Wednesday, July 29, 2026 at 10:00 AM ET to review Globex Industries'' Q2 2026 performance and discuss our path forward. + +Proposed agenda (4 topics based on our presentation slides): +1. Globex Industries Q2 2026 Quarterly Business Review - partnership overview and meeting context +2. Q2 2026 Performance Metrics - revenue, tickets, SLA, and NPS review +3. Q2 Performance Highlights - average and peak performance indicators +4. Q3 2026 Proposed Initiatives - proposed next-quarter investments + +Please confirm if this time works, or propose an alternative that fits your schedule. + +Best regards, +Marcus',提议 QBR 会议日期并列出来自演示文稿的 4 个议程主题。将消息优先级设为 Normal。发送邮件。然后导航到 Settings > Preferences > Contacts,并将新联系人的默认地址簿设置为 'Personal Addresses'。然后在 Personal Address Book 中添加一个新联系人,名字为 'Linda',姓氏为 'Park',邮箱为 'linda.park@globexindustries.com',organization 为 'Globex Industries'。 + +**步骤:** + +1. 在 OnlyOffice 中,创建一个带有月度指标、AVERAGE/MAX/MIN 公式的性能数据电子表格。创建一份包含性能数据文本和举措幻灯片的 QBR 演示文稿。共享演示文稿并将其下载为 PDF。 +2. 在 ownCloud 中,创建一个包含 data 和 presentation 子文件夹的 QBR 文件夹。上传 PDF。创建一个数据来源文本文件。与销售组(读写)和 exec 组(只读)共享。获取私有链接并验证共享。 +3. 在 Mattermost 中,创建一个私有 QBR 审查频道,发布带有私有链接的审查请求,在线程回复中标记 solutions engineer,并对原消息作出反应。 +4. 在 Roundcube 中,创建一个带签名的新发件人身份。使用新身份撰写并发送 QBR 会议提议邮件。配置默认地址簿并将客户添加为新联系人。 + +**登录凭据:** + +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- owncloud: admin / admin +- mattermost: admin / SeedAdmin1pass +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_082/description_zh.md b/tasks/uni-m/Teamwork/teamwork_082/description_zh.md new file mode 100644 index 0000000..b14e1d2 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_082/description_zh.md @@ -0,0 +1,17 @@ +**任务要求:** + +作为一名产品经理,编制一份竞争情报简报,并进行分级分发:(1) 在 Mattermost 中,在 Engineering Hub 团队里,进入 'Tech Talks' 频道。使用 /purpose 命令将频道目的设置为 'Tech talks and strategic competitor deep-dives for the engineering org'。在频道中发布消息 'Kicking off Q3 competitive intel briefing on Nimbus Cloud — full dossier and sanitized summary to follow.'。将此消息置顶。 (2) 在 OnlyOffice 中,在 My Documents 里创建一个名为 'Nimbus Cloud Competitive Intelligence Briefing Q3' 的新文档。将其结构设置为标题 'Competitive Intelligence Briefing: Nimbus Cloud',一个 'Competitive Landscape Overview' 部分,文本为 'Nimbus Cloud has shifted focus toward developer-first tooling and open-source integrations over the past quarter. Engineering chatter and brand signals indicate an aggressive push to capture mindshare among platform engineers and SREs in our core accounts.',一个 'Product Intelligence' 部分,包含一个有 3 列(Source (channel name), Intelligence (message text), Analyst (author))的表格,一个 'Sales Intelligence' 部分,使用相同的表格结构,一个 'Threat Assessment' 部分,包含列表中的项目 bullet points 'Developer-first positioning erodes our platform-engineer mindshare;Open-source integrations released with permissive licensing;Aggressive recruiting of SRE and DevOps talent from our ecosystem;Conference sponsorships targeting our core technical audience',以及一个 'Recommended Actions' 部分,包含列表中的编号项 'Publish an open-source SDK and reference integrations within 45 days;Launch a developer advocacy program targeting platform engineers;Expand conference presence at the top 5 infrastructure events next quarter;Retention review and counter-offer plan for at-risk SRE and DevOps staff'。为文档启用 track changes。将文档共享给用户 'jun.chen' 以便编辑。然后在 Common Documents 中创建第二个文档,标题为 'Nimbus Cloud Competitive Briefing — All Hands Summary',仅包含标题 'Competitive Landscape Summary: Nimbus Cloud'、'Competitive Landscape Overview' 部分(相同文本)以及 'Recommended Actions' 部分(相同文本)——省略详细情报表和威胁评估。将去敏版本共享给用户 'maria.wilson' 以便查看。 (3) 在 ownCloud 中,创建一个名为 'Competitive Intelligence Q3' 的文件夹。在其中创建子文件夹 'Restricted Dossier' 和 'Public Summary'。在 'Restricted Dossier' 中创建一个名为 'nimbus_raw_intel.txt' 的文本文件,内容以 'CONFIDENTIAL — Raw competitive intelligence notes on Nimbus Cloud. Distribution restricted to strategy and engineering leadership.' 开头,后面跟上所有带来源归属的情报条目。在 'Public Summary' 中创建一个名为 'nimbus_summary.txt' 的文本文件,内容为 'Summary: Nimbus Cloud is pursuing a developer-first strategy through open-source integrations and aggressive talent acquisition. See recommended actions for our counter-positioning plan.'。将 'Public Summary' 与组 'admin' 以只读权限共享。为 all-staff 共享设置过期日期 '2026-08-20'。为 'Public Summary' 创建一个只读权限的公共分享链接。复制该公共链接 URL。 (4) 在 Roundcube 中,撰写一封电子邮件给 'rachel.goldberg@mail.local, yuki.tanaka@mail.local, carlos.mendez@mail.local',主题为 '[CONFIDENTIAL] Nimbus Cloud Competitive Intelligence Briefing — Q3',正文为 'Team, please review the attached Nimbus Cloud competitive intelligence briefing in OnlyOffice (My Documents) and the classified raw notes in ownCloud under Competitive Intelligence Q3 / Restricted Dossier. This briefing is confidential and for executive distribution only. Please confirm receipt.',引用完整的情报简报文档和机密文件夹。将消息优先级设为 High。请求回执(MDN)。发送邮件。然后再撰写第二封邮件给 'tom.andersen@mail.local, amira.hassan@mail.local, lin.fang@mail.local, isabelle.rousseau@mail.local',主题为 'Competitive Landscape Update — Nimbus Cloud (All Hands Summary)',正文以 'Hello team, please find below a high-level summary of our competitive posture versus Nimbus Cloud along with recommended actions. A public link to the general summary folder is included at the bottom.' 开头,后接推荐动作和第 3 步中一般子文件夹的公共链接。将消息优先级设为 Normal。发送这封邮件。进入 Sent 文件夹并将第一封(exec)邮件标记为 flagged。 + +**步骤:** + +1. 在 Mattermost 中,在策略频道设置频道目的,发布一条简报启动消息,并将其置顶。 +2. 在 OnlyOffice 中,创建一份完整的情报简报文档,位于 My Documents,包含表格结构(列:Source (channel name), Intelligence (message text), Analyst (author))、威胁评估 bullet points 和推荐行动项。启用 track changes,并与 strategy VP 共享以便编辑。创建一个单独的去敏版本,位于 Common Documents,仅包含概览和建议,并共享以供查看。 +3. 在 ownCloud 中,创建一个包含机密和公共子文件夹的文件夹。用适当的文本文件填充每个子文件夹。将公共子文件夹与全体员工共享(只读)并设置过期日期。为公共子文件夹创建一个公共分享链接并复制 URL。 +4. 在 Roundcube 中,发送两封面向不同受众和不同内容的电子邮件:一封高优先级的高管简报,引用完整文档并请求 MDN;一封普通优先级的通用邮件,仅包含推荐动作和公共链接。将高管邮件在 Sent 中标记。 + +**登录凭据:** + +- mattermost: admin / SeedAdmin1pass +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- owncloud: admin / admin +- roundcubemail: james.whitfield@mail.local / User123! diff --git a/tasks/uni-m/Teamwork/teamwork_083/description_zh.md b/tasks/uni-m/Teamwork/teamwork_083/description_zh.md new file mode 100644 index 0000000..41b8e92 --- /dev/null +++ b/tasks/uni-m/Teamwork/teamwork_083/description_zh.md @@ -0,0 +1,53 @@ +**任务要求:** + +作为一名法律协调员,通过审查和决策工作流处理一项政策例外请求:(1) 在 Roundcube 中,在 INBOX 下创建一个名为 'Policy-Exceptions-2026' 的新邮件文件夹。 (2) 在 OnlyOffice 中,导航到 Projects 模块并查看所有项目。然后导航到 My Documents 并创建一个名为 'Exception Review - Rahul Johnson - Remote Work - 2026' 的新文档。将其结构设置为标题 'Policy Exception Review: Remote Work Arrangement Request',一个 'Request Details' 部分,包含一个有 2 列(Field, Value)和 5 行的表格,字段为 'Requester Name, Department, Request Date, Policy Reference, Requested Exception',值为 'Rahul Johnson; Engineering; 2026-04-15; HR-POL-014 Remote Work Policy; Full-time remote work from international location for 6 months'(包含请求人姓名、部门、日期、政策参考和所请求的例外),一个 'Policy Reference' 部分,文本为 'HR-POL-014 Remote Work Policy Section 4.2 restricts remote work arrangements to domestic locations within approved tax jurisdictions. Full-time international remote work requires an executive-approved exception per Section 7.1.',一个 'Risk Assessment' 部分,包含 4 个 bullet points 'Tax compliance exposure in foreign jurisdiction; Data residency and GDPR implications for international data access; Employment law variance and potential permanent establishment risk; Precedent-setting impact on future similar requests',一个 'Precedent Analysis' 部分,文本为 'Two prior similar requests (2025-Q2 and 2025-Q4) were approved with conditions including time-limited scope, tax equalization agreements, and data handling restrictions. One request in 2024-Q3 was denied due to insufficient business justification.',以及一个 'Recommendation' 部分,文本为 'Recommend approval with conditions: limit to 6-month duration, require tax equalization agreement, mandate VPN-only data access, and schedule quarterly compliance review.'。在 'Risk Assessment' 部分添加一条评论,文本为 'Please confirm with Finance that tax equalization coverage is budgeted for this employee before finalizing decision.'。将文档共享给用户 'laura.brown' 以便编辑,并共享给用户 'amit.singh' 以便查看。 (3) 在 ownCloud 中,创建一个名为 'Exception-Case-RJ-2026-04' 的文件夹。在其中创建子文件夹 'Supporting-Documents' 和 'Decision-Records'。在 'Supporting-Documents' 中创建一个名为 'request-summary.txt' 的文本文件,内容为 'Requester: Rahul Johnson (Engineering Developer) +Request Date: 2026-04-15 +Policy: HR-POL-014 Remote Work Policy +Requested Exception: Full-time remote work from international location (Portugal) for 6 months starting 2026-05-01. +Business Justification: Family medical situation requiring extended presence abroad; role is fully remote-compatible. +Supporting Documents Received: Medical attestation, manager endorsement, IT security assessment.'。在 'Decision-Records' 中创建一个名为 'decision-record.txt' 的文本文件,内容为 'DECISION RECORD + +Case: Exception-Case-RJ-2026-04 +Requester: Rahul Johnson +Policy Reference: HR-POL-014 Remote Work Policy + +Decision Outcome: Approved with Conditions +Conditions: (1) Duration limited to 6 months, (2) Tax equalization agreement executed before relocation, (3) VPN-only access to company systems, (4) Quarterly compliance review with Legal and HR, (5) No client-data handling from international location. +Effective Period: 2026-05-01 to 2026-10-31 + +Decision Authority: Legal Coordinator in consultation with General Counsel and HR Director.',其中包含决策结果 'Approved with Conditions'、条件 '(1) 6-month duration limit, (2) Tax equalization agreement, (3) VPN-only access, (4) Quarterly compliance review, (5) No client-data handling from international location',以及生效期 '2026-05-01 to 2026-10-31'。为 'Exception-Case-RJ-2026-04' 添加标签 'PolicyException2026'。查看按 file changes 过滤的 activity feed,以确认创建活动。 (4) 在 Mattermost 中,在 Engineering Hub 团队里,进入现有频道 'incidents'。发布消息 'Policy Exception Decision: Request from Rahul Johnson for international remote work under HR-POL-014 has been APPROVED WITH CONDITIONS. Decision record filed in ownCloud under Exception-Case-RJ-2026-04.',宣布该例外请求的决策结果。在线程中回复自己的消息,文本为 'Conditions: (1) 6-month duration limit, (2) Tax equalization agreement required before relocation, (3) VPN-only system access, (4) Quarterly compliance review, (5) No client-data handling from international location. Effective period: 2026-05-01 to 2026-10-31.',列出条件和生效期。然后向 'mercy' 发送一条直接消息,文本为 'Hi Mercy - acting on behalf of requester Rahul Johnson, your policy exception request has been approved with conditions. Full decision record and conditions are available in the ownCloud folder Exception-Case-RJ-2026-04 (shared with you read-only). Please review and acknowledge by 2026-04-25.',告知他们该决定并引导至 ownCloud 文件夹。关注频道帖子线程。 (5) 在 Roundcube 中,撰写一封电子邮件给 'rahul.johnson34@protonmail.com',CC 为 'amit.singh@onlyoffice.local',并 CC 为 'laura.brown@onlyoffice.local',主题为 'Formal Decision: Policy Exception Request - HR-POL-014 Remote Work',正文为 'Dear Rahul, + +Following legal review of your policy exception request dated 2026-04-15 under HR-POL-014 (Remote Work Policy), we are writing to formally communicate the decision. + +DECISION: Approved with Conditions + +CONDITIONS: +1. Exception duration limited to 6 months. +2. Tax equalization agreement must be executed prior to relocation. +3. Company system access restricted to VPN-only during the exception period. +4. Quarterly compliance review with Legal and HR. +5. No client-data handling permitted from the international location. + +EFFECTIVE PERIOD: 2026-05-01 to 2026-10-31. + +APPEAL INSTRUCTIONS: If you wish to appeal any condition, please submit a written appeal to legal@company within 10 business days of this notice, citing the specific condition and basis for appeal. An Appeal Review Board will respond within 15 business days. + +Please acknowledge receipt and indicate acceptance of the conditions by replying to this email. + +Regards, +Legal Coordinator',包含正式决定、条件、生效期和申诉说明。将消息优先级设为 Normal。请求发送状态通知(DSN)。发送邮件。进入 Sent 文件夹,打开已发送邮件,并验证主题与 'Formal Decision: Policy Exception Request - HR-POL-014 Remote Work' 匹配。 + +**步骤:** + +1. 在 Roundcube 中,创建一个例外邮件文件夹。 +2. 在 OnlyOffice 中,查看 Projects 模块中的所有项目,然后在 My Documents 中创建一份详细的例外审查文档,包含请求详情表、风险评估、先例分析和建议等结构化部分。添加审阅评论,并与 general counsel(编辑)和 policy owner(查看)共享。 +3. 在 ownCloud 中,创建一个包含 supporting docs 和 decision 子文件夹的案例文件夹。填充适当的文本文件,包括决策记录。给文件夹打标签并验证 activity。 +4. 在 Mattermost 中,在法律频道发布决策,添加包含条件细节的线程回复,向请求者的 Mattermost 联系人发送 DM,并关注线程。 +5. 在 Roundcube 中,向请求人撰写并发送正式决定邮件,CC 给 policy owner 和 compliance,并请求 DSN。验证 Sent 文件夹中的已发送邮件。 + +**登录凭据:** + +- roundcubemail: james.whitfield@mail.local / User123! +- onlyoffice: admin@onlyoffice.local / NewAdmin123! +- owncloud: admin / admin +- mattermost: admin / SeedAdmin1pass