Collection articles
Collection articles
Stocke les articles du catalogue Vekteur.
Un article est unique par brand + normalized_reference.
Les données enrichies (alias, documents joints, relations inter-articles, spécifications) sont stockées dans des sous-collections dédiées et populées en virtuel.
Métadonnées
Service propriétaire |
|
Tenant scope |
Partiel (champ |
Soft delete |
Oui (champ |
Index principaux |
|
Schéma
interface Article {
_id: ObjectId;
company?: ObjectId; // tenant propriétaire (absent = article global)
is_active: boolean; // défaut : true
type: "auto_part" | "oem" | "tyre"; // requis
reference: string; // requis
normalized_reference: string; // généré automatiquement
source: "vekteur" | "tecdoc" | "company"; // défaut : "company"
brand: ObjectId; // ref: Brand (requis)
archetype: ObjectId; // ref: Archetype (requis)
ean?: string;
customs_code?: string;
sku?: string;
supplier_url?: string;
description?: string;
short_description?: string;
long_description?: string;
tags?: string[];
badges?: string[];
created_by?: ObjectId;
updated_by?: ObjectId;
created_at: Date;
updated_at: Date;
// Virtuels populés
aliases?: ArticleAlias[];
documents?: ArticleDocument[];
relations?: ArticleRelation[];
specifications?: ArticleSpecification[];
public_prices?: PublicPrice[];
purchase_prices?: PurchasePrice[];
net_prices?: NetPrice[];
kits?: Kit[];
promotions?: Promotion[];
depreciations?: Depreciation[];
stocks?: Stock[];
}
Collection article_aliases
Alias d’un article (références croisées, codes EAN supplémentaires, références courtes).
Schéma
interface ArticleAlias {
_id: ObjectId;
company?: ObjectId;
article: ObjectId; // ref: Article
type: "ean" | "reference" | "short_reference" | "complementary_reference" | "qr_code" | "description";
is_primary: boolean; // défaut : false
alias: string;
normalized_alias: string;
created_by?: ObjectId;
updated_by?: ObjectId;
created_at: Date;
updated_at: Date;
}
Index : article, normalized_alias, type + article
Collection article_documents
Documents et médias associés à un article (images, fiches sécurité, notices).
Schéma
interface ArticleDocument {
_id: ObjectId;
company?: ObjectId;
article: ObjectId;
type: "image" | "security" | "information";
url: string;
format?: string;
is_primary: boolean;
source: "vekteur" | "tecdoc" | "company";
created_by?: ObjectId;
updated_by?: ObjectId;
created_at: Date;
updated_at: Date;
}
Collection article_relations
Relations entre articles (références croisées, équivalences OEM, remplacements).
Schéma
interface ArticleRelation {
_id: ObjectId;
company?: ObjectId;
from: ObjectId; // ref: Article
to: ObjectId; // ref: Article
type: "cross" | "oem" | "replaces" | "replaced_by" | "complementary";
source: "vekteur" | "tecdoc" | "company";
confidence_level: number; // défaut : 1
created_by?: ObjectId;
updated_by?: ObjectId;
created_at: Date;
updated_at: Date;
}
Index : from, to
Collection article_specifications
Valeurs de spécifications techniques liées à un article.
Schéma
interface ArticleSpecification {
_id: ObjectId;
company?: ObjectId;
article: ObjectId;
specification: ObjectId; // ref: Specification
value: string;
source: "vekteur" | "tecdoc" | "company";
created_by?: ObjectId;
updated_by?: ObjectId;
created_at: Date;
updated_at: Date;
}
Index : article, specification + article