Appearance
agendlee スケジュール機能ドキュメント
注意: 求職者サイドの機能は除外しています
1. 機能概要
1.1 エージェント(管理者)向け機能
| 機能 | 説明 |
|---|---|
| スケジュール一覧表示 | 全求職者のスケジュールをカレンダー形式で表示 |
| 求職者フィルター | 特定の求職者でスケジュールを絞り込み |
| 面談予定の提案 | 求職者に面談候補日時を提案 |
| 面談予定の確定 | 提案した予定を確定し、メール通知 |
| スケジュール編集・削除 | 登録済みの予定を変更・削除 |
| 日次Slack通知 | 当日の面談予定を毎朝Slackに通知 |
1.2 企業向け機能(エージェントが企業として操作)
| 機能 | 説明 |
|---|---|
| 求職者の空き予定確認 | 求職者が登録した空き時間を表示 |
| 面談予定の確定登録 | 空き予定内に面談予定を確定 |
| 再調整依頼 | 求職者に追加の空き予定入力を依頼 |
2. スケジュールのステータス管理
2.1 ステータス種別
| ステータス | 説明 | 用途 |
|---|---|---|
提案 | エージェントが提案中の候補日 | 求職者への日程打診 |
確定 | 面談が確定した予定 | 最終決定した面談日程 |
空き | 求職者が対応可能な時間帯 | 求職者が登録(参照用) |
2.2 面接段階(stage)
- カジュアル面談
- コーディングテスト
- 一次面接
- 二次面接
- 最終面接
- オファー面談
- その他
2.3 対応可能形式(adaptability)
- オンラインのみ可
- 対面のみ可
- オンライン・対面可
3. カレンダー表示機能
3.1 表示モード
| モード | 説明 |
|---|---|
timeGridWeek | 週表示(デフォルト) |
dayGridMonth | 月表示 |
timeGridDay | 日表示 |
listWeek | リスト表示 |
3.2 営業時間
- 表示範囲: 8:00 - 21:00
- 営業日: 月曜〜金曜
- 祝日: グレー表示(holidays-jp APIで取得)
3.3 カラーコーディング
| 条件 | 色 | カラーコード |
|---|---|---|
| 確定・オファー面談 | 赤 | #CC0900 |
| 確定・その他 | オレンジ | #CC7700 |
| 空き予定 | 緑 | #009900 |
| 提案中 | 青 | #0000FF |
3.4 インタラクション
- ドラッグ&ドロップ: カレンダー上で新規イベント作成
- クリック: 既存イベントの編集モーダルを開く
- 今日ボタン: 現在日にスクロール
4. CRUD操作
4.1 スケジュール作成(提案)
エージェントが面談を提案する場合:
入力項目:
- 日時(開始・終了)
- 企業選択
- 面接段階
- ステータス: 「提案」で固定
処理:
1. バリデーション(日付・時間の妥当性)
2. DynamoDBに登録
3. Slack通知4.2 スケジュール確定
提案から確定に変更する場合:
入力項目:
- 確定メールタイトル
- 確定送信メール文(必須)
処理:
1. ステータスを「提案」→「確定」に更新
2. 求職者にメール送信
3. Slack通知4.3 スケジュール編集
編集可能項目:
- 開始日時
- 終了日時
- ステータス(提案⇄確定)4.4 スケジュール削除
- 確認ダイアログ表示後、削除実行
- Slack通知
5. 通知機能
5.1 Slack通知
| タイミング | 内容 |
|---|---|
| スケジュール登録時 | 新規予定の詳細 |
| スケジュール変更時 | 変更前後の比較 |
| スケジュール削除時 | 削除された予定の詳細 |
| 毎日(定時) | 当日の全面談予定 |
日次通知の例:
本日、2024年1月15日(月)の面談予定
1. 14:00-15:00 山田太郎様 / 株式会社ABC(一次面接)
2. 16:00-17:00 鈴木花子様 / DEF株式会社(最終面接)5.2 メール通知
| タイミング | 宛先 | 内容 |
|---|---|---|
| 確定時 | 求職者 | 面談日程確定のお知らせ |
メール件名:
【面接日程確定/[企業名]様】[求職者名]様 / TechClipsエージェント6. データ構造
6.1 スケジュールオブジェクト
typescript
interface Schedule {
id: string // スケジュール固有ID
jobSeekerId: string // 求職者ID
companyId: string // 企業ID
companyName: string // 企業名
jobSeekerName: string // 求職者名
status: '提案' | '確定' | '空き'
stage: string // 面接段階
start: string // ISO8601形式の開始時刻
end: string // ISO8601形式の終了時刻
adaptability?: string // 対応可能形式
createdAt: string
updatedAt: string
}6.2 カレンダーイベント(FullCalendar用)
typescript
interface CalendarEvent {
title: string // 表示タイトル
start: string // ISO8601形式
end: string // ISO8601形式
backgroundColor: string // 背景色
textColor: string // テキスト色
extendedProps: {
status: string
stage: string
partnerName: string
adaptability: string
}
}7. API一覧(エージェント/管理者向け)
7.1 スケジュール取得
| メソッド | パス | 説明 |
|---|---|---|
| GET | /schedule | 全スケジュール取得 |
| GET | /schedule/{jobSeekerId}/{companyId} | 特定求職者×企業のスケジュール |
7.2 スケジュール操作
| メソッド | パス | 説明 |
|---|---|---|
| POST | /schedule | 新規スケジュール作成(提案) |
| POST | /schedule/{jobSeekerId}/{companyId} | 面談予定確定 |
| PATCH | /schedule | スケジュール更新 |
| DELETE | /schedule | スケジュール削除 |
7.3 その他
| メソッド | パス | 説明 |
|---|---|---|
| GET | /user/forfilter | フィルター用ユーザーリスト |
| GET | /user/{jobSeekerId}/progress | 求職者の応募企業リスト |
| POST | /readjustment | 再調整依頼 |
8. バリデーションルール
8.1 日時バリデーション
| ルール | 説明 |
|---|---|
| 日付 | 過去日は不可 |
| 開始時間 | 8:00〜21:00の範囲内 |
| 終了時間 | 開始時間より後 |
| 時間単位 | 30分単位に正規化 |
8.2 スケジュール登録時
- 重複チェック: 同一時間帯に確定・提案予定がないこと
- 空き予定チェック: 企業側で確定する場合、求職者の空き予定内であること
9. 選考進行管理(ProgressTab)
求職者ごとの選考進行状況を管理する機能。
9.1 進行ステップ
| ステップ | 説明 |
|---|---|
| 1. 入力待ち | 求職者が空き予定を入力中 |
| 2. 日程提案 | エージェントが日程を提案中 |
| 3. 調整終了 | 日程が確定 |
| 4. 選考終了 | 選考プロセス完了 |
9.2 データ構造
typescript
interface Progress {
companyId: string
companyName: string
currentStep: number // 0-3
scheduleURL: string // 日程調整URL
updatedAt: number // タイムスタンプ
}10. 使用技術
10.1 フロントエンド
- カレンダー: FullCalendar(React版)
- dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin
- タイムゾーン: Asia/Tokyo(JST固定)
- 祝日API: holidays-jp.github.io
10.2 バックエンド
- データベース: DynamoDB
- 通知: Slack Webhook, AWS SES(メール)
- 認証: JWT(Cognito)
11. busonへの移植時の考慮事項
11.1 busonに既存の機能
- 基本的なスケジュールCRUD
- カレンダー表示(FullCalendar)
- ステータス管理(提案/確定)
11.2 追加が必要な機能
| 機能 | 優先度 | 備考 |
|---|---|---|
| 面接段階(stage)管理 | 高 | 7段階のステージ選択 |
➡ 求職者に紐づいている選考があるので、その選考の選考ステータスを選択させる | 確定時のメール通知 | 高 | 求職者への自動メール | ➡ CloudRunに展開予定なので、それに準じたメール通知の実装の必要あり。 | 日次Slack通知 | 中 | 当日の予定を毎朝通知 | ➡ これもCloudRunに展開予定 | 選考進行管理 | 低 | ステップ管理機能 | ➡ これは求職者に紐づいた選考で管理する | 対応可能形式 | 低 | オンライン/対面の選択 | ➡ これは実装済
11.3 不要な機能
求職者サイド:
- 求職者による空き予定登録
- 求職者向けカレンダーページ
- 求職者向けモーダル
- 企業向け公開URL(暗号化/復号化)
未完成機能:
- 再調整依頼機能(agendleeでもバックエンド未実装)