diff --git a/ackages/frontend/src/components/CelebrityProfile.jsx b/ackages/frontend/src/components/CelebrityProfile.jsx
index a6a96e6..be8b67f 100644
--- a/ackages/frontend/src/components/CelebrityProfile.jsx
+++ b/ackages/frontend/src/components/CelebrityProfile.jsx
@@ -35,6 +35,12 @@ function CelebrityProfile() {
const handleFieldSave = async (fieldName, newValue) => {
// Converte stringa vuota a null per il backend
const valueToSend = newValue === '' ? null : newValue;
+
+ // Converti la stringa 'true'/'false' in un booleano per il campo specifico
+ if (fieldName === 'boobs_are_natural') {
+ valueToSend = newValue === 'true';
+ }
+
const payload = { [fieldName]: valueToSend };
try {
diff --git a/gemini-schema.json b/gemini-schema.json
new file mode 100644
index 0000000..416c5a4
--- /dev/null
+++ b/gemini-schema.json
@@ -0,0 +1,249 @@
+{
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Il nome principale della celebrità.",
+ "minLength": 1
+ },
+ "gender": {
+ "type": "string",
+ "enum": [
+ "male",
+ "female",
+ "other"
+ ],
+ "description": "Il genere della celebrità."
+ },
+ "birth_date": {
+ "type": "string",
+ "format": "date",
+ "description": "La data di nascita in formato ISO 8601 (YYYY-MM-DD)."
+ },
+ "birth_place": {
+ "type": "string"
+ },
+ "nationality": {
+ "type": "string"
+ },
+ "ethnicity": {
+ "type": "string"
+ },
+ "sexuality": {
+ "type": "string"
+ },
+ "physical_details": {
+ "type": "object",
+ "properties": {
+ "hair_color": {
+ "type": "string"
+ },
+ "eye_color": {
+ "type": "string"
+ },
+ "height_cm": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "weight_kg": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "body_type": {
+ "type": "string"
+ },
+ "measurements_cm": {
+ "type": "object",
+ "properties": {
+ "bust": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "waist": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "hips": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "chest_circumference": {
+ "type": "integer",
+ "minimum": 1
+ }
+ },
+ "propertyOrdering": [
+ "bust",
+ "waist",
+ "hips",
+ "chest_circumference"
+ ],
+ "description": "Misure del corpo in centimetri."
+ },
+ "bra_size": {
+ "type": "object",
+ "properties": {
+ "band": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "cup": {
+ "type": "string"
+ },
+ "system": {
+ "type": "string",
+ "enum": [
+ "US",
+ "UK",
+ "EU",
+ "FR",
+ "AU",
+ "IT",
+ "JP"
+ ]
+ }
+ },
+ "propertyOrdering": [
+ "band",
+ "cup",
+ "system"
+ ],
+ "required": [
+ "band",
+ "cup",
+ "system"
+ ],
+ "description": "La taglia attuale del reggiseno."
+ },
+ "boobs_are_natural": {
+ "type": "boolean"
+ },
+ "shoe_size": {
+ "type": "object",
+ "properties": {
+ "size": {
+ "type": "number"
+ },
+ "system": {
+ "type": "string",
+ "enum": [
+ "EU",
+ "US",
+ "UK"
+ ]
+ }
+ },
+ "propertyOrdering": [
+ "size",
+ "system"
+ ],
+ "required": [
+ "size",
+ "system"
+ ]
+ }
+ },
+ "propertyOrdering": [
+ "hair_color",
+ "eye_color",
+ "height_cm",
+ "weight_kg",
+ "body_type",
+ "measurements_cm",
+ "bra_size",
+ "boobs_are_natural",
+ "shoe_size"
+ ],
+ "description": "Dettagli fisici e misure della celebrità."
+ },
+ "biography": {
+ "type": "string"
+ },
+ "official_website": {
+ "type": "string",
+ "format": "uri"
+ },
+ "aliases": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Elenco di nomi alternativi o alias."
+ },
+ "professions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Elenco delle professioni della celebrità."
+ },
+ "activity_periods": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "start_year": {
+ "type": "integer",
+ "minimum": 1900,
+ "maximum": 2100
+ },
+ "end_year": {
+ "type": "integer",
+ "minimum": 1900,
+ "maximum": 2100
+ },
+ "notes": {
+ "type": "string"
+ }
+ },
+ "propertyOrdering": [
+ "start_year",
+ "end_year",
+ "notes"
+ ],
+ "required": [
+ "start_year"
+ ]
+ },
+ "description": "Periodi di attività noti della carriera."
+ },
+ "tattoos": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "body_location": {
+ "type": "string"
+ }
+ },
+ "propertyOrdering": [
+ "description",
+ "body_location"
+ ],
+ "required": [
+ "description"
+ ]
+ },
+ "description": "Elenco dei tatuaggi conosciuti."
+ }
+ },
+ "propertyOrdering": [
+ "name",
+ "gender",
+ "birth_date",
+ "birth_place",
+ "nationality",
+ "ethnicity",
+ "sexuality",
+ "physical_details",
+ "biography",
+ "official_website",
+ "aliases",
+ "professions",
+ "activity_periods",
+ "tattoos"
+ ]
+}
\ No newline at end of file
diff --git a/packages/frontend/src/components/CelebrityCreate.jsx b/packages/frontend/src/components/CelebrityCreate.jsx
index 59febbe..9d0519a 100644
--- a/packages/frontend/src/components/CelebrityCreate.jsx
+++ b/packages/frontend/src/components/CelebrityCreate.jsx
@@ -8,9 +8,11 @@ const initialFormState = {
birth_date: '',
height_cm: '',
weight_kg: '',
+ body_type: '',
bust_cm: '',
waist_cm: '',
hips_cm: '',
+ chest_circumference_cm: '',
bra_band_size: '',
bra_cup_size: '',
bra_size_system: 'US',
@@ -22,6 +24,9 @@ const initialFormState = {
hair_color: '',
eye_color: '',
biography: '',
+ shoe_size: '',
+ shoe_size_system: 'EU',
+ official_website: '',
};
function CelebrityCreate() {
@@ -84,6 +89,10 @@ function CelebrityCreate() {
+