Skip to content

Renovar la relación entre cursos/equivalencias/bloques #385

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 36 commits into from
Dec 26, 2023
Merged

Conversation

kovaxis
Copy link
Contributor

@kovaxis kovaxis commented Nov 22, 2023

Lo siento por la PR gigante xd juro que es la última así

Contexto

Hasta ahora hemos guardado los cursos de un plan "pelados", es decir, sin un bloque asociado. La razón detrás de esto es que para un cierto plan siempre es posible encontrar la asignación "óptima" de bloques, que siempre cumpla con el curriculum si se puede.

Sin embargo, esto es un problema para la experiencia de usuario, porque implica que Planner decide por sí mismo qué cursos van con qué bloques, y esto puede ir en contra de lo que realmente quiere el usuario.

También, antes asociábamos algunos cursos a "equivalencias", por ejemplo si seleccionabas un OFG el curso "recordaba" que era un OFG, y evitaba recolorearse como algo más (un biológico, por ejemplo).

La idea es mezclar los dos conceptos. Ahora todos los cursos "recuerdan" a que bloque pertenecen, no solo los cursos que pertenecen a equivalencias como los OFG. Esto significa que los conceptos de "bloque" y "equivalencia" se volvieron muy similares. En particular, incluso los bloques de 1 ramo como "Cálculo 1" tienen su propia equivalencia (que solo contiene a MAT1610). La gracia de hacer esto es que un ramo puede recordar si está asignado al major o al minor, por ejemplo.

Incluso los ramos pasados tienen una equivalencia asociada. Esta equivalencia se decide al momento de generar el plan, o al momento de actualizar un plan desactualizado.

El solver ahora también tiene soporte para "recolorear" ramos si esto mejora el desempeño del plan (ie. si permite ahorrarse cursos). Agregué un nuevo warning que indica cuando es posible recolorear para ahorrar ramos.

¿Qué se implementa?

¿Qué falta?

Creo que es un poco difícil revisar todo el código de esta PR, pero no sería malo pasarle un segundo par de ojos por encima. Más importante es probar que todo funcione bien. Probé las migraciones desde producción, y todo parece estar bien, pero siempre se pasan cosas.

Tras probar esto un poco, estaríamos en un estado para deployear dev a mallastest, y así "liberaríamos las mallas que faltan".

Después de eso, tocaría trabajar en #352 (botón para cambiar el bloque asociado a un ramo) y #360 (botón para cambiar un ramo por otro) en el frontend, que son opciones del context menu que harían trabajar con Planner 1000% más fácil y claro.

También con estos cambios cobra sentido #319 (asignar una equivalencia a los ramos agregados con el +), y se vuelve atractivo implementar #318 (mostrar el bloque asociado a un ramo).

Lamentablemente para upgradear pydantic hay que upgreadear FastAPI, y
las nuevas versiones de FastAPI usan OpenAPI 3.1, que
openapi-typescript-generator no soporta.
Eventualmente podriamos cambiar de generador o esperar a que se
implemente el soporte.
@kovaxis kovaxis requested a review from fagiannoni November 22, 2023 03:32
@Diegothx Diegothx requested review from Diegothx and removed request for Diegothx December 25, 2023 05:49
Copy link
Contributor

@Diegothx Diegothx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si es sumamente necesario revisar el código en detalle entonces ojalá que @fagiannoni de su approve de todos modos, ya que se maneja más que yo con el código del backend. Sin embargo, por mi lado he estado testeando los cambios y todo se ve OK, además, viendo que ya existen múltiples PR construidas sobre esta misma (tanto de @kovaxis como una mía) asumo que ya habríamos encontrado errores de esta PR si existieran

@kovaxis kovaxis merged commit c40df8b into dev Dec 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants