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

Last change on this file since 10739 was 10738, checked in by uli, 11 years ago

Fill at least some text into empty data items, remove some which might not be needed.

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