File size: 2,439 Bytes
2eb6f71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
Context Member Model for EmotionMirror application.

This module defines the ContextMember class that represents
a member (person) in a group analysis context.
"""
from typing import Dict, Any, Optional
from datetime import datetime

class ContextMember:
    """
    Represents a member (person) in a group analysis context.
    """
    
    def __init__(
        self, 
        member_id: str,
        name: Optional[str] = None,
        face_data: Optional[Dict[str, Any]] = None,
        emotion_data: Optional[Dict[str, float]] = None,
        metadata: Optional[Dict[str, Any]] = None
    ):
        """
        Initialize a context member.
        
        Args:
            member_id: Unique identifier for the member
            name: Name of the person if known
            face_data: Face detection data including coordinates, etc.
            emotion_data: Emotion analysis results
            metadata: Additional member metadata
        """
        self.member_id = member_id
        self.name = name or "Unknown"
        self.face_data = face_data or {}
        self.emotion_data = emotion_data or {}
        self.metadata = metadata or {}
        self.created_at = datetime.now()
        
    def to_dict(self) -> Dict[str, Any]:
        """
        Convert the context member to a dictionary for storage or serialization.
        
        Returns:
            Dictionary representation of the context member
        """
        return {
            "member_id": self.member_id,
            "name": self.name,
            "face_data": self.face_data,
            "emotion_data": self.emotion_data,
            "metadata": self.metadata,
            "created_at": self.created_at.isoformat()
        }
    
    @classmethod
    def from_dict(cls, data: Dict[str, Any]) -> 'ContextMember':
        """
        Create a context member from a dictionary.
        
        Args:
            data: Dictionary with context member data
            
        Returns:
            A ContextMember instance
        """
        instance = cls(
            member_id=data.get("member_id", ""),
            name=data.get("name", "Unknown"),
            face_data=data.get("face_data", {}),
            emotion_data=data.get("emotion_data", {}),
            metadata=data.get("metadata", {})
        )
        if "created_at" in data:
            instance.created_at = datetime.fromisoformat(data["created_at"])
        return instance