====== Settings-Collections ======
* user
* feed_updates
* enrichment_updates
* db_updates
* pci_reco_rules
* TODO: billing stuff
* TODO: data stuff
====== pci_reco_rules ======
also look at: [[recorules|RecoRules]]\\
api: http://dev01.picalike.corpex-kunden.de:8055/docs
general document structure:
"uid": int # uid from the user collection (currently not implemented)
"apikey": "string" # association to uid
"type": literal["meta", "group", "ruleset", "cats"]
# meta: top level settings for the reco rules
# group: settings for a group and "links" to rule-sets (deprecated)
# ruleset: definition of a rule set
# cats: lists the current categories of the shop (including intermediate categories if a "category_delimiter" is defined in the user settings
# additional values according to the type
===== type: meta =====
"values": dict
# default_group_name: str
# [category_delimiter: str]
["groups": ] # required when we switch to the structure that does not need the groups document
example:
{
"_id": ...,
"uid": 1234,
"type": "meta",
"groups": ["live", "prelive", "experiment-a", "experiment-b"],
"values": {"default_group_name": "live", "category_delimiter": "|"}
}
===== type: group =====
(deprecated)
"name": str
"version": int # should be an incrementing version number (could be a timestamp)
"global": RuleSet-ID
"categories": Dict[str, RuleSet-ID]
"api": Dict[str, RuleSet-ID]
example:
{"_id": ..., "uid": 1234, "type": "group", "name": "live", "version": 123, "global": ..., "categories": {"pants": ...}, "api": {"sim_api": ...}}
===== type: ruleset =====
a RuleSet document looks like this (, [optional]):
"_id": mongo-id
"groups": Ex: [{"name": "live", "active": true}]
"apis": Ex: ["look", "sim", "alsoreco", "vmail"]
"categories_version": int Ex: 1541951532
"base_category": Optional[int] # if null -> global, int: position in the categories array of the cats-document Ex: 1
"included_categories": Optional[] # if empty or null -> all sub-categories are excluded Ex: [89, 10]
"filters":
{:
{
["default": ],
["matches": {: : ] # Not Yet Implemented
}
}
"options": Dict[str, Any] # to enable special solutions
# TODO
example:
{
"_id": ...,
"uid": 1234,
"type": "ruleset",
"filters": {
"season": {
"default": "sameAsRef",
"matches": {
"summer": ["summer", "neutral", "null"]
}}},
"options": {}
}
===== type: cats =====
"categories": List[str] # alphabetically sorted list of categories including intermediate categories if category_delimiter is defined
"version": float # timestamp currently
["del_categories": List[str]] # only exists or empty if there were deleted categories compared to before
["new_categories": List[str]] # only exists or empty if there were new categories compared to before
["id": mongo-id # pointing to the previous document if exists
examples:
{
"_id": "1234",
"categories": ["a", "b", "c", "d"],
"type": "cats",
"version": 123000
}
{
"_id": "2345",
"categories": ["a", "b", "c", "e"],
"type": "cats",
"del_categories": ["d"],
"new_categories": ["e"],
"id": "1234",
"version": 123999
}