GMARTINEZMILLA commited on
Commit
360b685
·
verified ·
1 Parent(s): 1da4a00

Update app.py

Browse files

Updated the positions to obtain the desired UX

Files changed (1) hide show
  1. app.py +10 -83
app.py CHANGED
@@ -972,17 +972,13 @@ elif page == "💡 Recomendación de Artículos":
972
  else:
973
  st.write("✓")
974
 
975
- # Preview section
976
- st.write("### Previsualiza la cesta completa antes de agregarla:")
977
- for code in st.session_state['new_basket']:
978
- article_desc = productos[productos['ARTICULO'] == code]['DESCRIPCION'].values[0]
979
- st.write(f"- {article_desc} (Código: {code})")
980
 
 
981
  col1, col2 = st.columns([4, 1])
982
-
983
- # Input manual del código de producto con el botón en la misma columna
984
  with col1:
985
- manual_code = st.text_input("Añadir código manualmente:", value="", key="manual_code")
986
 
987
  # Botón para añadir el código manualmente ingresado, junto al input
988
  with col2:
@@ -994,6 +990,12 @@ elif page == "💡 Recomendación de Artículos":
994
  st.warning(f"⚠️ El código {manual_code} ya está en la cesta.")
995
  else:
996
  st.warning("⚠️ No se ha introducido un código válido.")
 
 
 
 
 
 
997
 
998
  # Botón para añadir cesta al histórico
999
  if st.button("📦 Añadir cesta al histórico"):
@@ -1009,78 +1011,3 @@ elif page == "💡 Recomendación de Artículos":
1009
  elif st.session_state['recommendations_df'] is not None:
1010
  st.warning("⚠️ No se encontraron recomendaciones para la cesta proporcionada.")
1011
 
1012
-
1013
- # elif page == "💡 Recomendación de Artículos":
1014
- # # Carga de CSV necesarios cestas y productos
1015
- # cestas = pd.read_csv('cestas.csv')
1016
- # productos = pd.read_csv('productos.csv')
1017
- # # Estilo principal de la página
1018
- # st.markdown(
1019
- # "<h1 style='text-align: center;'>Recomendación de Artículos</h1>",
1020
- # unsafe_allow_html=True
1021
- # )
1022
- # st.markdown("""
1023
- # <p style='text-align: center; color: #5D6D7E;'>Obtén recomendaciones personalizadas para tus clientes basadas en su cesta de compra.</p>
1024
- # """, unsafe_allow_html=True)
1025
- # st.write("### Selecciona los artículos y asigna las cantidades para la cesta:")
1026
- # # Añadir separador para mejorar la segmentación visual
1027
- # st.divider()
1028
- # # Mostrar lista de artículos disponibles (ahora se usa el código asociado a cada descripción)
1029
- # available_articles = productos[['ARTICULO', 'DESCRIPCION']].drop_duplicates()
1030
-
1031
- # # Crear diccionario para asignar las descripciones a los códigos
1032
- # article_dict = dict(zip(available_articles['DESCRIPCION'], available_articles['ARTICULO']))
1033
- # # Permitir seleccionar las descripciones, pero trabajar con los códigos
1034
- # selected_descriptions = st.multiselect("Select Articles", available_articles['DESCRIPCION'].unique())
1035
- # quantities = {}
1036
-
1037
- # if selected_descriptions:
1038
- # st.write("### Selecciona los artículos y las unidades:")
1039
- # for description in selected_descriptions:
1040
- # code = article_dict[description] # Usar el código del artículo
1041
- # col1, col2 = st.columns([1, 3]) # Ajustar proporciones para que las cantidades vayan a la izquierda
1042
- # with col1:
1043
- # # Caja de número para la cantidad, asociada al código
1044
- # quantities[code] = st.number_input(f"Quantity {code}", min_value=0, step=1, key=code)
1045
- # with col2:
1046
- # # Mostrar la descripción del artículo
1047
- # st.write(description)
1048
-
1049
- # # Añadir un botón estilizado "Calcular" con icono
1050
- # if st.button("🛒 Obtener Recomendaciones"):
1051
- # # Crear una lista de artículos basada en los códigos y cantidades
1052
- # new_basket = []
1053
- # for code in quantities:
1054
- # quantity = quantities[code]
1055
- # if quantity > 0:
1056
- # new_basket.extend([code] * quantity) # Añadir el código tantas veces como 'quantity'
1057
- # if new_basket:
1058
- # # Procesar la lista para recomendar
1059
- # recommendations_df = recomienda_tf(new_basket, cestas, productos)
1060
-
1061
- # if not recommendations_df.empty:
1062
- # st.success("### Según tu cesta, te recomendamos que consideres añadir uno de estos artículos:")
1063
- # st.dataframe(recommendations_df, height=300, width=800) # Ajustar el tamaño del DataFrame
1064
- # else:
1065
- # st.warning("⚠️ No recommendations found for the provided basket.")
1066
- # else:
1067
- # st.warning("⚠️ Please select at least one article and set its quantity.")
1068
-
1069
- # # Gráfico adicional: Comparar las ventas predichas y reales para los principales fabricantes
1070
- # st.markdown("### Predicted vs Actual Sales for Top Manufacturers")
1071
- # top_manufacturers = results.groupby('marca_id_encoded').agg({'ventas_reales': 'sum', 'ventas_predichas': 'sum'}).sort_values(by='ventas_reales', ascending=False).head(10)
1072
-
1073
- # fig_comparison = go.Figure()
1074
- # fig_comparison.add_trace(go.Bar(x=top_manufacturers.index, y=top_manufacturers['ventas_reales'], name="Actual Sales", marker_color='blue'))
1075
- # fig_comparison.add_trace(go.Bar(x=top_manufacturers.index, y=top_manufacturers['ventas_predichas'], name="Predicted Sales", marker_color='orange'))
1076
-
1077
- # fig_comparison.update_layout(
1078
- # title="Actual vs Predicted Sales by Top Manufacturers",
1079
- # xaxis_title="Manufacturer",
1080
- # yaxis_title="Sales (€)",
1081
- # barmode='group',
1082
- # height=400,
1083
- # hovermode="x unified"
1084
- # )
1085
-
1086
- # st.plotly_chart(fig_comparison, use_container_width=True)
 
972
  else:
973
  st.write("✓")
974
 
 
 
 
 
 
975
 
976
+ # Crear columnas para el input manual y el botón en una fila más compacta
977
  col1, col2 = st.columns([4, 1])
978
+
979
+ # Input manual del código de producto con el botón en la misma fila
980
  with col1:
981
+ manual_code = st.text_input("Añadir código manualmente:", value="", key="manual_code", max_chars=15)
982
 
983
  # Botón para añadir el código manualmente ingresado, junto al input
984
  with col2:
 
990
  st.warning(f"⚠️ El código {manual_code} ya está en la cesta.")
991
  else:
992
  st.warning("⚠️ No se ha introducido un código válido.")
993
+
994
+ # Preview section
995
+ st.write("### Previsualiza la cesta completa antes de agregarla:")
996
+ for code in st.session_state['new_basket']:
997
+ article_desc = productos[productos['ARTICULO'] == code]['DESCRIPCION'].values[0]
998
+ st.write(f"- {article_desc} (Código: {code})")
999
 
1000
  # Botón para añadir cesta al histórico
1001
  if st.button("📦 Añadir cesta al histórico"):
 
1011
  elif st.session_state['recommendations_df'] is not None:
1012
  st.warning("⚠️ No se encontraron recomendaciones para la cesta proporcionada.")
1013