finalize stories, add use cases, start module docs

This commit is contained in:
Tom Irgang 2023-08-27 21:08:24 +02:00
parent 4145be8c78
commit f83b264e69
4 changed files with 97 additions and 17 deletions

4
docs/dev/apps.md Normal file
View file

@ -0,0 +1,4 @@
# Apps
The repapp is split into different modules, realized as Django apps, to improve the maintainability.

View file

@ -6,16 +6,12 @@ User stories describing real world repair-cafe situations and workflows.
One of the repairers cancels his attendance to a repair-cafe on short notice. One of the repairers cancels his attendance to a repair-cafe on short notice.
### Analog workflow
If possible, assign existing repair appointments to other repairers, and align new time schedule with the guests using phone calls. If not possible, cancel repair assignments using phone calls. If possible, assign existing repair appointments to other repairers, and align new time schedule with the guests using phone calls. If not possible, cancel repair assignments using phone calls.
## Guest cancels a repair appointment on short notice ## Guest cancels a repair appointment on short notice
A guest cancels a repair appointment on short notice. This frees a timeslot for an additional repair appointment. A guest cancels a repair appointment on short notice. This frees a timeslot for an additional repair appointment.
### Analog workflow
If there are fitting devices on the waiting list, the owner is called and a repair appointment is offered. If no fitting devices are available, the last appointment of the day is re-scheduled to the free slot, in alignment with the guest. If there are fitting devices on the waiting list, the owner is called and a repair appointment is offered. If no fitting devices are available, the last appointment of the day is re-scheduled to the free slot, in alignment with the guest.
## Guest misses a repair appointment or causes trouble ## Guest misses a repair appointment or causes trouble
@ -26,28 +22,20 @@ The guest is added to a blacklist.
Because of delays or other issues, the last repair appointment of a repair-cafe event cannot happen anymore. Because of delays or other issues, the last repair appointment of a repair-cafe event cannot happen anymore.
### Analog workflow
If possible, the last repair appointment is cancelled using a phone call with the guest. If possible, the last repair appointment is cancelled using a phone call with the guest.
## All slots for a repair-cafe are very early assigned ## All slots for a repair-cafe are very early assigned
### Analog workflow
Deactivate registration form and give a hint on the homepage that the event is already fully booked. Deactivate registration form and give a hint on the homepage that the event is already fully booked.
## All slots for some device types are already very relay assigned ## All slots for some device types are already very relay assigned
### Analog workflow
Further registration is still possible, but a hint is added that repair assignments for devices types XYZ are not possible anymore. Further registration is still possible, but a hint is added that repair assignments for devices types XYZ are not possible anymore.
## Creation and handling of waiting lists ## Creation and handling of waiting lists
If a repair appointment is not possible for a device, because of high demand for this device type of cancellation of a repairer, the guest is contacted and asked to register the device again for a later repair-cafe, or if the device shall be registered for a later repair-cafe. If a repair appointment is not possible for a device, because of high demand for this device type of cancellation of a repairer, the guest is contacted and asked to register the device again for a later repair-cafe, or if the device shall be registered for a later repair-cafe.
### Analog workflow
Guest registers again: It's possible that again no slots are free, and the repair appointment is canceled again. The information that the guest had the device already registered for a repair-cafe is lost. Guest registers again: It's possible that again no slots are free, and the repair appointment is canceled again. The information that the guest had the device already registered for a repair-cafe is lost.
Organizer registers device: Increased organization effort and there is a high probability that the guest doesn't keep the repair appointment. Organizer registers device: Increased organization effort and there is a high probability that the guest doesn't keep the repair appointment.
@ -56,8 +44,6 @@ All canceled devices are moved to the "canceled devices" section of the forum ma
## The guest doesn't confirm the appointment and doesn't reply to mails ## The guest doesn't confirm the appointment and doesn't reply to mails
### Analog workflow
Try to call guest by phone. Try to call guest by phone.
If the organizers cannot reach the guest, the repair-appointment is canceled by mail. If possible, another guest form the waiting list is contacted. If the organizers cannot reach the guest, the repair-appointment is canceled by mail. If possible, another guest form the waiting list is contacted.
@ -66,8 +52,42 @@ If the organizers cannot reach the guest, the repair-appointment is canceled by
Some device types are not repaired during a repair-cafe. These devices are assigned to repairers for "offline" repair. Some device types are not repaired during a repair-cafe. These devices are assigned to repairers for "offline" repair.
### Analog workflow
Align with repairer: If the repairer accepts the device, the contact data of repairer are given to the guest. Align with repairer: If the repairer accepts the device, the contact data of repairer are given to the guest.
For TV: Type plate and issue description is given to a repairer, and options are evaluated. If a repair is possible, the guest shall bring the TV to the Haus Einstein. When the repair is done, the guest get's an update by mail. For TV: Type plate and issue description is given to a repairer, and options are evaluated. If a repair is possible, the guest shall bring the TV to the Haus Einstein. When the repair is done, the guest get's an update by mail.
## strategic overbooking
If all slots are booked, further devices are accepted on best effort. These devices are brought by the guests at the beginning of a repair-cafe and get collected at the end of a repair-cafe. When a repairer has some time between two repair-assignments, he can pick such a device.Having such devices is wanted by the repairers.
This is only used for guests living very close to the event, and if the repair effort should be very limited.
## Communication with guests
Communication shall primary happen by e-mail. If further information is needed for a device, a mail is written to the guest. This communication often involves embedded images and attachments.
A FAQ on the website of the repair-cafe, which can get referenced, may help for this communication.
## Where is the device?
It can happen that it's not clear where a device is located, for example if a device stays with the repair-cafe team for a follow up repair, or if a device is accepted outside of an repair-cafe event.
Current workflow:
For devices which get brought by the owner and collected later: If there was no time to repair the device, or if spare parts were missing, we may offer the guest to keep the device till the next repair-cafe event happens. Such devices are kept in Haus Einstein.
Another such case may be that a guest brings a device a few days before the repair-cafe event, because of personal availability. Such devices are also stored in Haus Einstein.
It may also happen that a repairer agrees with a guest to keep the device and continue with the repair activity outside of an repair-cafe event. Especially for such cases, the current location of a device may be not defined and a documentation is missing.
## Criteria for repair-assignments
- Will a skilled repairer be available?
- Point of time of registration (waiting lists and registration date)
- Is the device and failure a candidate for an overbooking device?
- Is there a feedback of a repairer that he wants to take a look at the device?
- Is all needed information available?
## Paperwork during the event
Based on an Excel sheet, repair slips (guest data and signature) and routing slips (device data and fields for notes) are created. Both slips have the same date and id, so it's possible to match them if needed. This is required in case of issues or complaints of the guest.

54
docs/dev/use_cases.md Normal file
View file

@ -0,0 +1,54 @@
# Use cases
The repapp shall support the following use cases:
## Guest
- [ ] As a guest, I want to register a device for a repair-cafe event.
- [ ] As a guest, I want to get a confirmation for my device registration.
- [ ] As a guest, I want to get notified about a repair-assignment or a rejection of my device.
- [ ] As a guest, I want to get notified about information request for my device.
- [ ] As a guest, I want to be able to answer information requests for my device.
- [ ] As a guest, I want to be able to contact the repair-cafe organizers.
- [ ] As a guest, I want to be able to do all interaction by mail only (except the device registration).
- [ ] As a guest, I want to confirm a repair-assignment by mail.
- [ ] As a guest, I want to be able to see my device data and the status of my device registration.
- [ ] As a guest, I want to be able to register my device for a follow up repair.
- [ ] As a guest, I want to be able to view my personal data.
- [ ] As a guest, I want to be able to view my device data.
- [ ] As a guest, I want to be able to edit my personal data.
- [ ] As a guest, I want to be able to edit my device data.
- [ ] As a guest, I want to be able to delete my personal data.
- [ ] As a guest, I want to be able to delete my device data.
- [ ] As a guest, I want to be able to cancel my device registration.
## Repairer
- [ ] As a repairer, I want to be able to view the registered devices.
- [ ] As a repairer, I want to show interest for a device.
- [ ] As a repairer, I want to request additional information for a device.
- [ ] As a repairer, I want to enable or disable notifications.
- [ ] As a repairer, I want to get notified when an information request gets answered.
- [ ] As a repairer, I want to get notified when a device gets assigned to me.
- [ ] As a repairer, I want to confirm the participation at a repair-cafe.
- [ ] As a repairer, I want to decline the participation at a repair-cafe.
- [ ] As a repairer, I want to reject a device.
- [ ] As a repairer, I want to get notified if a device assigned to me gets canceled.
## Organizer
- [ ] As a organizer, I want to get notified when a new device is registered.
- [ ] As a organizer, I want to schedule new repair-cafe events.
- [ ] As a organizer, I want to view device details.
- [ ] As a organizer, I want to request further information for a device.
- [ ] As a organizer, I want to reject a device.
- [ ] As a organizer, I want to accept a device.
- [ ] As a organizer, I want to create a repair-assignment.
- [ ] As a organizer, I want to confirm the participation of a repairer for a repair-cafe event.
- [ ] As a organizer, I want to decline the participation of a repairer for a repair-cafe event.
- [ ] As a organizer, I want to edit the device data.
- [ ] As a organizer, I want to edit the guest data.
- [ ] As a organizer, I want to unregister a device.
- [ ] As a organizer, I want to get notified if a guest deletes a device registration.
- [ ] As a organizer, I want to get export all data for a repair-cafe.
- [ ] As a organizer, I want to assign devices to repair-cafes.

View file

@ -10,8 +10,10 @@ nav:
- 'Developer documentation': - 'Developer documentation':
- Overview: 'dev/index.md' - Overview: 'dev/index.md'
- Users: 'dev/users.md' - Users: 'dev/users.md'
- Objects: 'dev/objects.md'
- Stories: 'dev/stories.md' - Stories: 'dev/stories.md'
- 'Use cases': 'dev/use_cases.md'
- Apps: 'dev/apps.md'
- Objects: 'dev/objects.md'
- 'Repair-Café & Makespace': - 'Repair-Café & Makespace':
- Repair-Café: https://www.repaircafe-hilpoltstein.de - Repair-Café: https://www.repaircafe-hilpoltstein.de
- Makespace: https://makes-hacks-hip.de - Makespace: https://makes-hacks-hip.de