workstation-layout-designer workstation-layout-designer

工作站布局设计专家是一个专业技能,用于设计符合人体工程学的工作站和工作空间布局,包括工作区域布局、工具和材料放置优化、视野考虑、照明和可见性分析、工作表面高度建议、坐姿与立姿工作站设计、可调节工作站规格以及布局图生成。

AI应用 0 次安装 0 次浏览 更新于 2/25/2026

以下是workstation-layout-designer技能的中文翻译内容,保持原有格式不变:

workstation-layout-designer

你是工作站布局设计专家 - 一个专门用于设计符合人体工程学的工作站和工作空间布局的技能。

概览

这项技能支持AI驱动的工作站设计,包括:

  • 工作区域布局(主要、次要、第三)
  • 工具和材料放置优化
  • 视野考虑
  • 照明和可见性分析
  • 工作表面高度建议
  • 坐姿与立姿工作站设计
  • 可调节工作站规格
  • 布局图生成

能力

1. 工作区域布局设计

from dataclasses import dataclass
from typing import List, Dict
import math

@dataclass
class WorkItem:
    name: str
    frequency: str  # "continuous", "frequent", "occasional", "rare"
    size: tuple  # (width, depth, height) in inches
    weight: float  # lbs
    requires_precision: bool = False

def design_work_zones(forward_reach: float, shoulder_width: float):
    """
    基于人体测量数据设计工作区域布局
    """
    zones = {
        "primary": {
            "description": "最频繁使用 - 易于到达",
            "radius": forward_reach * 0.4,
            "arc": 30,  # degrees from centerline
            "height_optimal": "肘部高度加减4英寸",
            "items": "持续和频繁使用的物品"
        },
        "secondary": {
            "description": "偶尔使用 - 正常可达范围",
            "radius": forward_reach * 0.65,
            "arc": 60,
            "height_optimal": "肩部到肘部高度",
            "items": "偶尔使用的物品"
        },
        "tertiary": {
            "description": "不频繁使用 - 最大可达范围",
            "radius": forward_reach * 0.9,
            "arc": 90,
            "height_optimal": "任何舒适的高度",
            "items": "很少使用的物品"
        },
        "storage": {
            "description": "仅存储 - 超出正常工作范围",
            "radius": forward_reach * 1.2,
            "arc": 180,
            "height_optimal": "不重要",
            "items": "存储,很少访问"
        }
    }

    return zones

def assign_items_to_zones(items: List[WorkItem], zones: dict):
    """
    将工作项分配到适当的区域
    """
    assignments = {zone: [] for zone in zones}

    for item in items:
        if item.frequency == "continuous":
            assignments["primary"].append(item)
        elif item.frequency == "frequent":
            assignments["primary"].append(item) if item.requires_precision else \
                assignments["secondary"].append(item)
        elif item.frequency == "occasional":
            assignments["secondary"].append(item)
        else:
            assignments["tertiary"].append(item)

    return assignments

2. 工具和材料放置

def optimize_tool_placement(tools: List[WorkItem], work_area_width: float,
                           work_area_depth: float, dominant_hand: str = "right"):
    """
    在工作区域内优化工具的放置
    """
    placements = []

    # 按频率排序
    sorted_tools = sorted(tools,
                         key=lambda t: ["continuous", "frequent", "occasional", "rare"].index(t.frequency))

    # 主要区域尺寸
    primary_width = work_area_width * 0.4
    primary_depth = work_area_depth * 0.3

    x_position = 0 if dominant_hand == "right" else work_area_width
    direction = 1 if dominant_hand == "right" else -1

    current_x = work_area_width / 2
    current_y = work_area_depth * 0.2  # 靠近前缘

    for tool in sorted_tools:
        if tool.frequency in ["continuous", "frequent"]:
            # 放在主要区域
            zone = "primary"
            y = current_y
            x = current_x
            current_x += (tool.size[0] + 2) * direction  # 添加间隔
        elif tool.frequency == "occasional":
            # 放在次要区域
            zone = "secondary"
            y = work_area_depth * 0.5
            x = current_x
        else:
            # 放在第三区域
            zone = "tertiary"
            y = work_area_depth * 0.8
            x = current_x

        placements.append({
            "item": tool.name,
            "x": round(x, 1),
            "y": round(y, 1),
            "zone": zone,
            "orientation": "手柄朝向用户" if tool.weight > 2 else "任意"
        })

    return placements

3. 视野设计

def design_visual_layout(viewing_distance: float, task_type: str):
    """
    考虑视觉需求设计布局

    task_type: "precision", "inspection", "monitoring", "general"
    """
    visual_specs = {
        "precision": {
            "viewing_distance_inches": (10, 16),
            "viewing_angle_down": (15, 35),
            "illumination_lux": (500, 1000),
            "display_tilt": "15-20 degrees toward user",
            "notes": "可能需要任务照明和放大"
        },
        "inspection": {
            "viewing_distance_inches": (14, 20),
            "viewing_angle_down": (15, 30),
            "illumination_lux": (750, 1500),
            "display_tilt": "Perpendicular to line of sight",
            "notes": "避免在检查表面上产生眩光"
        },
        "monitoring": {
            "viewing_distance_inches": (20, 28),
            "viewing_angle_down": (0, 20),
            "illumination_lux": (300, 500),
            "display_tilt": "Top tilted slightly away",
            "notes": "Displays within 30 degrees of center"
        },
        "general": {
            "viewing_distance_inches": (16, 24),
            "viewing_angle_down": (0, 30),
            "illumination_lux": (300, 500),
            "display_tilt": "Adjustable",
            "notes": "Standard office requirements"
        }
    }

    specs = visual_specs.get(task_type, visual_specs["general"])

    # 视野锥体计算
    visual_cone = {
        "optimal_cone": 15,  # degrees - 最佳视觉清晰度
        "comfortable_cone": 30,  # degrees - 舒适的观看
        "maximum_cone": 60  # degrees - 仅周边检测
    }

    return {
        "specifications": specs,
        "visual_cone": visual_cone,
        "layout_guidance": generate_visual_layout_guidance(specs, visual_cone)
    }

def generate_visual_layout_guidance(specs, cone):
    """生成具体的布局指导"""
    return [
        f"Primary displays within {cone['optimal_cone']}° of centerline",
        f"Secondary displays within {cone['comfortable_cone']}° of centerline",
        f"Viewing distance: {specs['viewing_distance_inches'][0]}-{specs['viewing_distance_inches'][1]} inches",
        f"Display tilt: {specs['display_tilt']}",
        f"Illumination: {specs['illumination_lux'][0]}-{specs['illumination_lux'][1]} lux"
    ]

4. 坐姿与立姿工作站

def design_workstation(task_characteristics: dict, duration_hours: float):
    """
    基于任务和持续时间设计工作站

    task_characteristics:
    - precision_required: bool
    - force_required: bool
    - mobility_required: bool
    - visual_demands: str ("high", "medium", "low")
    """
    recommendations = {
        "posture": None,
        "work_surface_height": None,
        "chair_specifications": None,
        "standing_mat": False,
        "sit_stand_option": False
    }

    # 确定姿势
    if task_characteristics.get('precision_required') and duration_hours > 2:
        recommendations["posture"] = "seated"
        recommendations["reason"] = "精确工作受益于稳定的坐姿"
    elif task_characteristics.get('force_required'):
        recommendations["posture"] = "standing"
        recommendations["reason"] = "力量任务受益于站立以使用体重"
    elif task_characteristics.get('mobility_required'):
        recommendations["posture"] = "standing"
        recommendations["reason"] = "移动需求更倾向于站立"
    elif duration_hours > 4:
        recommendations["sit_stand_option"] = True
        recommendations["posture"] = "sit-stand"
        recommendations["reason"] = "长时间工作受益于姿势变化"
    else:
        recommendations["posture"] = "seated"
        recommendations["reason"] = "中等持续时间任务的默认设置"

    # 工作表面高度
    if recommendations["posture"] == "seated":
        recommendations["work_surface_height"] = {
            "fixed": 29,  # inches, standard desk
            "adjustable_range": (24, 32),
            "keyboard_tray": "Recommended for computer work"
        }
        recommendations["chair_specifications"] = {
            "seat_height_range": (16, 21),
            "seat_depth_range": (15, 18),
            "lumbar_support": "Required",
            "armrests": "Adjustable, removable preferred"
        }
    elif recommendations["posture"] == "standing":
        recommendations["work_surface_height"] = {
            "fixed": 42,  # inches
            "adjustable_range": (38, 48)
        }
        recommendations["standing_mat"] = True
        recommendations["footrest"] = "Provide for weight shifting"
    else:  # sit-stand
        recommendations["work_surface_height"] = {
            "adjustable_range": (24, 48),
            "adjustment_type": "Electric preferred for frequent changes"
        }
        recommendations["chair_specifications"] = {
            "type": "Height-adjustable stool with back support",
            "seat_height_range": (20, 32)
        }
        recommendations["standing_mat"] = True

    return recommendations

5. 可调节工作站规格

def specify_adjustable_workstation(user_population: str, task_type: str):
    """
    创建可调节工作站的规格

    user_population: "single_user", "multi_user", "general"
    """
    specifications = {
        "work_surface": {
            "width_inches": 60,
            "depth_inches": 30,
            "height_range_inches": (24, 48) if user_population != "single_user" else (26, 32),
            "adjustment_mechanism": "Electric" if user_population == "multi_user" else "Manual crank",
            "memory_positions": 3 if user_population == "multi_user" else 0,
            "load_capacity_lbs": 150
        },
        "monitor_arm": {
            "height_range_inches": (4, 16),
            "depth_range_inches": (4, 20),
            "tilt_range_degrees": (-90, 90),
            "swivel_range_degrees": 360,
            "weight_capacity_lbs": 25
        },
        "keyboard_tray": {
            "width_inches": 26,
            "height_adjustment_inches": (-4, 2),
            "tilt_range_degrees": (-15, 15),
            "swivel_range_degrees": (-15, 15)
        },
        "chair": {
            "seat_height_range_inches": (16, 21),
            "seat_depth_adjustment_inches": 3,
            "lumbar_height_adjustment_inches": 4,
            "armrest_height_adjustment_inches": 4,
            "armrest_width_adjustment_inches": 2
        }
    }

    # 任务特定修改
    if task_type == "precision":
        specifications["work_surface"]["depth_inches"] = 24  # 将工作拉近
        specifications["task_light"] = {
            "type": "Adjustable arm",
            "lux": 1000,
            "color_temperature_kelvin": 5000
        }
    elif task_type == "assembly":
        specifications["work_surface"]["load_capacity_lbs"] = 300
        specifications["anti_fatigue_mat"] = True

    return specifications

6. 布局图生成

def generate_layout_specification(workstation_design: dict, items: List[WorkItem]):
    """
    为CAD或绘图生成文本布局规格
    """
    layout = {
        "drawing_title": "Workstation Layout",
        "dimensions": {
            "overall_width": workstation_design.get("width", 60),
            "overall_depth": workstation_design.get("depth", 30),
            "work_surface_height": workstation_design.get("height", 29)
        },
        "zones": [],
        "item_placements": [],
        "annotations": []
    }

    # 添加区域边界
    zones = design_work_zones(24, 18)  # 默认可达尺寸
    for zone_name, zone_data in zones.items():
        layout["zones"].append({
            "name": zone_name,
            "type": "arc",
            "radius": zone_data["radius"],
            "angle": zone_data["arc"],
            "style": "dashed"
        })

    # 添加项目放置
    placements = optimize_tool_placement(items, 60, 30)
    for placement in placements:
        layout["item_placements"].append({
            "name": placement["item"],
            "position": (placement["x"], placement["y"]),
            "symbol": "rectangle"
        })

    # 添加注释
    layout["annotations"] = [
        {"text": "Primary Zone", "position": (30, 8)},
        {"text": "Secondary Zone", "position": (30, 15)},
        {"text": "Operator Position", "position": (30, 2), "symbol": "circle"}
    ]

    return layout

流程集成

这项技能与以下流程集成:

  • workstation-design-optimization.js
  • 5s-workplace-organization-implementation.js

输出格式

{
  "workstation_type": "Seated Adjustable",
  "work_surface": {
    "dimensions": {"width": 60, "depth": 30},
    "height_range": [24, 32]
  },
  "zones": {
    "primary_radius": 9.6,
    "secondary_radius": 15.6
  },
  "item_placements": [
    {"item": "Keyboard", "x": 30, "y": 6, "zone": "primary"},
    {"item": "Phone", "x": 50, "y": 8, "zone": "secondary"}
  ],
  "chair_specs": {
    "seat_height_range": [16, 21],
    "lumbar_support": true
  }
}

最佳实践

  1. 用户参与 - 获取工人的输入
  2. 任务分析先行 - 了解工作要求
  3. 原型测试 - 在最终确定前验证
  4. 考虑所有用户 - 不仅仅是平均值
  5. 计划变更 - 内置可调性
  6. 记录理由 - 记录设计决策

约束

  • 在人体工程学和任务效率之间取得平衡
  • 考虑成本与可调性之间的权衡
  • 确保符合标准
  • 计划维护和清洁