项目文件夹

文件
2026-07-13 13:30:30 +08:00

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",
],
}