跳到正文
cccskills
免费在 GitHub 公开

equipment-fleet-manager

Manage construction equipment fleet. Track utilization, maintenance, and assignments.

中文简介正在准备中。当前显示原文说明。

实测评分 未实测

查看安装方法

包含的文件(3)

  • SKILL.md6.1 KB
  • claw.json412 B
  • instructions.md1.1 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Equipment Fleet Manager

Technical Implementation

import pandas as pd
from datetime import date, timedelta
from typing import Dict, Any, List, Optional
from dataclasses import dataclass, field
from enum import Enum


class EquipmentStatus(Enum):
    AVAILABLE = "available"
    IN_USE = "in_use"
    MAINTENANCE = "maintenance"
    REPAIR = "repair"
    RETIRED = "retired"


class EquipmentType(Enum):
    CRANE = "crane"
    EXCAVATOR = "excavator"
    LOADER = "loader"
    FORKLIFT = "forklift"
    GENERATOR = "generator"
    COMPRESSOR = "compressor"
    SCAFFOLDING = "scaffolding"
    OTHER = "other"


@dataclass
class MaintenanceRecord:
    record_id: str
    equipment_id: str
    maintenance_type: str
    scheduled_date: date
    completed_date: Optional[date]
    cost: float
    notes: str = ""


@dataclass
class Assignment:
    assignment_id: str
    equipment_id: str
    project: str
    location: str
    start_date: date
    end_date: Optional[date]
    operator: str = ""


@dataclass
class Equipment:
    equipment_id: str
    name: str
    equipment_type: EquipmentType
    make: str
    model: str
    year: int
    status: EquipmentStatus
    hourly_rate: float
    daily_rate: float
    current_hours: float = 0
    last_maintenance: Optional[date] = None
    next_maintenance_hours: float = 500
    assignments: List[Assignment] = field(default_factory=list)


class EquipmentFleetManager:
    def __init__(self, company_name: str):
        self.company_name = company_name
        self.equipment: Dict[str, Equipment] = {}
        self.maintenance_records: List[MaintenanceRecord] = {}
        self._equip_counter = 0
        self._assign_counter = 0

    def add_equipment(self, name: str, equipment_type: EquipmentType,
                     make: str, model: str, year: int,
                     hourly_rate: float, daily_rate: float) -> Equipment:
        self._equip_counter += 1
        equip_id = f"EQ-{self._equip_counter:04d}"

        equip = Equipment(
            equipment_id=equip_id,
            name=name,
            equipment_type=equipment_type,
            make=make,
            model=model,
            year=year,
            status=EquipmentStatus.AVAILABLE,
            hourly_rate=hourly_rate,
            daily_rate=daily_rate
        )
        self.equipment[equip_id] = equip
        return equip

    def assign_equipment(self, equip_id: str, project: str, location: str,
                        start_date: date, operator: str = "") -> Assignment:
        if equip_id not in self.equipment:
            return None

        self._assign_counter += 1
        assign_id = f"ASN-{self._assign_counter:04d}"

        assignment = Assignment(
            assignment_id=assign_id,
            equipment_id=equip_id,
            project=project,
            location=location,
            start_date=start_date,
            end_date=None,
            operator=operator
        )

        self.equipment[equip_id].assignments.append(assignment)
        self.equipment[equip_id].status = EquipmentStatus.IN_USE
        return assignment

    def return_equipment(self, equip_id: str, hours_used: float):
        if equip_id in self.equipment:
            equip = self.equipment[equip_id]
            equip.status = EquipmentStatus.AVAILABLE
            equip.current_hours += hours_used
            if equip.assignments:
                equip.assignments[-1].end_date = date.today()

    def schedule_maintenance(self, equip_id: str, maintenance_type: str,
                            scheduled_date: date, cost: float):
        if equip_id not in self.equipment:
            return
        record_id = f"MNT-{len(self.maintenance_records) + 1:04d}"
        record = MaintenanceRecord(record_id, equip_id, maintenance_type,
                                  scheduled_date, None, cost)
        self.maintenance_records[record_id] = record

    def get_available_equipment(self, equipment_type: EquipmentType = None) -> List[Equipment]:
        available = [e for e in self.equipment.values()
                    if e.status == EquipmentStatus.AVAILABLE]
        if equipment_type:
            available = [e for e in available if e.equipment_type == equipment_type]
        return available

    def get_utilization_report(self) -> Dict[str, Any]:
        in_use = sum(1 for e in self.equipment.values()
                    if e.status == EquipmentStatus.IN_USE)
        total = len(self.equipment)
        return {
            'total_equipment': total,
            'in_use': in_use,
            'available': sum(1 for e in self.equipment.values()
                            if e.status == EquipmentStatus.AVAILABLE),
            'maintenance': sum(1 for e in self.equipment.values()
                              if e.status == EquipmentStatus.MAINTENANCE),
            'utilization_rate': round(in_use / total * 100, 1) if total > 0 else 0
        }

    def export_fleet(self, output_path: str):
        data = [{
            'ID': e.equipment_id,
            'Name': e.name,
            'Type': e.equipment_type.value,
            'Make/Model': f"{e.make} {e.model}",
            'Year': e.year,
            'Status': e.status.value,
            'Hours': e.current_hours,
            'Daily Rate': e.daily_rate
        } for e in self.equipment.values()]
        pd.DataFrame(data).to_excel(output_path, index=False)

Quick Start

fleet = EquipmentFleetManager("ABC Construction")

crane = fleet.add_equipment("Tower Crane #1", EquipmentType.CRANE,
                           "Liebherr", "280 EC-H", 2020, 150, 1200)

assignment = fleet.assign_equipment(crane.equipment_id, "Office Tower",
                                   "Site A", date.today(), "John Smith")

report = fleet.get_utilization_report()
print(f"Utilization: {report['utilization_rate']}%")

Resources

  • DDC Book: Chapter 3.2 - Resource Management

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Create 4D construction simulations by linking BIM elements to project schedules. Generate time-based visualizations, sequence analysis, and construction phasing with Gantt integration.

中文简介正在准备中。当前显示原文说明。

datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction3682026年10月20日 更新

Analyze 5000+ IFC and Revit projects at scale for patterns, benchmarks, and insights. Big data analysis for construction.

中文简介正在准备中。当前显示原文说明。

datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction3682026年10月20日 更新

Check construction AI systems against the EU AI Act (Regulation 2024/1689): classify risk of estimation, scheduling, CV and agent tools, document transparency, keep human oversight. Use when deploying or auditing AI in construction.

中文简介正在准备中。当前显示原文说明。

datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction3682026年10月20日 更新

Orchestrate multiple AI agents for construction workflows: estimator, scheduler, document, QA and safety agents coordinated by a supervisor agent, with human checkpoints. Use when automating end-to-end project processes with agentic AI.

中文简介正在准备中。当前显示原文说明。

datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction3682026年10月20日 更新

Create Apache Airflow DAGs for construction data pipelines. Orchestrate ETL, validation, and reporting workflows.

中文简介正在准备中。当前显示原文说明。

datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction3682026年10月20日 更新

Automate as-built documentation and digital handover for construction. Compile project records, generate O&M manuals, create asset databases, and ensure complete project closeout.

中文简介正在准备中。当前显示原文说明。

datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction3682026年10月20日 更新

查看 datadrivenconstruction 的全部技能

报告此技能的问题