Meeting Scheduler

Polar Sponsor
爱发电 赞助
.NET 9.0

通过与对方助理协调、在双方日程中查找空闲时段并发送日历邀请,为你的老板安排与另一人的会议。

满足调度器 技能

功能概述

满足调度器 技能是一项面向实际任务的技能,主要用于任何可遵循编号步骤的模型;对于时区推理或复杂的限制, 请使用介质模型;

核心要点

  • Full Flow (6 Step).;
  • Step 1 — 了解 Requ。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

使用与执行

使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

会议调度技能

最低模型要求

任何能够遵循编号步骤的模型均可。如需处理时区推理或复杂约束条件,请使用中等规模模型。

完整流程(6 步)

第 1 步 — 理解请求

执行操作前,请确认以下信息:

  • 与谁会面
  • 时长(未明确指定时默认为 30 分钟)
  • 时间范围(例如“本周”、“下周”、“仅限上午”等)
  • 会议类型(视频、线下、电话)

若请求模糊(例如“安排一次与 Jane 的通话”)→ 请先提出一个澄清问题,再继续后续操作。

第 2 步 — 查找对方的 PA

检查 data/pa-directory.json 文件:

python3 -c "
import json, sys
try:
    with open('data/pa-directory.json') as f:
        d = json.load(f)
except FileNotFoundError:
    print('ERROR: data/pa-directory.json not found')
    sys.exit(1)

name = 'PERSON_NAME'  # 替换为实际姓名
matches = [p for p in d.get('pas', []) if name.lower() in p['owner'].lower()]

if not matches:
    print('No PA found for:', name)
else:
    for p in matches:
        print('PA:', p['name'], '| Phone:', p['phone'])
"

若未找到对应 PA → 跳至第 4 步,直接通过电子邮件联系该人员。

第 3 步 — 查询您所属主管的空闲时间

#!/bin/bash
# 获取当前时间和 7 天后的时间
TODAY=$(date -u +%Y-%m-%dT%H:%M:%SZ)
NEXT_WEEK=$(date -u -d '+7 days' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null 
  || date -u -v+7d +%Y-%m-%dT%H:%M:%SZ)

# 获取日程事件并输出排序后的列表
GOG_ACCOUNT=owner@company.com gog calendar events primary 
  --from "$TODAY" 
  --to "$NEXT_WEEK" 
  2>/dev/null 
  | python3 -c "
import sys, json
try:
    events = json.load(sys.stdin)
except json.JSONDecodeError:
    events = []

# 按开始时间排序并逐条打印
print('Upcoming events:')
for e in sorted(events, key=lambda x: x.get('start', {}).get('dateTime', '')):
    start = e.get('start', {}).get('dateTime', '')[:16].replace('T', ' ')
    print(' ', start, '—', e.get('summary', 'Untitled'))
"

第 4 步 — 联系对方的 PA

提供 3–5 个具体可选时间段:

"Hey [PA Name], [your owner] would like to meet [their owner] for [duration].
Slots that work:
• [Day Date] at [HH:MM TZ]
• [Day Date] at [HH:MM TZ]
• [Day Date] at [HH:MM TZ]
Do any work? Or what times work best?"

若在工作日 2 小时内未收到回复 → 进行一次跟进。 若 4 小时后仍无回复 → 告知您的主管,并建议其直接联系对方。

第 5 步 — 预订会议

双方就时间达成一致后:

# 基础日历事件
GOG_ACCOUNT=owner@company.com gog calendar create primary 
  --summary "Meeting: [Owner A] + [Owner B]" 
  --start "YYYY-MM-DDTHH:MM:SS+00:00" 
  --end "YYYY-MM-DDTHH:MM:SS+00:00" 
  --attendees "other-owner@company.com" 
  --description "Scheduled via PA coordination"

如为视频会议,请添加会议链接:

  --description "Video call: https://meet.google.com/xxx-xxxx-xxx"

第 6 步 — 向双方确认

发送给您所属主管:
"✅ Done — [Date] at [Time] with [Person]. Calendar invite sent."

发送给对方 PA:
"✅ Invite sent to [Their Owner] for [Date] [Time]. Let me know if anything changes."

查找可用时间段(脚本)

#!/usr/bin/env python3
"""Find open meeting slots in the owner's calendar."""
import subprocess, json, sys
from datetime import datetime, timedelta, timezone

OWNER_EMAIL = "owner@company.com"  # replace
DURATION_MIN = 30
DAYS_AHEAD = 7
WORK_START_HOUR = 9
WORK_END_HOUR = 18

# Fetch calendar events
try:
    result = subprocess.run(
        ['gog', 'calendar', 'events', 'primary',
         '--from', datetime.now(timezone.utc).isoformat(),
         '--to', (datetime.now(timezone.utc) + timedelta(days=DAYS_AHEAD)).isoformat()],
        env={'GOG_ACCOUNT': OWNER_EMAIL, 'PATH': '/usr/bin:/usr/local/bin:/bin'},
        capture_output=True, text=True, timeout=30
    )
    events = json.loads(result.stdout) if result.stdout.strip() else []
except (subprocess.TimeoutExpired, json.JSONDecodeError, FileNotFoundError) as e:
    print("Could not fetch calendar:", e)
    sys.exit(1)

# Build list of busy (start, end) pairs
busy = []
for e in events:
    start = e.get('start', {}).get('dateTime')
    end = e.get('end', {}).get('dateTime')
    if start and end:
        busy.append((start, end))

# Find free slots during working hours
suggestions = []
for day_offset in range(1, DAYS_AHEAD + 1):
    day = datetime.now(timezone.utc) + timedelta(days=day_offset)

    # Skip weekends
    if day.weekday() >= 5:
        continue

    # Check each hour
    for hour in range(WORK_START_HOUR, WORK_END_HOUR):
        slot_start = day.replace(hour=hour, minute=0, second=0, microsecond=0)
        slot_end = slot_start + timedelta(minutes=DURATION_MIN)

        # Skip if slot goes past end of day
        if slot_end.hour > WORK_END_HOUR:
            continue

        # Check for conflicts
        conflict = any(
            slot_start.isoformat() < b[1] and slot_end.isoformat() > b[0]
            for b in busy
        )

        if not conflict:
            suggestions.append(slot_start)

        if len(suggestions) >= 5:
            break

    if len(suggestions) >= 5:
        break

if not suggestions:
    print("No slots found in the next 7 days during working hours.")
else:
    print(f"Available {DURATION_MIN}-min slots:")
    for s in suggestions:
        print(" •", s.strftime('%A %b %d'), "at", s.strftime('%H:%M'), "UTC")

重新安排会议

# 1. 查找原事件
GOG_ACCOUNT=owner@company.com gog calendar events primary 
  --from "$(date -u +%Y-%m-%dT%H:%M:%SZ)" 
  --to "$(date -u -d '+14 days' +%Y-%m-%dT%H:%M:%SZ)"

# 2. 删除旧事件(使用上一步输出中的 EVENT_ID)
GOG_ACCOUNT=owner@company.com gog calendar delete primary EVENT_ID

# 3. 与对方 PA 重新协调,并创建新事件

每次重新安排会议时,务必通知双方:

"[Owner] needs to move the [Date] meeting. Can we try [new time]?"

快捷模板

场景 模板
初始请求 "Hey [PA], [Owner A] wants to connect with [Owner B] for ~30 min [this/next] week. What works?"
提议时间段 "Here are 3 options: [A], [B], [C]. Any work?"
确认预订 "✅ Booked for [time]. Invite sent to [email]."
重新安排 "[Owner] can't make [time]. Can we try [alternative]?"
取消会议 "[Owner] needs to cancel [time]. Apologies."
未找到对应 PA "Hi [Owner], [Your Owner] would like to schedule a call. Are you available [options]?"

成本优化建议

  • 低成本操作:查找空闲时间段和预订会议 —— 小型模型即可胜任
  • 较高成本操作:跨时区推理或处理复杂约束条件 —— 推荐使用中等规模模型
  • 批量处理:一次性提出 3–5 个时间段,而非逐个试探(减少来回沟通次数)
  • 避免重复操作:不要反复拉取完整日历数据 —— 仅需拉取一次,提取出最多 5 个可用时间段后统一提出

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.3万人学习