summaryrefslogtreecommitdiff
path: root/contrib/Pflichtenheft-Peter.txt
blob: 7833676f1fdfb2ecdecd5dc9eea967edc22576b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Pflichtenheft
=============

Grundsätzliches:
----------------

Die zu erstellende Software `rhwebimport` ist eine Erweiterung zu Rivendell der bei Radio Helsinki verwendeten Automationssoftware. Diese bietet eine Web XML-RPC Schnittstelle die benutzt werden kann um Audiodateien in das System zu importieren, exportieren und zu bearbeiten. Rivendell verwaltet Audioinhalte in sogenannten Carts und Cuts. Jedes Cart besteht aus ein oder mehreren Cuts. Weiters gibt es sogenannte Logs welche einfach eine Liste aus Carts sind.

Eine Sendung auf Radio Helsinki hat genau ein Log welches abgearbeitet wird wenn die Sendung laufen sollen. Jedes dieser Logs referenziert auf ein oder mehrere Carts und jedes Cart besteht aus ein oder mehreren Cuts welche die eigentliche Audioinformation enthalten. Die Ablaufsteuerung wird von Rivendell übernommen und ist nicht Teil der Software `rhwebimport`.

Zu den Aufgaben der Sendungsmachenden bei Radio Helsinki gehört es die Carts und Cuts die zu einer Sendung gehören rechtzeitig mit den richtigen Inhalten zu befüllen. `rhwebimport` ist jene Applikation die von den Sendungsmachenden zu diesem Zweck verwendet wird. 

Neben Sendungen gibt es noch Jingles und Musicpools. Letzere sind Pools aus Carts welche von ausgewählten Personen verwaltet werden. Rivendell generiert jeden Tag eine Playlist für das Musikprogramm welches immer dann onAir zu hören ist wenn kein vorproduzierte oder Live Sendung gespielt wird. Diese Playlist enthält zufällig aus den Pools ausgewählte Musikstücke. Ausserdem wird in regelmäßigen Abständen ein Jingle in das Musikprogramm eingstreut. Rivendell verwendet je nach Tag und Uhrzeit unterschiedliche Musicpools für die Generierung der Tagesplaylist. Die Generierung und Ablaufsteuerung der Playlist ist nicht Teil von `rhwebimport`. `rhwebimport` soll nur dazu verwendet werden in die Carts der Pools Musik zu importieren oder zu entfernen. Die Zuweisung der Musicpools zu einer Tageszeit erfolgt in einem Stundenraster. Dazu gibt es für jeden Pool ein sogenanntes Clock. Die Zuweisung der Clocks zu den 24 Stunden eines Tages erfolgt über das sogenannte Grid. Dieses Grid enthält für jede Stunde einer Woche eine Referenz auf genau ein Clock.
Ausserdem sollen mit `rhwebimport` die aktuellen Jingles verwaltet werden (import, entfernen, temporäres deaktivieren). Anders als bei Sendungs und Musicpoolcarts die nur ein Cut beinhalten gibt es für die verschiedenen Jingle Gruppen je nur ein Cart mit jeweils mehreren Cuts. Das System wird dann zufällig eines der Cuts spielen sobald das Jinglecart referenziert wird. Derzeit sind 2 Jingle Gruppen geplant (Allgemein und Anlassbezogen) welche zu unterschiedlichen Zeiten gespielt werden.

`rhwebimport` soll auf Basis von Twitter-Bootstrap, JQuery und dropbozone.js entwickelt werden. Zusätzlicher externer Javascript Code kann verwendet werden muss aber mit dem Technikteam von Radio Helsinki abgesprochen sein. Insbesondere das Laden von externen Quellen ist zu vermeiden.

`rhwebimport` soll unter der Lizenz AGPL in der Version 3 entwickelt werden.

Für das gesamte Interface von `rhwebimport` ist auf Barrierefreiheit zu achten.

Radio Helsinki verpflichtet sich die Entwicklung durch zur Verfügungstellung von Testinfrastruktur zu unterstützen. Radio Helsinki wird für die Entwicklung Accounts am Testsystem bzw. zu anderen zur Entwicklung benötigten Systeme zur Vefügung stellen und kümmert sich um die Wartung dieser Systeme.
Ausserdem sollen etwaige gemeinsame Schnittstellen in Kooperation erstellt werden. Dies gilt insbesondere für Schnittstellen die `rhwebimport` benötigt für die es aber keine Entsprechung in der von Rivendell zu Verfügung gestellten API gibt. Die dafür benötigten Komponenten werden von Radio Helsinki entwickelt.
Weiters stellt Radio Helsinki ein Git Repository zur Quellcodeverwaltung zur Verfügung. 


Basisfunktionalität:
--------------------

 - Sendungs Imports/Verwaltung
    Diese Komponente ist bereits weitgehend fertiggestellt und bedarf nur noch ein paar kleinerer Anpassungen. Insbesondere für die Usability sind Vorschläge zu erarbeiten damit auch weniger erfahrene Sendungsmachende das System verwenden können. Auch ist zu überprüfen ob das bestehende Layout auch als mobile Anwendung funktional bleibt. Dafür ist mit einer Minimalauflösung von 320x480 zu rechnen. Allerdings sind für diese kleinste Auflösung Einschränkungen erlaubt. Die uneingeschränkte Funktionalität ist erst aber einer Auflösung von 360x640 zu gewährleisten. Dies gilt auch für alle anderen Komponenten von `rhwebimport`.

 - Jingles Import/Verwaltung
    Für die Verwaltung der Jingles soll ähnlich wie beim Import für Sendungen ein Drop Down Menü für die Auswahl der Jingle Gruppe geben. Jede Gruppe entspricht genau einem Cart. Die zu importierenden Dateien werden als Cuts innerhalb dieses Carts gespeichert. Im Gegensatz zum Import für Sendungen spielt die Reihenfolge der Cuts keine Rolle. Deshalb kann und soll zur Verbesserung der Übersichtlichkeit eine Umsortierung (zb. alphabetisch nach Titel) stattfinden. Importierte Jingles sollen gelöscht oder deaktiviert werden können. Löschen soll durch entfernen des Cuts implementiert werden. Die Deaktivierung eines Jingles soll durch Verschieben des Cuts in ein anderes Cart erfolgen.
Die dafür benötigten API Funktionen sollen gemeinsam mit dem Technikteam von Radio Helsinki besprochen werden und werden dann von Radio Helsinki entwickelt.

 - Musicpools Import/Verwaltung
    Für jedes Musicpool gibt es einen Cart Bereich. Innerhalb dieses Bereichs sollen Audiodateien importiert bzw entfernt werden können. Jede Datei soll in einem eigenen Cart gespeichert sein. D.h. Jedes Cart besitzt genau ein Cut oder ist nicht vorhanden. Wie bei den Jingles gilt das die Reihenfolge der Carts keine Rolle spielt. Eine sinnvolle Umsortierung in der Anzeige ist deshalb möglich und soll implementiert werden. Weiters soll es möglich sein Filter auf Interpret/Titel/Album anzuwenden. 
Die dafür benötigten API Funktionen sollen gemeinsam mit dem Technikteam von Radio Helsinki besprochen werden und werden dann von Radio Helsinki entwickelt.


erweiterte Funktionen:
----------------------

 - Sendungcarts verschieben (innerhalb eines Sendungs Logs)
    Die Audioinhalte die in den Carts einer Sendung gespeichert sind sollen verschiebbar werden. Dafür ist ein leicht zu verstehendes Userinterface zu erarbeiten und zu implementieren.

 - Sendungcarts verschieben (zwischen 2 Sendungen)
    Audioinhalte sollen von einem Cart einer Sendung in ein Cart einer anderen Sendung verschoben oder kopiert werden können. Dafür ist ein leicht zu verstehendes Userinterface zu erarbeiten und zu implementieren.

 - Musicpool Import aus Playlist
    Der Import für Musikpools soll Playlists unterstützen. Das heißt sollte eine Datei die in die Dropzone gezogen wird eine Playlist sein sind anstelle der Playlist die darin referenzierten Dateien zu importieren.

 - Musicpool Syncronisation mit Playlist
    Eine einmal für den Import verwendete Playlist soll nach einer Veränderung zu einem späteren Zeitpunkt mit dem in Rivendell gespeicherten Dateien abgeglichen werden können. Das Interface soll dann folgende Funktionen anbieten: Hinzufügen neuer Dateien, Löschen aller Carts die nicht mehr in der Playlist sind und eine Kombination daraus. Es ist eine Lösung zu erarbeiten die die Erkennung einer bereits importierten Datei ermöglicht. Die dafür herangezogenen Kennwerte müssen innerhalb des Cart verspeichert werden - zu diesem Zweck gibt es bei jedem Cart ein Feld 'user-defined'.

 - Musicpool 'Clock' Verwaltung
    Es ist ein Interface zu entwickeln mit dessn Hilfe die Zuweisung der Musikpool Clocks zum Grid verändert werden kann. Das Interface muss dabei sicherstellen das jeder Stundenslot immer auf eine gültiges Clock verweist und keine Löcher entstehen können. Vereinfacht gesgat: die Referenzen im Grid dürfen nur überschrieben aber nicht gelöscht werden können.