owned this note
owned this note
Published
Linked with GitHub
# Products
## Tipos de atributo (V.O.) (tabla attribute_types)
Enumeración de tipos de atributo disponibles,
puede ser por ejemplo de tipo string, color, culture, double, image ...., pueden tener configuraciones de tiop
Define el value que puede almacenar.
## Atributos (AggregateRoot) (tabla attributes : id, name, type, ...... )
Los atributos son atributos dinámicos que se pueden crear, tienen un id único en el sistema. Pueden configurar los valores disponibles que se pueden seleccionar
- Si es de tipo talla puede tener una serie de opcioes (xs, s, m ....)
- Si es de tipo color (.....)
- Si se puede buscar
- Si esta activo
Los atributos se pueden marcar como que son de tipo variante o de tipo producto, para indicar a que nivel se han de rellenar.
## Familias (sacado de los catálogos de amazon) (AggregateRoot)
Las familias son agrupaciones de productos de un mismo tipo, por ejemplo (Zapatos, Ropa, Hogar ,.... ), las familias están relacionadas con una serie de atributos que deben estar disponibles si el producto es de esa familia.
Por ejemplo si un producto pertenece a la familia (Zapatos) debe tener Talla, las asignaciones de cada familia se hacen también de forma dinámica.
Un atributos en una familia puede ser obligatorio u opcional.
# Categorias (AggregateRoot)
Las categorías son agrupaciones de artículos, tienen un id y una serie de productos asignados.
# Productos (AggregateRoot)
Los productos son los artículos que se pueden vender/listar en el b2b.
¿ Pertenecen a una familia, o varias ?
Petenecen a varias categorías.
Pueden tener atributos según la familia a la que pertenecen o tener asignados atributos propios.
Un producto siempre tiene una o mas obligatoriamente una variante
Un productos puede tener productos relacionados.
El producto puede pertenece a un product Bundle
# ProductBundle (AggregateRoot)
Composición de productos.
# Variantes (Entidad)
Las variantes son variaciones de un artículo, tienen una lista de atributos que deben rellenarse de forma distinta y no deben existir si el producto deja de existir
```mermaid
classDiagram
class Attribute {
id
type
}
class AttributeType {
string
culture
color
}
class Product {
id
idFamily
}
class ProductAttributeValue {
id
idFamily
}
class Family {
id
}
class Variants{
id
}
class VariantsAttributesValues {
type
value
}
class Category {
id
}
Product "1" *-- "1..*" Variants: Se compone
Attribute "*" --> "1" AttributeType: Puede pertenecer
Product "1" --> "1" Family: Pertenece
Product "1" o-- "*" Category: Pertenece
Variants "1" *-- "*" VariantsAttributesValues
VariantsAttributesValues "*" --> "1" Attribute: Pertenece
Family "1" o-- "*" Attribute: Habilita
Product "1" *-- "*" ProductAttributeValue
ProductAttributeValue "*" --> "1" Attribute: Pertenece
ProductBundle "1" --> "1" Product: Es de tipo
ProductBundle "1" o-- "*" Product: Formado por
```