source: main/eko-disco-specs/trunk/data.rst @ 10752

Last change on this file since 10752 was 10752, checked in by Henrik Bettermann, 11 years ago

Staff members are called officers in portal.

File size: 10.4 KB
RevLine 
[10719]1
2.. |n0| replace:: n\ :sub:`0`
3.. |m0| replace:: m\ :sub:`0`
4
[10699]5.. _label-data-entities:
6
[10696]7Data Entities
8=============
9
[10699]10These are the data entities the new system is supposed to model. Each
11of these entities should be addable, editable, and removable as
12covered in more detail in :ref:`label-use-cases`.
[10696]13
[10699]14For each entity we give a short description to tell what it means,
15what its purpose is and in what regards (and how) it should be handled
16by the system. Again the more detailed actions on these entities
17provided by the system are described in the :ref:`label-use-cases`
18section.
19
20The data entities are sorted alphabetically, not by importance or
21similar. Used description terms should link to other respective
22entities/terms where possible.
23
[10701]24Each data entitiy description provides a list of use cases and other
25data entities connected. Connections to other data entities contain a
26relationship telling how many instances of the described entity are
[10743]27connected to how many instances of the related entity.
[10701]28
[10743]29The following relation types may occur (in both directions):
[10699]30
[10743]31  - 1:1 (one on one)
32  - n:1 (many on one)
33  - n:m (many on many)
34  - p:1 (many or none on one)
35  - p:q (many or none on many or none)
36  - p:n (many or none on many)
37  - b:1 (one or none on one)
38
39with
40
41  - n, m element of {1, 2, ...},
42  - p, q element of {0, 1, 2, ...}
43  - b element of {0, 1}
44
45Examples:
46
471:p service-contract relation means that each service
48offered can result in various contracts, but each contract is
[10745]49only based on one service.
[10743]50
51p:q user-userrole relation means that each user can have no role or
52several roles and each role can be assigned to no user or several users.
53
54Relations can always be read in two directions.
55
[10717]56.. _label-contact-address:
57
58Contact Address
59---------------
60
61A postal address.
62
[10745]63Connected to: :ref:`label-contact-data` (p:1)
[10717]64
[10701]65Used in the following use cases:
66
[10716]67
[10699]68.. _label-contact-data:
69
[10701]70Contact Data
71------------
[10699]72
[10752]73The data neccessary to contact some :ref:`label-customer`,
74:ref:`label-officer` or similar entity. Contact data might contain several
[10732]75addresses, phone numbers, emails, etc.
[10699]76
[10717]77Connected to: :ref:`label-customer` (1:1),
[10742]78:ref:`label-contact-address` (1:p), :ref:`label-contact-email`
79(1:n), :ref:`label-contact-phone` (1:p)
[10716]80
81Used in the following use cases:
82
83
[10719]84.. _label-contact-email:
85
86Contact Email
87-------------
88
89An email address with optional additional clear name. For email
90addresses we store some timestamp that indicates when the respective
91email address was last checked successfully (thus marking it a 'valid'
[10742]92one). No timestamp means, the email address has never been checked.
[10719]93
[10742]94Connected to: :ref:`label-contact-data` (n:1),
95:ref:`label-timestamp` (1:q)
[10719]96
97Used in the following use cases:
98
99
100.. _label-contact-phone:
101
102Contact Phone
103-------------
104
[10737]105Mobile phone number which is capable of receiving sms text messages.
[10719]106
[10745]107Connected to: :ref:`label-contact-data` (p:1)
[10719]108
109Used in the following use cases:
110
111
[10699]112.. _label-contract:
113
[10701]114Contract
115--------
[10699]116
[10730]117A contract is created whenever a :ref:`label-customer` orders some
118:ref:`label-service` from the system. It is always connected to a
119:ref:`label-customer` and a :ref:`label-service` .
[10729]120
121A contract is not necessarily written on paper and signed by
122people. Instead it is an abstraction used inside the system.
123
[10743]124It is always created from a :ref:`label-service`, which tells about
[10730]125the basic data, with additional parameters set that depend on the type
126of :ref:`label-service` ordered.
[10729]127
[10732]128Contracts can trigger :ref:`label-transaction`\ s. For instance if some
129:ref:`label-customer` orders a service. When the service charges
130become due, a respective :ref:`label-transaction` is triggered.
131
[10742]132Contracts can have multiple :ref:`label-contract-addon`\ s.
[10729]133
[10742]134Connected to: :ref:`label-service` (p:1), :ref:`label-customer` (p:1),
[10745]135:ref:`label-contract-addon` (1:p), :ref:`label-transaction` (1:p),
136:ref:`label-meter` (1:b)
[10729]137
138Used in the following use cases:
139
140
[10730]141.. _label-contract-addon:
142
143Contract Addon
144--------------
145
146Kind of 'sub contract' that always belongs to some already existing
[10732]147:ref:`label-contract` but comes with an own set of
148parameters. Contract addons are created by :ref:`label-contract`\ s.
[10730]149
[10743]150Connected to: :ref:`label-contract` (p:1),
151:ref:`label-service` (p:1), :ref:`label-customer` (p:1),
152:ref:`label-transaction` (1:p)
[10730]153
154
[10699]155.. _label-customer:
156
[10701]157Customer
158--------
[10696]159
[10746]160Beneficiary of :ref:`label-contract`\ s.
[10701]161
[10738]162Customers are added to the system by initial import (migration phase),
163being created by staff or can self-register themselves to the system.
[10733]164
[10738]165Customers have to provide :ref:`label-contact-data` and get
166:ref:`label-login-credentials` to login to the system.
167
168Once logged in, customers get a 'My Eko-Disco' page where they can
169
170- see their current orders
171
172- watch their consumption
173
174- order more services
175
176- handle contractual problems
177
178- get help if problems arise
179
[10742]180- retrieve bills
[10738]181
[10742]182- change their passwords
[10738]183
184Customers can order :ref:`label-service`\ s and pay these (kinds of
185payment depend on the type of service/good ordered and the available
186payment methods).
187
188Customers and their data can be managed by customers themselves (for
[10752]189instance when postal addresses change), and by officers.
[10738]190
[10742]191Connected to: :ref:`label-contract` (1:p),
[10746]192:ref:`label-contact-data` (1:1), :ref:`label-login-credentials` (1:1),
193:ref:`label-user` (b:1)
[10738]194
195
196.. _label-location:
197
198Location
199--------
200
201A real-world location. Used for instance for meters to store
[10744]202information about their place. The location of a meter does not necessarily
203correspond with one of the :ref:`label-contact-address`\ es.
204Locations can either be less formal, for instance describing a location
205in words, or very precise by using GPS data.
[10738]206
[10742]207Connected to: :ref:`label-meter` (1:p)
[10738]208
209
[10699]210.. _label-login-credentials:
211
[10701]212Login Credentials
213-----------------
[10699]214
[10738]215A set of username/password assigned to system users. Passwords are
216stored inside the system using strong cryptographic hash functions.
[10733]217
[10738]218Passwords can be reset on request.
219
[10742]220Connected to: :ref:`label-customer` (1:1)
[10738]221
222
[10699]223.. _label-meter:
224
[10701]225Meter
226-----
[10696]227
[10738]228A meter measures power consumption. It has a place where it is
229installed and might be connected to one or several contracts. For a
230given time a meter can be connected to one or zero contracts.
[10733]231
[10738]232Each meter has to provide a :ref:`label-location` that tells, where it
233is installed.
[10699]234
[10738]235Meters also contain a history of meter values
236(:ref:`label-meter-value`), which is basically a list of meter values
237at a given time.
[10696]238
[10742]239Connected to: :ref:`label-contract` (b:1),
240:ref:`label-meter-value` (1:n), :ref:`label-location` (p:1)
[10733]241
[10738]242
[10699]243.. _label-meter-value:
[10696]244
[10701]245Meter Value
246-----------
[10696]247
[10738]248The value of a :ref:`label-meter` at a certain point in time
249(providing a :ref:`label-timestamp`) authorized by some
250:ref:`label-user` or device.
[10733]251
[10738]252It serves mainly for computing power consumption of
253:ref:`label-customer`\ s.
[10696]254
[10738]255When a new meter value is added to the system (the respective
256:ref:`label-meter` is 'updated'), the system also registers how the
257the new value was entered, i.e. by whom and when.
[10696]258
[10738]259The system will be prepared to collect meter values in two ways:
[10696]260
[10738]261a) (push-method): by being fed with respective data by authorized
[10752]262   users (officers)
[10701]263
[10738]264b) (pull-method): by polling dedicated hardware that provides the
265   neccessary interface (automatic remote-reading).
[10701]266
[10738]267The second choice requires appropriate hardware to be in place, which
268in detail is not part of this specs. The system will, however, be
269prepared to collect meter data from external devices.
[10733]270
[10745]271Connected to: :ref:`label-meter` (n:1), :ref:`label-timestamp` (1:1),
[10742]272:ref:`label-user` (p:1)
[10738]273
274
[10746]275.. _label-officer:
276
277Officer
278-------
279
280Officers are staff members with certain permissions to manage portal data.
281
[10751]282Actors are called :ref:`Manager <label-actors>` if they are officers with local
283managing permission.
[10746]284
285Connected to: :ref:`label-login-credentials` (1:1),
286:ref:`label-user` (b:1),
287:ref:`label-user-role` (1:p)
288
289
290
[10699]291.. _label-report:
[10696]292
[10701]293Report
294------
[10699]295
[10738]296Administrative report or list to give overviews over current state of
297business. Includes lists of customers sorted by various categories
298(type of contract, amount of fees paid, etc.), lists of services
299sorted by various categories, etc.
[10720]300
[10738]301Reports are generated as PDF documents and are available for download
302by authorized :ref:`label-user`\ s.
303
304Connected to: (almost everything else)
305
306
[10720]307.. _label-service:
308
309Service
310-------
311
[10732]312The system will provide different services to
313:ref:`label-customer`\ s. These can have arbitrary forms, including
314one-time services (like installation of meters) and open-ended
315long-time services (like delivering power based on contract). Services
316are managable by staff like goods offered in a shop.
[10720]317
[10729]318Services define the conditions under which they can be ordered by
[10732]319:ref:`label-customer`\ s, including prices, runtimes, etc.
[10729]320
[10732]321Services also serve as factories for :ref:`label-contract`\ s.
[10729]322
[10742]323Connected to: :ref:`label-contract` (1:p)
[10730]324
[10729]325Used in the following use cases:
326
327
[10699]328.. _label-timestamp:
329
[10701]330Timestamp
331---------
332
[10738]333A timestamp can be a calendar date or a calendar date plus some day
334time.
[10720]335
[10738]336The system will internally use UTC-based timestamps only to minimize
337ambiguities. In menus, frontends, etc. timestamps are displayed in
338local Lagos time.
339
340Connected to: :ref:`label-meter-value` (1:1),
[10742]341:ref:`label-contact-email` (p:1)
[10738]342
343
[10720]344.. _label-transaction:
345
346Transaction
347-----------
348
349A transaction is some business-relevant action taken. A transaction
350means basically, that something happened, that leads to increased or
351decreased customer accounts. Normally this is something like a
352payment, some service order or similar.
353
354Transactions do always belong to one certain customer account. They
355also contain some amount of money which is thereby transfered to or
356from a customer's account. They also always reference a service which
[10730]357is consumed, purchased, or (pre-)paid by the respective customer.
[10720]358
[10742]359Connected to: :ref:`label-customer` (p:1), :ref:`label-service`
[10743]360(p:1), :ref:`label-contract` (p:1)
[10720]361
362Used in the following use cases:
363
364
[10738]365.. _label-user:
366
367User
368----
369
370A system user.
371
372Users can have :ref:`label-user-role`\ s managed by the
[10752]373system. Real-world officers (staff members) and customers are different to the
[10738]374system as they will have different roles. Also anonymous users are
375accepted by the system to provide marketing pages, service offers,
376etc.
377
378Each user has one set of :ref:`label-login-credentials` to authenticate
379against the system.
380
381Users can be blocked or removed from the system.
382
[10745]383Connected to: :ref:`label-login-credentials` (1:1),
[10746]384:ref:`label-customer` (1:b),
[10745]385:ref:`label-user-role` (p:q)
[10738]386
387
388.. _label-user-role:
389
390User Role
391---------
392
[10746]393A set of permissions assigned to a group of :ref:`label-user`\ s.
[10738]394
[10742]395Connected to: :ref:`label-user` (p:q)
[10738]396
Note: See TracBrowser for help on using the repository browser.