File size: 2,947 Bytes
0762fba
 
 
a688aff
0762fba
 
 
 
a688aff
0762fba
 
a688aff
0762fba
 
 
 
 
a688aff
0762fba
 
a688aff
0762fba
 
 
 
a688aff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5f7dc7e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
from pydantic import BaseModel
from typing import List, Optional, Dict, Any


class CompileRequest(BaseModel):
    company_id: str
    force_recompile: bool = False


class AgentHandleRequest(BaseModel):
    """Legacy schema β€” kept for frontend compatibility."""

    company_id: str
    scenario: str
    context: Optional[Dict[str, Any]] = None
    with_brain: bool = True


class AgentQueryRequest(BaseModel):
    """New canonical schema for agent queries."""

    company_id: str
    scenario_text: str
    json_context: Optional[Dict[str, Any]] = None
    with_brain: bool = True


class DiffRequest(BaseModel):
    version_v1: str
    version_v2: str
    company_id: str


class DiffItem(BaseModel):
    id: str
    name: str = ""


class DiffModified(BaseModel):
    id: str
    field: str
    old_value: Any = None
    new_value: Any = None


class DiffConfidenceShift(BaseModel):
    id: str
    old_confidence: float = 0.0
    new_confidence: float = 0.0
    reason: str = ""


class DiffResponse(BaseModel):
    v1_version: str
    v2_version: str
    added: List[DiffItem] = []
    deleted: List[DiffItem] = []
    modified: List[DiffModified] = []
    confidence_shifts: List[DiffConfidenceShift] = []


# ─────────────────────────────────────────────
# Phase 3 β€” Multi-Company & Onboarding
# ─────────────────────────────────────────────


class OnboardingAnalysisRequest(BaseModel):
    company_id: str


class OnboardingSuggestion(BaseModel):
    company_id: str
    suggested_industry: str
    suggested_departments: List[str]
    suggested_size: str
    rationale: str


class CompanyUpdate(BaseModel):
    name: Optional[str] = None
    industry: Optional[str] = None
    company_size: Optional[str] = None
    description: Optional[str] = None


# ─────────────────────────────────────────────
# Phase 6 β€” Auth
# ─────────────────────────────────────────────


class AuthRegisterRequest(BaseModel):
    email: str
    password: str


class AuthLoginRequest(BaseModel):
    email: str
    password: str


class AuthResponse(BaseModel):
    access_token: str
    user: Dict[str, Any]


# ─────────────────────────────────────────────
# Phase 4 β€” Skills Marketplace
# ─────────────────────────────────────────────


class SkillsImportRequest(BaseModel):
    company_id: str
    version: str = "imported"
    skills: List[Dict[str, Any]]
    source_label: str = "marketplace_import"