googlecloudplatform--generative-ai
134 行
4.3 KiB
Python
134 行
4.3 KiB
Python
# Copyright 2026 Google LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# https://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
from google.adk.tools import ToolContext
|
|
|
|
from app.state_schema import OnboardingStep
|
|
|
|
|
|
def send_welcome_packet(
|
|
name: str, email: str, start_date: str, tool_context: ToolContext
|
|
) -> dict:
|
|
"""Sends the initial welcome packet and document signature links to the new hire.
|
|
|
|
Args:
|
|
name: Full name of the new hire.
|
|
email: Email address of the new hire.
|
|
start_date: The employee's official start date (YYYY-MM-DD).
|
|
|
|
Returns:
|
|
A dictionary containing delivery status and links to sign.
|
|
"""
|
|
state = tool_context.state
|
|
state["new_hire_details"] = {
|
|
"name": name,
|
|
"email": email,
|
|
"start_date": start_date,
|
|
}
|
|
state["current_step"] = OnboardingStep.WELCOME_SENT
|
|
state["pending_signals"] = ["document_signed"]
|
|
|
|
return {
|
|
"status": "success",
|
|
"message": f"Welcome packet sent to {name} ({email}). Documents pending signature.",
|
|
"signature_link": f"https://onboarding.example.com/sign?email={email}",
|
|
}
|
|
|
|
|
|
def provision_software_accounts(username: str, tool_context: ToolContext) -> dict:
|
|
"""Provisions corporate software accounts (email, Slack) for the new hire.
|
|
|
|
Args:
|
|
username: Desired corporate username prefix.
|
|
|
|
Returns:
|
|
A dictionary containing the generated credentials and status.
|
|
"""
|
|
state = tool_context.state
|
|
email = f"{username}@example.com"
|
|
|
|
state["current_step"] = OnboardingStep.IT_PROVISIONED
|
|
state["new_hire_details"]["corporate_email"] = email
|
|
|
|
if "document_signed" in state.get("pending_signals", []):
|
|
state["pending_signals"].remove("document_signed")
|
|
|
|
state["pending_signals"].append("hardware_delivered")
|
|
|
|
return {
|
|
"status": "success",
|
|
"corporate_email": email,
|
|
"slack_user": f"@{username}",
|
|
"temporary_password": "TempPassword2026!",
|
|
}
|
|
|
|
|
|
def check_hardware_delivery(tracking_id: str, tool_context: ToolContext) -> dict:
|
|
"""Queries the shipping carrier API to check delivery status of the new hire's laptop.
|
|
|
|
Args:
|
|
tracking_id: The shipment tracking number (e.g., HW-12345).
|
|
|
|
Returns:
|
|
A dictionary containing shipping status.
|
|
"""
|
|
state = tool_context.state
|
|
|
|
if tracking_id.startswith("HW-"):
|
|
state["current_step"] = OnboardingStep.HARDWARE_DELIVERED
|
|
|
|
if "hardware_delivered" in state.get("pending_signals", []):
|
|
state["pending_signals"].remove("hardware_delivered")
|
|
|
|
return {
|
|
"status": "delivered",
|
|
"tracking_id": tracking_id,
|
|
"carrier": "FedEx",
|
|
"signed_by": state.get("new_hire_details", {}).get("name", "Resident"),
|
|
}
|
|
|
|
return {
|
|
"status": "in_transit",
|
|
"tracking_id": tracking_id,
|
|
"message": "Package is in transit to employee residence.",
|
|
}
|
|
|
|
|
|
def send_day_one_schedule(email: str, tool_context: ToolContext) -> dict:
|
|
"""Sends the personalized Day One onboarding itinerary to the employee's corporate email.
|
|
|
|
Args:
|
|
email: The corporate email address of the employee.
|
|
|
|
Returns:
|
|
A dictionary confirming completion status.
|
|
"""
|
|
state = tool_context.state
|
|
state["current_step"] = OnboardingStep.COMPLETED
|
|
state["pending_signals"] = []
|
|
|
|
name = state.get("new_hire_details", {}).get("name", "New Hire")
|
|
|
|
return {
|
|
"status": "success",
|
|
"message": f"Personalized Day One schedule sent successfully to {name} at {email}.",
|
|
"itinerary": [
|
|
"09:00 AM - Welcome & IT Login Setup",
|
|
"10:00 AM - Meet the Manager & Team Intro",
|
|
"11:30 AM - Platform Architecture Overview",
|
|
"01:00 PM - Lunch break",
|
|
"02:00 PM - ADK workflow walkthrough",
|
|
],
|
|
}
|