文件预览

config.py

查看 ͼ���������������� 技能包中的文件内容。

文件内容

skills/smyx_common/scripts/config.py

#!/usr/bin/env python3
import os
import sys
from enum import Enum
from typing import Dict
import inspect

import yaml
import platform


class YamlUtil:

    @staticmethod
    def load(path, config: Dict = {}) -> Dict:
        try:
            if not os.path.exists(path):
                os.makedirs(os.path.dirname(path), exist_ok=True)
                with open(path, "w", encoding="utf-8") as f:
                    yaml.dump(config, f, default_flow_style=False, allow_unicode=True)
                return config
            with open(path, "r", encoding="utf-8") as f:
                config = yaml.safe_load(f) or {}
                for key, value in config.items():
                    if key not in config:
                        config[key] = value
                return config
        except:
            pass
        return config

    @staticmethod
    def save(path, config: Dict) -> Dict:
        try:
            with open(path, "w", encoding="utf-8") as f:
                yaml.dump(config, f, default_flow_style=False, allow_unicode=True)
        except:
            pass
        return config


class BaseEnum:

    def __init_subclass__(cls, **kwargs):
        super().__init_subclass__(**kwargs)
        clsModule = cls.__module__
        cls_path = inspect.getfile(cls)
        clsFullName = f"{cls.__module__}.{cls.__name__}"
        cls_dirpath = os.path.dirname(cls_path)  # .../src
        clsModulePath = clsModule.replace(".", "\\")
        current_dir = os.path.dirname(os.path.abspath(__file__))  # .../src
        config_path = os.path.join(cls_dirpath, "config.yaml")
        config = YamlUtil.load(config_path)
        cls.init(config)
        env = config.get("env")
        if env:
            env_config_path = os.path.join(cls_dirpath, f"config-{env}.yaml")
            env_config = YamlUtil.load(env_config_path)
            cls.init(env_config)

    @classmethod
    def init(cls, config=None):
        clsName = cls.__name__
        clsConfig = config and config.get(clsName)
        if clsConfig:
            for config_key, config_value in clsConfig.items():
                new_config_key = config_key = config_key.upper().replace("-", "_")
                if hasattr(cls, new_config_key):
                    setattr(cls, new_config_key, config_value)


class ApiEnum(BaseEnum):
    API_KEY = None

    API_SECRET_KEY = None

    DATABASE_URL = ""

    BASE_URL_OPEN_API = ""

    BASE_URL_OPEN_H5 = ""

    BASE_URL_HEALTH = ""

    OPEN_TOKEN = ""

    TOKEN = ""

    DEFAULT__REQUEST_TIMEOUT = 120

    DEFAULT__PAGE_SIZE = 5

    DEFAULT__PAGE_SIZE_MAX = 65536

    GET_DOWNLOAD_URL__URL = BASE_URL_OPEN_API + "/api/tos/get-download-url"


class ConstantEnum(BaseEnum):
    class SourceEnum(Enum):
        ARK_CLAW = "ARK_CLAW"
        JVS_CLAW = "JVS_CLAW"
        LIGHT_CLAW = "LIGHT_CLAW"
        WUHONG = "WUHONG"
        COZE = "COZE"
        SKILL_HUB = "SKILL_HUB"
        GIT_HUB = "GIT_HUB"
        CLAW_HUB = "CLAW_HUB"
        FEISHU = "FEISHU"
        DINGTALK = "DINGTALK"
        WEIXIN = "WEIXIN"
        YUANBAO = "YUANBAO"
        WECOM = "WECOM"
        QQBOT = "QQBOT"

    APP__ID = ""

    APP__SOURCE = SourceEnum.CLAW_HUB.value

    IS_DEBUG = False

    CURRENT__OPEN_ID = ""

    CURRENT__USER_NAME = ""

    CURRENT__TENTANT_CODE = ""

    FEISHU_APP__ID = ""

    FEISHU_APP__SECRET = ""

    FEISHU_APP__RECEIVE_ID = ""

    DEFAULT__SCENE_CODE = ""

    DEFAULT__OPEN_ID = ""

    DEFAULT__SKILL_HUB_NAME = APP__SOURCE

    DEFAULT__SKILL_PLATFORM_NAME = ""

    DEFAULT__OUTPUT_LEVEL = "json"

    SUPPORTED_FORMATS = ["mp4", "avi", "mov"]

    MAX_FILE_SIZE_MB = 10

    @staticmethod
    def is_debug():
        return platform.system() == 'Windows' or platform.system() != 'Linux' and ConstantEnum.IS_DEBUG

    @classmethod
    def init(cls, config=None):
        super().init(config)
        openclaw_sender_open_id = os.environ.get("OPENCLAW_SENDER_OPEN_ID")
        openclaw_sender_username = os.environ.get("OPENCLAW_SENDER_USERNAME")
        feishu_open_id = os.environ.get("FEISHU_OPEN_ID")
        if openclaw_sender_open_id:
            cls.CURRENT__OPEN_ID = openclaw_sender_open_id
        if openclaw_sender_username:
            cls.CURRENT__USER_NAME = openclaw_sender_username
        if feishu_open_id:
            cls.FEISHU_APP__RECEIVE_ID = feishu_open_id

    class SceneCodeEnum(Enum):
        # 开放 #
        OPEN_HEALTH_AI_ANALYSIS = "OPEN_HEALTH_AI_ANALYSIS"
        OPEN_PERSON_RISK_ANALYSIS = "OPEN_PERSON_RISK_ANALYSIS"
        # 智眸 #
        PUBLIC_AREA_AI_ANALYSIS = "PUBLIC_AREA_AI_ANALYSIS"
        PERSONNEL_LEAVE_POST_MONITORING = "PERSONNEL_LEAVE_POST_MONITORING"
        CRAWL_MONITOR = "CRAWL_MONITOR"
        # 先兆感知 #
        XIAN_ZHAO_GAN_ZHI_DESK_LAMP = "XIAN_ZHAO_GAN_ZHI_DESK_LAMP"
        PET_ANALYSIS = "PET_ANALYSIS"
        CRAWL_ANALYSIS = "CRAWL_ANALYSIS"
        AQUARIUM_ANALYSIS = "AQUARIUM_ANALYSIS"
        PSYCHOLOGY_ANALYSIS = "PSYCHOLOGY_ANALYSIS"
        AUTISM_ANALYSIS = "AUTISM_ANALYSIS"
        DIET_ANALYSIS = "DIET_ANALYSIS"
        DRIVE_ANALYSIS = "DRIVE_ANALYSIS"
        SPORT_ANALYSIS = "SPORT_ANALYSIS"
        EMOTION_ANALYSIS = "EMOTION_ANALYSIS"
        STUDY_ANALYSIS = "STUDY_ANALYSIS"
        RISK_ANALYSIS = "PERSON_RISK"
        INFANT_SAFETY_MONITORING_ANALYSIS = "INFANT_SAFETY_MONITORING"
        PHONE_USAGE_MONITORING_ANALYSIS = "PHONE_USAGE_MONITORING"
        INCONTINENCE_ALERT_ANALYSIS = "INCONTINENCE_ALERT"
        RESPIRATORY_SYMPTOM_RECOGNITION_ANALYSIS = "RESPIRATORY_SYMPTOM_RECOGNITION"
        ELECTRIC_VEHICLE_DETECTION_ANALYSIS = "ELECTRIC_VEHICLE_DETECTION"
        SMOKING_DETECTION_ANALYSIS = "SMOKING_DETECTION"
        PET_DETECTION_FEEDER_ANALYSIS = "PET_DETECTION_FEEDER"
        PET_HEALTH_MONITORING_ANALYSIS = "PET_HEALTH_MONITORING"
        STROKE_RISK_SCREENING_ANALYSIS = "STROKE_RISK_SCREENING"
        HUMAN_DETECTION_ANALYSIS = "HUMAN_DETECTION"
        STRANGER_RECOGNITION_ANALYSIS = "STRANGER_RECOGNITION"
        FOCUS_ANALYSIS_ANALYSIS = "FOCUS_ANALYSIS"
        HUMAN_POSTURE_RECOGNITION_ANALYSIS = "HUMAN_POSTURE_RECOGNITION"
        HUMAN_EMOTION_RECOGNITION_ANALYSIS = "HUMAN_EMOTION_RECOGNITION"
        FIRE_SMOKE_DETECTION_ANALYSIS = "FIRE_SMOKE_DETECTION"
        BASIC_OBJECT_DETECTION_ANALYSIS = "BASIC_OBJECT_DETECTION"
        CHILD_DANGEROUS_BEHAVIOR_RECOGNITION_ANALYSIS = "CHILD_DANGEROUS_BEHAVIOR_RECOGNITION"
        PET_RESTRICTED_AREA_WARNING_ANALYSIS = "PET_RESTRICTED_AREA_WARNING"
        SLEEP_QUALITY_ANALYSIS_ANALYSIS = "SLEEP_QUALITY_ANALYSIS"
        PET_DETECTION_ANALYSIS = "PET_DETECTION"
        PSYCHOLOGICAL_STRESS_ASSESSMENT_ANALYSIS = "PSYCHOLOGICAL_STRESS_ASSESSMENT"
        VISUAL_QA_ANALYSIS = "VISUAL_QA"
        PET_BODY_HEALTH_ANALYSIS = "PET_BODY_HEALTH_ANALYSIS"
        PET_BEHAVIOR_DETECTION_ANALYSIS = "PET_BEHAVIOR_DETECTION"
        INFANT_SUFFOCATION_WARNING_ANALYSIS = "INFANT_SUFFOCATION_WARNING"
        STRANGER_APPROACH_WARNING_ANALYSIS = "STRANGER_APPROACH_WARNING"
        IMAGE_QUALITY_DETECTION_ANALYSIS = "IMAGE_QUALITY_DETECTION"
        CHILD_EMOTION_RECOGNITION_ANALYSIS = "CHILD_EMOTION_RECOGNITION"
        OUTDOOR_MONITORING_ANALYSIS = "OUTDOOR_MONITORING"
        FALL_DETECTION_IMAGE_ANALYSIS = "FALL_DETECTION_IMAGE"
        CUSTOM_TIMELAPSE_ANALYSIS = "CUSTOM_TIMELAPSE"
        CONTACTLESS_VITAL_SIGNS_MONITORING_ANALYSIS = "CONTACTLESS_VITAL_SIGNS_MONITORING"
        VIDEO_SEARCH_ANALYSIS = "VIDEO_SEARCH"
        FAMILIAR_PERSON_RECOGNITION_ANALYSIS = "FAMILIAR_PERSON_RECOGNITION"
        TCM_CONSTITUTION_RECOGNITION_ANALYSIS = "TCM_CONSTITUTION_RECOGNITION"
        CONTACTLESS_HEALTH_RISK_DETECTION_ANALYSIS = "CONTACTLESS_HEALTH_RISK_DETECTION"
        UNACCOMPANIED_MONITORING_ANALYSIS = "UNACCOMPANIED_MONITORING"
        ELDERLY_FALL_DETECTION_ANALYSIS = "ELDERLY_FALL_DETECTION"
        PARKINSON_EPILEPSY_BEHAVIOR_RECOGNITION_ANALYSIS = "PARKINSON_EPILEPSY_BEHAVIOR_RECOGNITION"
        PET_BREED_INDIVIDUAL_RECOGNITION_ANALYSIS = "PET_BREED_INDIVIDUAL_RECOGNITION"
        ELDERLY_BED_EXIT_WANDERING_MONITORING_ANALYSIS = "ELDERLY_BED_EXIT_WANDERING_MONITORING"
        ARRHYTHMIA_EARLY_WARNING_ANALYSIS = "ARRHYTHMIA_EARLY_WARNING"
        FIRE_DETECTION_ANALYSIS = "FIRE_DETECTION"
        VISUAL_SUMMARY_ANALYSIS = "VISUAL_SUMMARY"
        PACKAGE_DETECTION_ANALYSIS = "PACKAGE_DETECTION"
        INFANT_BLANKET_KICK_MONITORING_ANALYSIS = "INFANT_BLANKET_KICK_MONITORING"
        PET_CALMING_TRIGGER_ANALYSIS = "PET_CALMING_TRIGGER"
        CAT_FACE_RECOGNITION_ANALYSIS = "CAT_FACE_RECOGNITION"
        INFANT_SLEEP_MONITORING_ANALYSIS = "INFANT_SLEEP_MONITORING"
        VIRTUAL_FENCE_INTRUSION_WARNING_ANALYSIS = "VIRTUAL_FENCE_INTRUSION_WARNING"
        FALL_DETECTION_VIDEO_ANALYSIS = "FALL_DETECTION_VIDEO"
        INFANT_CRY_ANALYSIS = "INFANT_CRY_ANALYSIS"
        PET_VOCAL_EMOTION_ANALYSIS = "PET_VOCAL_EMOTION_ANALYSIS"
        SMYX_PET_LITTER_BOX_WASTE_ANALYSIS = "SMYX_PET_LITTER_BOX_WASTE_ANALYSIS"
        SMYX_PET_SCRATCH_FREQUENCY_INTENSITY_ANALYSIS = "SMYX_PET_SCRATCH_FREQUENCY_INTENSITY_ANALYSIS"
        SMYX_PET_BODY_CONDITION_SCORE_3D_ANALYSIS = "SMYX_PET_BODY_CONDITION_SCORE_3D_ANALYSIS"
        SMYX_PET_HOSPITAL_WAITING_ANXIETY_ANALYSIS = "SMYX_PET_HOSPITAL_WAITING_ANXIETY_ANALYSIS"
        SMYX_PET_WATER_FOUNTAIN_INTAKE_ANALYSIS = "SMYX_PET_WATER_FOUNTAIN_INTAKE_ANALYSIS"
        SMYX_PET_TOY_INTERACTION_ACTIVITY_ANALYSIS = "SMYX_PET_TOY_INTERACTION_ACTIVITY_ANALYSIS"
        SMYX_GROOMING_EFFECTIVENESS_ANALYSIS = "SMYX_GROOMING_EFFECTIVENESS_ANALYSIS"
        SMYX_PET_GROOMING_STRESS_BEHAVIOR_ANALYSIS = "SMYX_PET_GROOMING_STRESS_BEHAVIOR_ANALYSIS"
        SMYX_PET_STOOL_MORPHOLOGY_RECOGNITION_ANALYSIS = "SMYX_PET_STOOL_MORPHOLOGY_RECOGNITION_ANALYSIS"
        SMYX_PET_CARRIER_RESPIRATORY_RATE_ANALYSIS = "SMYX_PET_CARRIER_RESPIRATORY_RATE_ANALYSIS"
        SMYX_PET_EATING_SPEED_SLOW_FEED_ANALYSIS = "SMYX_PET_EATING_SPEED_SLOW_FEED_ANALYSIS"
        SMYX_ADAPTIVE_PET_DRYING_TEMPERATURE_ANALYSIS = "SMYX_ADAPTIVE_PET_DRYING_TEMPERATURE_ANALYSIS"
        SMYX_PET_ORAL_SNAPSHOT_GUM_REDNESS_ANALYSIS = "SMYX_PET_ORAL_SNAPSHOT_GUM_REDNESS_ANALYSIS"
        SMYX_PET_TRAINING_COMMAND_EXECUTION_ANALYSIS = "SMYX_PET_TRAINING_COMMAND_EXECUTION_ANALYSIS"
        SMYX_PET_DRYING_BOX_HEAT_STRESS_ANALYSIS = "SMYX_PET_DRYING_BOX_HEAT_STRESS_ANALYSIS"
        SMYX_PET_CLIMBING_FRAME_HEATMAP_ANALYSIS = "SMYX_PET_CLIMBING_FRAME_HEATMAP_ANALYSIS"
        SMYX_PET_PICA_BEHAVIOR_RECOGNITION_ANALYSIS = "SMYX_PET_PICA_BEHAVIOR_RECOGNITION_ANALYSIS"
        SMYX_UV_SAFETY_MONITOR_ANALYSIS = "SMYX_UV_SAFETY_MONITOR_ANALYSIS"
        SMYX_PICKY_EATER_DETECTION_ANALYSIS = "SMYX_PICKY_EATER_DETECTION_ANALYSIS"
        SMYX_GROOMING_EFFECT_ASSESSMENT_ANALYSIS = "SMYX_GROOMING_EFFECT_ASSESSMENT_ANALYSIS"
        SMYX_CAGE_CLEANLINESS_DETECTION_ANALYSIS = "SMYX_CAGE_CLEANLINESS_DETECTION_ANALYSIS"
        SMYX_PET_TREADMILL_INTENSITY_ANALYSIS = "SMYX_PET_TREADMILL_INTENSITY_ANALYSIS"
        SMYX_RESPIRATORY_RATE_ABNORMAL_DETECT_ANALYSIS = "SMYX_RESPIRATORY_RATE_ABNORMAL_DETECT_ANALYSIS"
        SMYX_EYE_ANOMALY_DETECTION_ANALYSIS = "SMYX_EYE_ANOMALY_DETECTION_ANALYSIS"
        SMYX_VOMITING_REGURGITATION_DETECTION_ANALYSIS = "SMYX_VOMITING_REGURGITATION_DETECTION_ANALYSIS"
        SMYX_SNEEZE_COUGH_DETECTION_ANALYSIS = "SMYX_SNEEZE_COUGH_DETECTION_ANALYSIS"
        SMYX_SOCIAL_INTERACTION_ANALYSIS_ANALYSIS = "SMYX_SOCIAL_INTERACTION_ANALYSIS_ANALYSIS"
        SMYX_SEPARATION_ANXIETY_RELIEF_ANALYSIS = "SMYX_SEPARATION_ANXIETY_RELIEF_ANALYSIS"
        SMYX_EXCITEMENT_CALMING_GUIDE_ANALYSIS = "SMYX_EXCITEMENT_CALMING_GUIDE_ANALYSIS"
        SMYX_PLANT_LEAF_DISEASE_IDENTIFICATION_ANALYSIS = "SMYX_PLANT_LEAF_DISEASE_IDENTIFICATION_ANALYSIS"
        SMYX_PLANT_GROWTH_STAGE_DETECTION_ANALYSIS = "SMYX_PLANT_GROWTH_STAGE_DETECTION_ANALYSIS"
        SMYX_PLANT_WILTING_QUANTIFICATION_ANALYSIS = "SMYX_PLANT_WILTING_QUANTIFICATION_ANALYSIS"
        SMYX_SUCCULENT_SPECIAL_STATE_DETECTION_ANALYSIS = "SMYX_SUCCULENT_SPECIAL_STATE_DETECTION_ANALYSIS"
        SMYX_ORCHID_GROWTH_STATUS_DETECTION_ANALYSIS = "SMYX_ORCHID_GROWTH_STATUS_DETECTION_ANALYSIS"
        SMYX_INDOOR_PLANT_LIGHT_STRESS_DETECT_ANALYSIS = "SMYX_INDOOR_PLANT_LIGHT_STRESS_DETECT_ANALYSIS"
        SMYX_POOP_CLEAN_TRIGGER_ANALYSIS = "SMYX_POOP_CLEAN_TRIGGER_ANALYSIS"
        SMYX_EAR_HEALTH_SNAPSHOT_ANALYSIS = "SMYX_EAR_HEALTH_SNAPSHOT_ANALYSIS"
        SMYX_VACCINATION_REMINDER_ANALYSIS = "SMYX_VACCINATION_REMINDER_ANALYSIS"
        SMYX_RACE_FOUL_DETECTION_ANALYSIS = "SMYX_RACE_FOUL_DETECTION_ANALYSIS"
        SMYX_VOCAL_EMOTION_CLASSIFICATION_ANALYSIS = "SMYX_VOCAL_EMOTION_CLASSIFICATION_ANALYSIS"
        SMYX_GAIT_ANALYSIS_LAMENESS_ANALYSIS = "SMYX_GAIT_ANALYSIS_LAMENESS_ANALYSIS"
        SMYX_LITTER_BOX_USAGE_MONITOR_ANALYSIS = "SMYX_LITTER_BOX_USAGE_MONITOR_ANALYSIS"
        SMYX_SLEEP_QUALITY_ANALYSIS_ANALYSIS = "SMYX_SLEEP_QUALITY_ANALYSIS_ANALYSIS"
        BIRD_RECOGNITION_ANALYSIS = "BIRD_RECOGNITION"
        FRAUD_CALL_IDENTIFICATION = "FRAUD_CALL_IDENTIFICATION"
        PLANT_SPECIES_RECOGNITION = "PLANT_SPECIES_RECOGNITION"
        PLANT_GROWTH_STAGE_RECOGNITION = "PLANT_GROWTH_STAGE_RECOGNITION"
        PLANT_DISEASE_RECOGNITION = "PLANT_DISEASE_RECOGNITION"
        PLANT_NUTRITION_DIAGNOSIS = "PLANT_NUTRITION_DIAGNOSIS"
        SMYX_PLANT_NUTRIENT_DIAGNOSIS_ANALYSIS = "SMYX_PLANT_NUTRIENT_DIAGNOSIS_ANALYSIS"
        SMYX_AQUARIUM_PLANT_HEALTH_MONITOR_ANALYSIS = "SMYX_AQUARIUM_PLANT_HEALTH_MONITOR_ANALYSIS"
        SMYX_ROOT_HEALTH_TRANSPARENT_POT_ANALYSIS = "SMYX_ROOT_HEALTH_TRANSPARENT_POT_ANALYSIS"
        SMYX_CHINESE_HERBAL_INGREDIENT_TREND_ANALYSIS = "SMYX_CHINESE_HERBAL_INGREDIENT_TREND_ANALYSIS"
        SMYX_FLOWERING_FRUIT_SET_RATE_ANALYSIS_ANALYSIS = "SMYX_FLOWERING_FRUIT_SET_RATE_ANALYSIS_ANALYSIS"
        SMYX_ROSE_PEST_DISEASE_DETECTION_ANALYSIS = "SMYX_ROSE_PEST_DISEASE_DETECTION_ANALYSIS"
        SMYX_LAWN_HEALTH_ASSESSMENT_ANALYSIS = "SMYX_LAWN_HEALTH_ASSESSMENT_ANALYSIS"
        SMYX_UAV_FARM_HEALTH_INDEX_MAP_ANALYSIS = "SMYX_UAV_FARM_HEALTH_INDEX_MAP_ANALYSIS"
        SMYX_TRANSPIRATION_RATE_ESTIMATION_ANALYSIS = "SMYX_TRANSPIRATION_RATE_ESTIMATION_ANALYSIS"
        SMYX_CUTTING_ROOTING_STATUS_DETECTION_ANALYSIS = "SMYX_CUTTING_ROOTING_STATUS_DETECTION_ANALYSIS"
        SMYX_FLOWERING_DATE_PREDICTION_ANALYSIS = "SMYX_FLOWERING_DATE_PREDICTION_ANALYSIS"
        SMYX_FRUIT_RIPENESS_GRADING_ANALYSIS = "SMYX_FRUIT_RIPENESS_GRADING_ANALYSIS"
        SMYX_LEAF_AGING_FALL_PREDICTION_ANALYSIS = "SMYX_LEAF_AGING_FALL_PREDICTION_ANALYSIS"
        SMYX_HYDROPONIC_NUTRIENT_ASSESSMENT_ANALYSIS = "SMYX_HYDROPONIC_NUTRIENT_ASSESSMENT_ANALYSIS"
        SMYX_SEED_GERMINATION_RATE_PREDICTION_ANALYSIS = "SMYX_SEED_GERMINATION_RATE_PREDICTION_ANALYSIS"
        SMYX_PLANT_NIGHT_RESPIRATION_RATE_ANALYSIS = "SMYX_PLANT_NIGHT_RESPIRATION_RATE_ANALYSIS"
        SMYX_GREENHOUSE_CLIMATE_PLANT_FEEDBACK_ANALYSIS = "SMYX_GREENHOUSE_CLIMATE_PLANT_FEEDBACK_ANALYSIS"
        SMYX_LEAF_CURLING_MARGIN_SCORCH_DIAGNOSIS_ANALYSIS = "SMYX_LEAF_CURLING_MARGIN_SCORCH_DIAGNOSIS_ANALYSIS"
        SMYX_PLANT_VITALITY_INDEX_ANALYSIS = "SMYX_PLANT_VITALITY_INDEX_ANALYSIS"
        SMYX_ELDERLY_NIGHT_BED_EXIT_WANDERING_ANALYSIS = "SMYX_ELDERLY_NIGHT_BED_EXIT_WANDERING_ANALYSIS"
        SMYX_ELDERLY_LONG_TERM_IMMOBILITY_ANALYSIS = "SMYX_ELDERLY_LONG_TERM_IMMOBILITY_ANALYSIS"
        SMYX_CHILD_WINDOW_CLIMBING_DETECTION_ANALYSIS = "SMYX_CHILD_WINDOW_CLIMBING_DETECTION_ANALYSIS"
        SMYX_CHILD_DANGEROUS_OBJECT_DETECTION_ANALYSIS = "SMYX_CHILD_DANGEROUS_OBJECT_DETECTION_ANALYSIS"
        SMYX_CHILD_EMOTION_RECOGNITION_ANALYSIS = "SMYX_CHILD_EMOTION_RECOGNITION_ANALYSIS"
        SMYX_INFANT_SUFFOCATION_RISK_DETECTION_ANALYSIS = "SMYX_INFANT_SUFFOCATION_RISK_DETECTION_ANALYSIS"
        SMYX_INFANT_CRY_CAUSE_CLASSIFICATION_ANALYSIS = "SMYX_INFANT_CRY_CAUSE_CLASSIFICATION_ANALYSIS"
        SMYX_INFANT_BLANKET_KICK_DETECTION_ANALYSIS = "SMYX_INFANT_BLANKET_KICK_DETECTION_ANALYSIS"
        SMYX_ELDERLY_TOILET_TIME_ABNORMAL_ANALYSIS = "SMYX_ELDERLY_TOILET_TIME_ABNORMAL_ANALYSIS"
        SMYX_KITCHEN_STOVE_LEFT_ON_DETECTION_ANALYSIS = "SMYX_KITCHEN_STOVE_LEFT_ON_DETECTION_ANALYSIS"
        SMYX_ELDERLY_MEDICATION_COMPLIANCE_ANALYSIS = "SMYX_ELDERLY_MEDICATION_COMPLIANCE_ANALYSIS"
        SMYX_ELDERLY_FACIAL_ASYMMETRY_ANALYSIS = "SMYX_ELDERLY_FACIAL_ASYMMETRY_ANALYSIS"
        SMYX_ELDERLY_HAND_TREMOR_DETECTION_ANALYSIS = "SMYX_ELDERLY_HAND_TREMOR_DETECTION_ANALYSIS"
        SMYX_ELDERLY_GAIT_INSTABILITY_DETECTION_ANALYSIS = "SMYX_ELDERLY_GAIT_INSTABILITY_DETECTION_ANALYSIS"
        SMYX_ELDERLY_TACHYPNEA_DETECTION_ANALYSIS = "SMYX_ELDERLY_TACHYPNEA_DETECTION_ANALYSIS"
        SMYX_CHILD_FOCUS_ANALYSIS_ANALYSIS = "SMYX_CHILD_FOCUS_ANALYSIS_ANALYSIS"
        SMYX_CHILD_POOR_POSTURE_DETECTION_ANALYSIS = "SMYX_CHILD_POOR_POSTURE_DETECTION_ANALYSIS"
        SMYX_CHILD_DROWSINESS_FATIGUE_DETECTION_ANALYSIS = "SMYX_CHILD_DROWSINESS_FATIGUE_DETECTION_ANALYSIS"
        SMYX_CHILD_SOCIAL_INTERACTION_ANALYSIS_ANALYSIS = "SMYX_CHILD_SOCIAL_INTERACTION_ANALYSIS_ANALYSIS"
        SMYX_CHILD_NIGHTMARE_ROLLOVER_DETECTION_ANALYSIS = "SMYX_CHILD_NIGHTMARE_ROLLOVER_DETECTION_ANALYSIS"
        SMYX_OFFICE_WORKER_POSTURE_WARNING_ANALYSIS = "SMYX_OFFICE_WORKER_POSTURE_WARNING_ANALYSIS"
        SMYX_ADULT_FACIAL_FATIGUE_STRESS_INDEX_ANALYSIS = "SMYX_ADULT_FACIAL_FATIGUE_STRESS_INDEX_ANALYSIS"
        SMYX_FACIAL_HRV_TREND_MONITORING_ANALYSIS = "SMYX_FACIAL_HRV_TREND_MONITORING_ANALYSIS"
        SMYX_DRIVER_BLINK_FATIGUE_DETECTION_ANALYSIS = "SMYX_DRIVER_BLINK_FATIGUE_DETECTION_ANALYSIS"
        SMYX_DRIVER_HEAD_POSE_ABNORMALITY_ANALYSIS = "SMYX_DRIVER_HEAD_POSE_ABNORMALITY_ANALYSIS"
        SMYX_DRIVER_FLUSHING_SWEAT_DETECTION_ANALYSIS = "SMYX_DRIVER_FLUSHING_SWEAT_DETECTION_ANALYSIS"
        SMYX_LIVING_ALONE_RHYTHM_ANOMALY_ANALYSIS = "SMYX_LIVING_ALONE_RHYTHM_ANOMALY_ANALYSIS"
        SMYX_THERMAL_FEVER_SCREENING_ANALYSIS = "SMYX_THERMAL_FEVER_SCREENING_ANALYSIS"
        SMYX_NEONATAL_JAUNDICE_SCREENING_ANALYSIS = "SMYX_NEONATAL_JAUNDICE_SCREENING_ANALYSIS"
        SMYX_INFANT_STOOL_COLOR_ABNORMALITY_ANALYSIS = "SMYX_INFANT_STOOL_COLOR_ABNORMALITY_ANALYSIS"
        SMYX_ELDERLY_DRINKING_FREQUENCY_ANALYSIS = "SMYX_ELDERLY_DRINKING_FREQUENCY_ANALYSIS"
        SMYX_ELDERLY_TV_SEDENTARY_REMINDER_ANALYSIS = "SMYX_ELDERLY_TV_SEDENTARY_REMINDER_ANALYSIS"
        SMYX_CHILD_OUTDOOR_ACTIVITY_MONITOR_ANALYSIS = "SMYX_CHILD_OUTDOOR_ACTIVITY_MONITOR_ANALYSIS"
        SMYX_PREGNANT_POSTURE_FATIGUE_DETECTION_ANALYSIS = "SMYX_PREGNANT_POSTURE_FATIGUE_DETECTION_ANALYSIS"
        SMYX_AUTISM_STEREOTYPED_BEHAVIOR_DETECT_ANALYSIS = "SMYX_AUTISM_STEREOTYPED_BEHAVIOR_DETECT_ANALYSIS"
        SMYX_ELDERLY_LONELINESS_DEPRESSION_ANALYSIS = "SMYX_ELDERLY_LONELINESS_DEPRESSION_ANALYSIS"
        SMYX_CHILD_SEPARATION_ANXIETY_DETECTION_ANALYSIS = "SMYX_CHILD_SEPARATION_ANXIETY_DETECTION_ANALYSIS"
        SMYX_WORKPLACE_STRESS_HEATMAP_ANALYSIS = "SMYX_WORKPLACE_STRESS_HEATMAP_ANALYSIS"
        SMYX_CLASSROOM_ENGAGEMENT_ANALYSIS_ANALYSIS = "SMYX_CLASSROOM_ENGAGEMENT_ANALYSIS_ANALYSIS"
        SMYX_FAMILY_CONFLICT_INTENSITY_DETECT_ANALYSIS = "SMYX_FAMILY_CONFLICT_INTENSITY_DETECT_ANALYSIS"
        SMYX_DEPRESSION_BEHAVIORAL_MARKERS_ANALYSIS = "SMYX_DEPRESSION_BEHAVIORAL_MARKERS_ANALYSIS"
        SMYX_ANXIETY_BEHAVIOR_RECOGNITION_ANALYSIS = "SMYX_ANXIETY_BEHAVIOR_RECOGNITION_ANALYSIS"
        SMYX_PUBLIC_PLACE_GROUP_EMOTION_INDEX_ANALYSIS = "SMYX_PUBLIC_PLACE_GROUP_EMOTION_INDEX_ANALYSIS"
        SMYX_TEEN_SCREEN_ADDICTION_DETECTION_ANALYSIS = "SMYX_TEEN_SCREEN_ADDICTION_DETECTION_ANALYSIS"
        SMYX_ELDERLY_NIGHTMARE_STARTLE_DETECT_ANALYSIS = "SMYX_ELDERLY_NIGHTMARE_STARTLE_DETECT_ANALYSIS"
        SMYX_EMPLOYEE_EMOTION_FLUCTUATION_HR_ANALYSIS = "SMYX_EMPLOYEE_EMOTION_FLUCTUATION_HR_ANALYSIS"
        SMYX_TRAUMA_STRESS_BEHAVIOR_DETECTION_ANALYSIS = "SMYX_TRAUMA_STRESS_BEHAVIOR_DETECTION_ANALYSIS"
        SMYX_ELDERLY_LONELINESS_COMFORT_ANALYSIS = "SMYX_ELDERLY_LONELINESS_COMFORT_ANALYSIS"
        SMYX_CHILD_HAPPY_MOMENT_CAPTURE_ANALYSIS = "SMYX_CHILD_HAPPY_MOMENT_CAPTURE_ANALYSIS"
        SMYX_FAMILY_CONFLICT_AFTERCARE_SUGGEST_ANALYSIS = "SMYX_FAMILY_CONFLICT_AFTERCARE_SUGGEST_ANALYSIS"
        SMYX_CHILD_BEDTIME_SOOTHING_ANALYSIS = "SMYX_CHILD_BEDTIME_SOOTHING_ANALYSIS"
        SMYX_COMMUTER_FATIGUE_CARE_ANALYSIS = "SMYX_COMMUTER_FATIGUE_CARE_ANALYSIS"
        SMYX_PREGNANCY_EMOTION_SOOTHING_ANALYSIS = "SMYX_PREGNANCY_EMOTION_SOOTHING_ANALYSIS"
        SMYX_DEMENTIA_CONFUSION_ORIENTATION_ANALYSIS = "SMYX_DEMENTIA_CONFUSION_ORIENTATION_ANALYSIS"
        SMYX_REHAB_MOTIVATION_ENCOURAGEMENT_ANALYSIS = "SMYX_REHAB_MOTIVATION_ENCOURAGEMENT_ANALYSIS"
        SMYX_FISH_ABNORMAL_SWIMMING_DETECTION_ANALYSIS = "SMYX_FISH_ABNORMAL_SWIMMING_DETECTION_ANALYSIS"
        SMYX_FISH_SURFACE_SYMPTOM_DETECTION_ANALYSIS = "SMYX_FISH_SURFACE_SYMPTOM_DETECTION_ANALYSIS"
        SMYX_FISH_RESPIRATORY_RATE_MONITOR_ANALYSIS = "SMYX_FISH_RESPIRATORY_RATE_MONITOR_ANALYSIS"
        SMYX_FISH_FEEDING_ACTIVITY_ANALYSIS = "SMYX_FISH_FEEDING_ACTIVITY_ANALYSIS"
        SMYX_FISH_ISOLATION_DETECTION_ANALYSIS = "SMYX_FISH_ISOLATION_DETECTION_ANALYSIS"
        SMYX_FISH_EGG_INCUBATION_STAGE_ANALYSIS = "SMYX_FISH_EGG_INCUBATION_STAGE_ANALYSIS"
        SMYX_FISH_FRY_GROWTH_MEASUREMENT_ANALYSIS = "SMYX_FISH_FRY_GROWTH_MEASUREMENT_ANALYSIS"
        SMYX_FISH_GASPING_AMMONIA_WARNING_ANALYSIS = "SMYX_FISH_GASPING_AMMONIA_WARNING_ANALYSIS"
        SMYX_FISH_COLOR_BRIGHTNESS_ASSESSMENT_ANALYSIS = "SMYX_FISH_COLOR_BRIGHTNESS_ASSESSMENT_ANALYSIS"
        SMYX_FISH_FLASHING_SCRAPING_DETECTION_ANALYSIS = "SMYX_FISH_FLASHING_SCRAPING_DETECTION_ANALYSIS"
        PLANT_WILTING_MONITORING = "PLANT_WILTING_MONITORING"