infinito/documentation/product/system/requirements.md

138 lines
3.1 KiB
Markdown
Raw Normal View History

2018-09-12 22:58:51 +02:00
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be
interpreted as described in [RFC 2119](https://tools.ietf.org/html/rfc2119).
"entity" or "entities" are to be interpreted as [Doctrine Objects](https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-objects.html).
2018-09-12 23:46:57 +02:00
**Bold** words define a unique type.
2018-09-12 22:58:51 +02:00
# requiremts
## interfaces
The application MUST contain the following interfaces:
* HTML
* JSON
## actors
### user
The application MUST provide the following functions:
* delete user
* register user
* modify user
* create user (child)
* login
* logout
2018-09-12 23:46:57 +02:00
A **user** MUST have one **node**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **user** MUST be a **source**.
2018-09-12 22:58:51 +02:00
### law
2018-09-12 23:46:57 +02:00
A **law** MUST belong exclusive to a **node**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **law** MUST contain one of each of **right** types one time.
2018-09-12 22:58:51 +02:00
#### right
2018-09-12 23:46:57 +02:00
A **right** MUST NOT be a **source**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **right** MUST belong to a **law**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **right** MUST be of one of the following types:
2018-09-12 22:58:51 +02:00
* read
* write
* administrate
#### permission
2018-09-12 23:46:57 +02:00
A **permission** MAY have a father from which it inherit.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **permission** MUST belong to a **right**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **permission** MUST allow blacklisting.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **permission** MUST allow whitelisting.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **permission** MUST allow that it applies to the parent **relative collection** s of the rule set.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **permission** MUST allow that it applies to the child **relative collection** s of the rule set.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **permission** MUST contain a **collection** on which the rule set applies.
2018-09-12 22:58:51 +02:00
### node
2018-09-12 23:46:57 +02:00
A **node** MUST have one **source**.
A **node** MUST contain a parent **relative collection**.
A **node** MUST contain a children **relative collection**.
A **node** MAY be a member of one or more **relative collection** s.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **node** MAY be a member of one or more **collection** entity.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **node** MUST have a **law**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **node** MUST have a **history**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
#### relative collection
A **relative collection** MUST belong to a **node**.
A **relative collection** MUST contain **node** s.
A **relative collection** MUST provide the following functions:
* get all relatives
* get specific relative
* get relatives
* get relatives of generation
2018-09-12 22:58:51 +02:00
### source
2018-09-12 23:46:57 +02:00
A **source** MUST have one node.
A **source** MUST be an entity.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **source** MUST contain a file fabric.
2018-09-12 22:58:51 +02:00
#### entities
Sources MUST be on of the following entities:
2018-09-12 23:06:03 +02:00
entity|attributes
2018-09-12 23:46:57 +02:00
--- | ---
2018-09-12 23:06:03 +02:00
user|username,password,identity
identity|names,addresses
address|
date|datetime
name|string
birthday|date
death|date
text|text(varchar)
collection|nodes
live|birthday,death
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
#### file
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **file** MUST be on of the following types:
2018-09-12 22:58:51 +02:00
* HTML
* JSON
* XML
* TEXT
* CSV
* JPG
2018-09-13 13:00:23 +02:00
* MD
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
It SHOULD be possible to export a **file** to one or more other **file** s.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
It MUST be possible to edit a **file**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
IT MUST be possible to save a **file**.
2018-09-12 22:58:51 +02:00
#### collection
2018-09-12 23:46:57 +02:00
A **source** MAY contain other **nodes**.
2018-09-12 22:58:51 +02:00
### history
2018-09-12 23:46:57 +02:00
A **history** MUST log all of the actions which happen to a **node**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **history** MUST exclusive belong to a **node**.
2018-09-12 22:58:51 +02:00
2018-09-12 23:46:57 +02:00
A **history** MUST allow to give the state of a **node** of a special date back.