Specyfikacja techniczna Culture.pl

Transkrypt

Specyfikacja techniczna Culture.pl
Specyfikacja techniczna
Culture.pl
1/20
Dokumentacja
Wyszukiwarka
Wydajność wyszukiwarki
Wydajność Aplikacji
Frontend
Backend
Testy wydajności
SEO
Analityka
Okresowe zadania konserwacyjne dla systemu
Obsługa błędów
Migracja treści z serwisów powiązanych IAM
Migracja serwisu eepap.org
Dodatkowy poziom uprawnień użytkowników
Edytowalne dokumenty
Migracja danych
Eksport artykułów dot. Polski
Osobna instancja
Migracja serwisu IAM.pl
Migracja treści Culture.pl
Integracja z Social Media
Implementacja AdSerwera
Bezpieczeństwo
Gwarancja
Wersja mobilna
Wersja dla niepełnosprawnych
Wersja żałobna serwisu
Multisite
Wielojęzykowość
Projekty lokalne i submarki
Różnice layoutowe między submarkami
System oceny pracy autorów
Szczegółowy opis:
Uprawnienia związane z rozliczaniem czasu pracy
Statystyki przyrostu treści
Panel administracyjny
Przepływ zadań/schemat publikacji
Właściwości systemu CMS
2/20
Dokumentacja
Wykonawca powinien przedstawić szczegółową dokumentację wykonanej aplikacji.
Dokumentacja powinna się składać z:
1. Specyfikacji Funkcjonalnej opisującej sposób wdrożenia danych rozwiązań określonych
przez Zamawiającego
2. Specyfikacji Technicznej składającej się z:
a. szczegółowego opisu wymagań technicznych aplikacji zawierającej informacje o
wszelkich, wymaganych przez aplikację usługach, programach i bibliotekach,
wraz z ich wersjami (PHP 5.3, java, biblioteki do konwersji grafiki, biblioteki
kryptograficzne, rozszerzenia PHP etc.)
b. szczegółowej, wygenerowanej automatycznie z kodu źródłowego aplikacji,
dokumentacji w postaci dokumentu elektronicznego
Wykonawca ma obowiązek aktualizować dokumentację podczas wprowadzania zmian, bądź
poprawek w systemie, także po wykonaniu zlecenia, w okresie trwania gwarancji.
Wykonawca powinien prowadzić dokumentację zmian w repozytorium wykorzystanym podczas
tworzenia aplikacji. Zamawiający powinien mieć pełen dostęp co najmniej do gałęzi
produkcyjnej aplikacji w repozytorium, z możliwością podejrzenia zmian oraz komentarzy
dotyczących tych zmian.
Wyszukiwarka
Wyszukiwarka powinna zostać wdrożona z wykorzystaniem usługi Apache Solr w wersji co
najmniej 3.5.
Wyszukiwarka powinna indeksować treści w sposób przyrostowy - bez konieczności
zatrzymywania aplikacji na czas reindeksacji treści.
Dokładna lista indeksowanych pól zostanie dostarczona wykonawcy w ramach specyfikacji
serwisu. Wykonawca powinien zakładać, że wyszukiwarka pozwala wyszukiwać po wszystkich
polach dostępnych dla danego typu treści.
Wyszukiwarka powinna wykorzystywać możliwość grupowania wyników (faceting).
Wyszukiwarka powinna mieć zaimplementowane zaawansowane rozwiązania, takie jak
stemming, listy synonimów, listy słów zakazanych (badwords).
Wyszukiwarka powinna obsługiwać mechanizm automatycznego podpowiadania w polu
wyszukiwania serwisu (autocomplete), wyświetlającego wyniki na podstawie ustalonych przez
Zleceniodawcę reguł.
3/20
Wyszukiwarka powinna integrować się z systemem w taki sposób, aby możliwe było za jej
pomocą ładowanie treści do bloków typu “podobne artykuły”, “ostatnie artykuły”, “tego dnia
wydarzyło się” itp.
Wyszukiwarka powinna umożliwiać konfigurację zaawansowanego algorytmu sortowania
wyników na podstawie wag przypisywanych do każdego pola zdefiniowanego dla treści serwisu.
Wyszukiwarka powinna umożliwiać zmianę algorytmu ważenia w zależności od miejsca w
którym wyświetlamy wyniki - inne wagi przypisujemy polom na ekranie wyników wyszukiwania,
inne w blokach typu “ostatnie treści”, “podobne artykuły” etc.
Wyszukiwarka powinna umożliwiać automatyczne podświetlanie wyszukiwanych fraz, bądź ich
synonimów na ekranie wyników wyszukiwania, oraz wycinanie fragmentów artykułów, tak aby
zajawka artykułu zawierała szukane frazy.
Wydajność wyszukiwarki
Wyszukiwarka powinna wykorzystywać mechanizmy cache, tak aby powtórne zapytanie
zwracało odpowiedź w czasie mniejszym niż 200ms.
Cache powinien być aktualizowany tylko w przypadku pojawienia się nowych danych w indeksie
wyszukiwarki, które zmieniałyby wyniki wyszukiwania.
Wyszukiwarka powinna być skonfigurowana w taki sposób, aby czas wyszukiwania dla obecnej
bazy treści culture.pl (40000 artykułów) był liniowy i nie przekraczał 1000ms.
Serwer wyszukiwarki, powinien poprawnie wysyłać znaczniki E-Tag/Expires, tak, aby
przeglądarka mogła kontrolować cache po swojej stronie i nie pobierać niepotrzebnie zawrtości,
która nie uległa zmianie.
Wydajność Aplikacji
Serwis, z racji tego, że odbiorcy będą anonimowymi użytkownikami, a komentarze zostaną
wdrożone poprzez zewnętrzne mechanizmy typu FacebookComments, powinien bardzo
agresywnie używać mechanizmów cache.
Cache powinien być wykorzystany na każdym poziomie obsługi żądania http, tak aby uniknąć
przetwarzania requestu po stronie aplikacji.
Mechanizmy, które powinny być wdrożone:
● integracja z reverse proxy (Varnish) zgodnie z RFC2616
● wykorzystanie mechanizmów cache dla zapytań do bazy (memcache)
● cache powtarzalnych elementów strony, takich jak bloki “polecane” (memcache)
4/20
●
●
cache dla całych, wygenerowanych stron (static/memcache)
najlepsze praktyki w kodzie dot. sposobu wykorzystania zmiennych, ograniczania liczby
zapytań do bazy danych, generowania obiektów
CMS powinien umożliwiać z poziomu panelu administracyjnego, wyczyszczenie każdego
poziomu cache, na wypadek zaistnienia takiej potrzeby.
W momencie aktualizacji danego artykułu, cache widoków dla których wyświetla się artykuł
powinien być czyszczony - aplikacja powinna czyścić także widok strony głównej lub kategorii,
jeśli na tych stronach pokazuje się zajawka artykułu.
Frontend
Skórka serwisu powinna zostać wykonana zgodnie z aktualnymi najlepszymi praktykami
dotyczącymi wydajności aplikacji pod kątem czasu ładowania się strony.
W szczególności:
● wszelkie grafiki wykorzystywane jako elementy interfejsu, powinny być połączone w
jeden “sprite”
● ikony lub inne znaki graficzne powinny być połączone w plik czcionki (woff, ttf) i
serwowane jako jeden zasób
● małe obrazki, będące elementami interfejsu, powinny być zaszyte w plikach css w
postaci ciągu data:image base64
● wszelkie zasoby statyczne, będące częścią interfejsu graficznego (css,js, ikony,
czcionki, obrazki interfejsu) powinny być serwowane z osobnej subdomeny s.culture.pl
● obrazki niebędące elementami interfejsu powinny być ładowane z wykorzystaniem
mechanizmu “lazy load” - co oznacza ich załadowanie dopiero w momencie, gdy
użytkownik przewinie stronę w przeglądarce do miejsca w którym powinna się wyświetlić
dana grafika.
○ mechanizm lazyload powinien działać także dla elementów poziomych, takich jak
karuzela, która standardowo nie podpada pod mechanizmy lazyload, ponieważ
mechanizm uznaje, że wszystkie występujące w jej obrębie grafiki, znajdują się w
polu widzenia użytkownika - pomiar na podstawie osi pionowej.
● pliki javascript i css powinny być łączone w jeden plik i kompresowane
● biblioteki javascript, takie jak jquery, powinny być pobierane z adresów CDN
Google/Microsoft - jako jedyne są wyłączone z obowiązku łączenia i kompresji
● Ze względu na RFC2616, to aplikacja steruje nagłówkami expires, w związku z czym,
obrazki oraz inne elementy statyczne, powinny mieć ustawiony maksymalny czas
przedawniania
● strony powinny wysyłać nagłówki ETag aby umożliwić weryfikację, czy wersja leżąca w
cache przeglądarki jest aktualną wersją strony
● wszelkie skrypty powinny być ładowane asynchronicznie, a układ strony i podstawowe
definicje elementów powinny zapobiegać “skakaniu” layoutu jeśli któryś ze skryptów
zmienia jego wygląd/położenie elementów
5/20
●
●
●
●
reguły CSS oraz modyfikacje w drzewie DOM wykonywane poprzez skrypty javascript,
powinny powodować minimalną liczbę zdarzeń typu reflow w przeglądarce
strona może wykorzystywać framework css
strona powinna zawierać minimalną ilość kodu html, tak aby proporcja treści strony do
kodu wyświetlającego tą treść była jak największa
○ szczególną uwagę należy tutaj zwrócić na generowanie nadmiarowych klas i
identyfikatorów, oraz wielokrotnie zagnieżdżonych znaczników, przez system
CMS
obrazki wysyłane przez serwer nie powinny być kompresowane przez serwer (gzip) a
jedynie optymalizowane przez aplikację w momencie generowania miniatur.
Backend
Czas odpowiedzi strony html (mediana) nie powinien przekraczać
● 2000ms przy “zimnym” cache,
● 600ms przy wykorzystaniu cache aplikacji i
● 250ms przy wykorzystaniu Varnish cache.
Powyższe czasy zakładają, że na stronie znajduje się jednocześnie 500 użytkowników oraz
wykonywane jest 50 odsłon stron na sekunde. Odsłona oznacza tutaj pobranie strony wraz z
wszystkimi zasobami wymaganymi do jej wyświetlenia.
Layout strony powinien generować maksymalnie następującą liczbę zapytań do serwera (dla
niezalogowanego użytkownika):
● pliki html: 1
● pliki css: 1
● pliki javascript: 1
● pliki graficzne: 4
● pliki czcionek: 2
● zapytania do adserwera: 2
Powyższe ograniczenia nie dotyczą plików graficznych występujących w zajawkach artykułów,
ale z nimi związany jest temat lazy-load więc nie powinny znacząco powiększać liczby zapytań i
doczytywać się podczas przewijania strony.
Zapytania wysyłane do zewnętrznych serwerów nie są wliczane, ale także powinny być bardzo
ograniczone, tak aby sumaryczna liczba zapytań wymaganych do załadowania strony nie
przekraczała 30.
Funkcje takie jak ocenianie artykułów, powinny być zaimplementowane za pomocą
mechanizmów Ajax. Samo wyświetlanie powinno być wbudowane w stronę, ale aktualizacja
oceny po zagłosowaniu powinna być wysyłana do serwera za pomocą żądania javascript.
Testy wydajności
Wykonawca powinien dostarczyć wraz z projektem, wyniki badania wydajności aplikacji za
pomocą narzędzia klasy ab/siege/jmeter.
6/20
Raport powinien zawierać:
● dokładne informacje o konfiguracji sprzętowej serwera, na którym była testowana
aplikacja, konfiguracji poszczególnych usług (serwer www, baza danych, memcache,
solr),
● dokładnej konfiguracji narzędzia, którym wykonywano pomiar
○ ile wątków wykorzystywało narzędzie
○ jaka była przepustowość łącza między serwerem testowym a serwerm z
aplikacją testującą
● informacje o wynikach testu dla aplikacji w stanach
○ wyłączony cache
○ włączony cache
■rozgrzany cache
■zimny cache
● szacunki dotyczące ograniczeń aplikacji i poziomu ruchu jaki jest w stanie obsłużyć przy
wykorzystaniu proponowanej konfiguracji sprzętowej
● zmiany, które zostały wprowadzone w konfiguracji usług po testach wydajnościowych
Testy wydajności powinny zawierać informacje zarówno o średnim czasie odpowiedzi i
pobierania strony, jak i inne statystycznie istotne miary, takie jak mediana czy odchylenie
standardowe dla żądań.
SEO
Serwis powinien być zbudowany zgodnie z aktualnymi najlepszymi praktykami SEO, zaczynając
od tak podstawowych spraw, jak przyjazne adresy url, prawidłowe wykorzystanie tagów html na
stronie, poprzez pełną implementację mikroformatów, optymalizacji obrazków poprzez
automatyczne generowanie ich nazw i wypełnianie pól alt/title, aż po automatyczne
mechanizmy pozwalające na szybką indeksację serwisu przez crawlery.
Serwis powinien automatycznie tworzyć sitemapy XML (artykuły oraz grafiki), oraz zgłaszać je
po wygenerowaniu do Google.
Serwis powinien zawierać mechanizmy, które automatycznie będą tworzyły linki dla
określonego zestawu fraz, kierujące do innych podstron serwisu, bądź poza serwis.
Powyższy mechanizm powinien przewidywać limity liczby linków w pojedynczym artykule.
CMS powienien umożliwiać ręczne nadpisanie adresu url danej strony, automatycznie
obsługując przekierowania z wszystkich poprzednich adresów za pomocą przekierowania 301.
CMS w ramach obsługi przyjaznych adresów, nie powinien pozwalać na indeksowanie stron w
ścieżkach systemowych, takich jak /taxonomy/term/1, lecz automatycznie przekierowywać z
nich na prawidłowy, przyjazny adres, który będzie indeksowany.
7/20
Wdrożenie powinno zagwarantować 100% przekierowań z poprzednich adresów, pod którymi
występowały artykuły na nowe adresy w obrębie nowego systemu. Przekierowania te dotyczą
także stron innych niż culture.pl, które także będą migrowane w obręb serwisu.
W przypadku, gdy artykuł jest pisany w języku innym niż angielski lub polski, adresy URL
artykułów (slugi), powinny być tworzone na podstawie dodatkowego pola, w które autor wpisu
wprowadzi tytuł artykułu po angielsku. System nie powinien tego procesu automatyzować, a
pole powinno być obowiązkowe.
Analityka
Strona powinna implementować zbieranie danych za pomocą mechanizmu Google Analytics,
zgodnie z instrukcją dostarczoną w ramach specyfikacji strony. Wykonawca powinien zakładać
wdrożenie zaawansowanej analityki, w tym wykorzystania mechanizmów takich jak śledzenie
zdarzeń, “zmienne niestandardowe”, eCommerce, wirtualne odsłony, zliczanie danych do wielu
profili, przekazywanie zmiennych js na potrzeby Tag Managera, oraz różne inne, dowolne
modyfikacje kodu Google Analytics.
Aplikacja powinna przekazywać do kodu strony, zdefiniowane w specyfikacji zmienne,
zawierające przykładowo typ wyświetlanej strony, jej autora bądź kategorię w której dany wpis
został opublikowany, tak, aby można je było następnie wykorzystać podczas wdrażania
zliczania statystyk.
Okresowe zadania konserwacyjne dla systemu
System CMS powienien posiadać automatyczne zadania konserwujące, odpalane za pomocą
mechanizmu CRON. Mechanizm ten powinien działać niezależnie od ruchu na stronie - to
znaczy, że nie może być wywoływany w momencie wejścia użytkownika na stronę, lecz za
pomocą wewnętrznego dziennika zadań systemu. Mechanizmy te powinny dbać o odświeżanie
wszelkiego typu indeksów, cache, logów itp. mechanizmów które mogą sprawić, że aplikacja
będzie działała wolniej niż zakładane w SLA parametry.
System powinien automatycznie sprawdzać dostępność aktualizacji i informować o wszelkich
znanych zagrożeniach, zarówno administratora aplikacji po stronie IAM, ajk i osobę
odpowiedzialną po stronie wykonawcy.
Obsługa błędów
Wszelkie błędy, zarówno te leżące po stronie aplikacji (404 etc.) jak i te leżące po stronie
serwera (500, 503), powinny mieć przygotowane osobne layouty, prezentujące użytkownikowi
informacje o problemie.
Strony te powinny także mieć wdrożone śledzenie w GoogleAnalytics aby umożliwić centralne
zbieranie informacji o błędach.
8/20
Aplikacja powinna zapisywać informacje o błędach aby umożliwić identyfikację ich przyczyn i
ułatwić zapobieganie ich kolejnym wystąpieniom.
Aplikacja powinna przechowywać informacje o 5000 ostatnich błędów (system powinien
automatycznie odcinać starsze dane).
Migracja treści z serwisów powiązanych IAM
W obręb serwisu Culture.pl zostaną zmigrowane następujące serwisy, należące do Instytutu
Adama Mickiewicza:
● azja.iam.pl
● kidsculture.pl
● klopsztanga.de
● przewodnikdopolakow.pl (wraz z satelitami)
● eepap.org
● iam.pl
● wszystkie serwisy z subdomen culture.pl
○ lutoslawski.culture.pl
○ dadada.culture.pl
○ pozostałe pomniejsze serwisy
W drodze dalszych ustaleń z wykonawcą zostaną podjęte decyzje, czy dany serwis będzie
migrowany automatycznie, czy też w ramach migracji treści zostaną przeniesione ręcznie do
nowego systemu.
Migracja serwisu eepap.org
W skład migracji wchodzi serwis eepap.org, który rozszerza funkcjonalność docelowego
systemu o następujące elementy:
Dodatkowy poziom uprawnień użytkowników
Poza użytkownikiem anonimowym (czytelnikiem), który ma dostęp jedynie do frontendu
serwisu, oraz użytkownikiem należącym do redakcji (administrator, moderator, dziennikarz),
pojawia się nowa rola użytkownika, który będzie mógł się zarejestrować w systemie,
wypełniając specjalnie do tego celu przygotowany formularz.
Wypełnienie formularza rejestracyjnego tworzy w systemie użytkownika, który nie jest aktywny nie może się zalogować.
Użytkownik musi potwierdzić podany w formularzu mail, poprzez kliknięcie w link aktywacyjny w
przesłanej na jego adres wiadomości.
Po potwierdzeniu adresu email, użytkownicy typu moderator, mają możliwość aktywowania
konta takiego użytkownika.
9/20
Serwis eepap.org ma za zadanie umożliwiać przedstawicielom instytucji kulturalnych, bądź
pojedynczym artystom, publikację swoich artykułów w serwisie.
Użytkownik taki powinien mieć także profil, w którym może dokładnie opisać instytucje, której
jest przedstawicielem, bądź swoją osobę.
Artykuły pisane przez takiego użytkownika, są automatycznie publikowane w systemie, ale nie
ma on możliwości promowania tych treści poprzez dostępne w systemie mechanizmy promocji,
typu:
● promuj na stronie głównej/stronie kategorii
● dodaj do slidera/karuzeli
Możliwość promowania takich wpisów mają jedynie użytkownicy należący do redakcji.
Wpisy opublikowane przez takiego użytkownika, wyświetlają się jedynie na stronie danej
instytucji/artysty, jako stream wpisów, oraz w widoku pojedynczego wpisu.
W mechanizmach typu “podobne treści”, gdzie wyboru dokonuje automat, wpisy danego autora
mogą się pokazywać - nie wymaga to specjalnego ustawienia we wpisie. Oczywiście jeśli dany
boks wymaga konkretnego atrybutu wpisu, przykładowo “polecane wpisy”, treść tego typu
znajdzie się w nim tylko w wypadku, gdy redakcja włączy daną cechę we wpisie.
Edytowalne dokumenty
Zarejestrowani użytkownicy typu artysta/instytucja, powinni mieć możliwość edycji artykułów
należących do konkretnego typu treści. Projekt zakłada, że będą oni współtworzyć strony
zbierające informacje o danym artyście czy instytucji.
W związku z powyższym, system powinien przechowywać kompletną historię wersji danego
wpisu.
Migracja danych
Projekt zakłada pełną migrację danych z tego systemu. System jest obecnie zbudowany, tak
samo jak culture.pl, przy użyciu systemu Liferay, co sprawia, że struktura danych do migracji
będzie bardzo podobna, jeśli nie identyczna.
Eksport artykułów dot. Polski
Mała część artykułów publikowanych w systemie eepap.org, będzie dotyczyła Polski. W
związku z tym, system powinien umożliwiać automatyczne przedrukowanie takiego artykułu w
domenie culture.pl.
Przedruk ten, będzie musiał wskazywać za pomocą tag’a “canonical” na oryginalny artykuł w
serwsie eepap.org.
Przedruk początkowo nie powinien być automatycznie publikowany - powinien trafiać do kolejki
moderatora jako nieopublikowany.
10/20
Dopiero po ręcznym zatwierdzeniu przez moderatora, artykuł tego typu, powinien być
publikowany.
System przedruków powinien przewidywać możliwość zmiany zasady działania tej funkcji tak,
aby artykuły były publikowane automatycznie. Nie jest w tym miejscu wymagany podział na
mniej lub bardziej zaufanych redaktorów, których wpisy będą się publikować, lecz globalny
przełącznik, który pozwoli zmienić tą logikę.
Osobna instancja
Serwis eepap.ogr powinien stać a osobnej instancji systemu dostarczonego przez Wykonawcę.
Migracja serwisu IAM.pl
Serwis http://www.iam.pl jest serwisem stanowiącym wizytówkę instytutu, a jego rolą jest
przekazywanie informacji o aktualnych wydarzeniach którym patronuje instytut, oraz ułatwianie
osobom zainteresowanym wspłpracy z instytutem.
Strona ta, pomimo że będzie korzystała z wielu funkcji tworzonych na potrzeby serwisu
culture.pl, będzie od niej odrębna layoutowo. Zamawiający dostarczy dla tego serwisu osobny
projekt skórki, który pozwoli realizować cel wyznaczony dla strony.
Najważniejsze cechy serwisu:
1. Kontakty - osoby szukające możliwości skontaktowania się z pracowanikami, bądź
współpracownikami instytutu, powinni mieć dostęp do rozbudowanych profili tych osób
a. wydarzenia opisywane w serwisie powiny być łączone z konkretnymi osobami,
które brały udział w organizacji danego wydarzenia
2. Strony wydarzeń/instytucji - tutaj, podobnie jak w przypadku eepap.org, mamy
doczynienia ze stronami zawierającymi dokładne informacje o danym
wydarzeniu/artyście/instytucji
3. Zaawansowany formularz do składania podania o dotację - wielokrokowy formularz,
pozwalający na załączanie plików (grafiki, dokumnety), z wbudowaną walidacją i
emailowym potwierdzaniem wysłania formularza
4. Automatyczny BIP
5. Możliwość rejestracji użytkowników (Artyści/Instytucje/Dziennikarze)
6. Możliwość pobierania przez zarejestrowanych użytkowników materiałów źródłowych,
takich jak zdjęcia w wysokiej rozdzielczości
a. ta opcja będzie wymagała zaakceptowania specjalnego regulaminu związanego
z udostępnianiem i wykorzystywaniem materiałów
Migracja treści Culture.pl
System, z racji istnienia poprzedniej wersji strony, zostanie zasilony treściami
wyeksportowanymi z poprzedniej wersji w postaci plików XML. Do plików zostanie dostarczony
plik DTD zawierający definicje typów i pól zawartych w eksporcie.
11/20
Proces importu powinien zakładać pewne automatyczne operacje, umożliwiające wprowadzanie
masowych poprawek w migrowanych treściach. Operacje te, będą miały na celu oczyszczenie
danych, przykładowo połączone zostaną tagi, które oznaczają to samo, lecz są inaczej pisane.
Migracja treści powinna też umożliwiać wprowadzanie nowych, nieistniejących wcześniej
zależności między treściami - mogą zostać wytworzone taksonomie na podstawie analizy
zawartości danych pól. Może też nastąpić normalizacja i denormalizacja danych.
Integracja z Social Media
Serwis powinien integrować się z obecnie najpopularniejszymi serwisami społecznościowymi,
takimi jak Twitter, Facebook czy Pinterest.
Dokładny poziom integracji zostanie określony w specyfikacji serwisu.
Wykonawca powinien zakładać, że jest to ponadstandardowy poziom integracji, wykorzystujący
przykładowo automatyczne wstawianie danych opengraph na potrzeby serwisu Facebook,
automatyczne skracanie adresów url przy wysyłaniu informacji na serwis Twitter, możliwość
automatycznego eksportu galerii do serwisu Pinterest, możliwość wykorzystania mechanizmu
“social reading” serwisu Facebook, możliwość wykorzystania mechanizmu komentarzy
Facebook dołączanych do wpisu, wraz z wyświetlaniem w treści strony kopii tych komentarzy,
tak aby były one indeksowane przez roboty wyszukiwarek.
Implementacja AdSerwera
Strona internetowa Culture.pl serwuje reklamy za pośrednictwem lokalnej instancji serwera
reklam OpenX. Rozkład stref reklamowych zostanie załączony do szczegółowej specyfikacji
technicznej, która będzie udostępniona wykonawcy po rozpoczęciu wykonywania zlecenia.
Wykonawca jest zobowiązany dostarczyć wszelkie dodatkowe skrypty (javascript) wymagane
do wyświetlania zaplanowanych form reklamowych, które wymagają dodatkowych skryptów przykładem może tu być toplayer oraz expand/rollover.
Wykonawca jest zobowiązany zaimplementować kody OpenX tak, aby zawartość wszystkich
stref była pobierana za pomocą jednego zapytania do adserwera - zgodnie z opisem na stronie
http://www.openx.com/docs/tutorials/single+page+call
W obecnej chwili, specyfikacja serwisu przewiduje jedynie następujące formy reklam: billboard
(750x100/200/300), tapeta (1280x800), halfpage (300x600).
Te założenia mogą ulec zmianie, ale mało prawdopodobne wydaje się wykorzystanie bardziej
agresywnych form typu toplayer.
Bezpieczeństwo
System powinien szyfrować hasła użytkowników za pomocą bcrypt, z unikalną “solą” dla
każdego użytkownika.
Hasło, zarówno w formie plaintext jak i zahashowanej, nie powinno się znaleźć w żadnym typie
pamięci cache.
12/20
Kopia deweloperska serwisu powinna anonimizować bazę poprzez nadpisywanie losowymi
wartościami wszelkich danych osobowych w niej zawartych. Powinna też nadpisywać hasła
użytkowników tak aby jej wykradzenie nie pozwalało na uzyskanie dostępu do wersji live
serwisu.
Serwis powinien umożliwiać logowanie się użytkownikom tylko z określonych zakresów
adresów IP.
Wszelkie dodatkowe usługi wykorzystywane przez aplikacje, powinny być dokładnie opisane,
wraz z informacjami w jaki sposób aplikacja się z nimi komunikuje. przykładem może być tutaj
usługa memcache, która powinna komunikować się na porcie 11211 i ograniczać możliwość
łączenia się z nią tylko do adresu IP serwera na którym stoi aplikacja. Inne, przykładowe usługi:
Varnish, Solr, redis, aplikacja skracająca adresy URL.
Wszelkie pola formularzy powinny podlegać walidacji zarówno po stronie przeglądarki
użytkownika, jak i po stronie systemu.
Zapytania do baz danych powinny być zabezpieczone przed atakami typu SQL injection, w
szczególności powinny używać parametrów.
Mechanizmy obsługujące ładowanie do serwisu zdjęć, powinny być zabezpieczone przed
atakami LFI i innymi, które można wykonać z pomocą tego typu mechanizmów.
Pliki cookie powinny być zabezpieczone przed dostępem z poziomu skryptów javascript
poprzez ustawienie flag HTTP only.
Wykonawca, w ramach zlecenia przeprowadzi testy bezpieczeństwa aplikacji za pomocą
narzędzia klasy skipfish, rozwiąże wszelkie znalezione problemy i usunie luki bezpieczeństwa
oraz dostarczy Zleceniodawcy finalny raport z automatycznego audytu wykonanego tym
narzędziem.
Gwarancja
Wykonawca będzie odpowiedzialny za bezpłatne aktualizacje oraz rozwiązywanie problemów
związanych z działaniem aplikacji, których przyczyna leży po stronie wykonawcy, w okresie 2 lat
od momentu wykonania Dzieła. Szczegółowe warunki SLA są zawarte w załączniku nr 13 do
SIWZ.
Zmiany wynikające z woli Zleceniodawcy, będą każdorazowo wyceniane przez Wykonawcę i
wykonywane w drodze osobnych ustaleń.
Oferta powinna zawierać cennik godzinowy Wykonawcy.
Wersja mobilna
13/20
Serwis poza responsive layout, powinien mieć przygotowaną wersję mobilną serwisu z
osobnym layoutem.
Wersja mobilna powinna umożliwiać użytkownikowi przełączenie się z powrotem to
standardowej wersji serwisu, i pamiętać ten wybór.
Wersja dla niepełnosprawnych
Serwis powinien umożliwiać przełączenie serwisu do wersji o wysokim kontraście oraz powinien
wspierać standard Aria, prawidłowo definiować nawigację po elementach serwisu za pomocą
“tabindex” oraz ukrywać w wersji dla niepełnosprawnych zbędne elementy interfejsu, które
mogłyby zaburzać pracę czytników bądź nawigację osób niepełnosprawnych po stronie.
Wersja żałobna serwisu
Serwis powinien zawierać specjalny zestaw styli dla wersji żałobnej serwisu, którą można
będzie włączyć z poziomu panelu administracyjnego systemu.
Wersja żałobna powinna zmieniać także paletę kolorów dla obrazków wyświetlanych na stronie.
Multisite
System powinien obsługiwać wiele domen/subdomen bez konieczności stawiania osobnej kopii
aplikacji. Solr powinien wiedzieć, że dany artykuł jest z konkretnej domeny i umożliwiać
filtrowanie po tym polu.
ACL systemu powinien umożliwiać sterowanie dostępem użytkownika do konkretnej domeny z
różnymi poziomami uprawnień - przykładowo, ten sam użytkownik może być redaktorem
naczelnym jednego z podserwisów, ale na innym serwisie ma pozycję redaktora.
Wielojęzykowość
System powinien umożliwiać tworzenie wielu wersji językowych danej strony. Powinien
pozwalać na tłumaczenie artykułów ale także na pisanie zupełnie niezależnych treści dla danej
wersji językowej.
Interfejs serwisu powinien być w pełni przetłumaczony na języki angielski i polski oraz
umożliwiać tłumaczenie na inne języki.
Serwis powinien w pełni wspierać cyrylicę, języki azjatyckie oraz języki pisane od prawej do
lewej.
Projekty lokalne i submarki
Ponieważ część migrowanych serwisów, to tzw. submarki, przykładowo azja.iam.pl która trafi do
azja.culture.pl, w systemie będą się pojawiały artykuły pisane w wielu językach.
14/20
Projekt zakłada, że na stronie culture.pl będą publikowane artykuły jedynie w językach polskim i
angielskim, a pozostałe języki będą występowały w subdomenach. Jednocześnie, jeden artykuł
może być napisany w kilku językach, i artykuł na culture.pl, który jest tłumaczeniem artykułu np.
z azja.culture.pl, powinien dawać możliwość powiązania tych dwóch tłumaczeń redaktorowi, a
frontend serwisu powinien wyświetlać linki do wersji artykułu we wszystkich możliwych
językach.
W tym przypadku nie jest wymagane automatyczne tworzenie powiązań pomiędzy artykułami,
ponieważ mogą one powstawać w nieskoordynowany sposób. Wystarczy możliwość dodawania
powiązań poprzez autora. Powiązanie to, powinno być automatycznie pokazywane także w
pozostałych wersjach językowych artykułu w panelu edycji wpisu, aby nie trzeba było
wykonywać tej pracy wielokrotnie, osobno dla każdej wersji językowej.
Różnice layoutowe między submarkami
Submarki, co widać na przykładowym projekcie, nie będą znacząco odbiegały wyglądem ani
funkcjonalnościami od serwisu culture.pl.
Zleceniodawca zakłada, że konfiguracja danej submarki, czyli de facto kolejnej domeny
obsługiwanej przez system, będzie pozwalała na konfigurację pewnych elementów graficznych
tej domeny, takich jak:
● kolorystyka
○ globalny kolor czcionki
○ kolory nagłówków
○ kolor tła
● logotyp
● tło strony
● tło nagłówka strony
Każda submarka będzie także posiadała własne menu.
System oceny pracy autorów
Schemat pracy autora treści i rozliczania tej pracy, przedstawia poniższy schemat.
15/20
Szczegółowy opis:
1. Redaktor wciska przycisk „Dodaj nową zawartość strony”. System zapamiętuje godzinę
rozpoczęcia pracy nad artykułem.
2. Redaktor przypisuje do artykułu stosowne kategorie: informacyjny, autorski
3. Redaktor zapisuje artykuł jako szkic. System zapisuje czas spędzony na edycji tej wersji
artykułu oraz liczbę znaków w artykule.
4. Redaktor opuszcza ekran edycji. W przypadku powrotu do edycji artykułu system
zapamięta godzinę rozpoczęcia kolejnej edycji. Jeśli redaktor kontynuuje pracę nad
artykułem czas rozpoczęcia edycji liczy się od momentu rozpoczęcia pracy na szkicu.
16/20
5. Redaktor publikuje artykuł.
○ System jako czas edycji zapisuje całkowity czas pracy nad szkicem (czyli
wcześniej zapisany czas + czas aktualnej edycji). W przypadku, gdy publikacji
dokona inny redaktor niż osoba, która stworzyła szkic autorstwo zostanie
przypisane redaktorowi, który dokonał publikacji.
○ System jako liczbę znaków zapisuje stan na moment publikacji czyli dane
wprowadzone w trakcie pracy nad szkicem oraz te przed samą publikacją.
6. Redaktor dokonuje edycji wcześniej publikowanego artykułu. System zapisuję godzinę
rozpoczęcia edycji.
7. Redaktor modyfikuje artykuł i zapisuje jako szkic lub publikuje. System zapisuje czas
edycji tej wersji artykułu a jako liczbę znaków zapamiętuje różnicę między poprzednią
opublikowaną a aktualną wersją. W przypadku gdy w trakcie edycji redaktor dodał mniej
znaków niż usunął system zapisze to jako 0 znaków. Takie przypadki będą analizowane
oddzielnie na etapie rozliczeń.
8. Na koniec okresu rozliczeniowego redaktor generuje raport.
○ System wyświetli na liście sumę czasu spędzonego na tworzeniu i edycji
artykułów ze wszystkich wersji, które powstały w danym okresie rozliczeniowym.
○ System wyświetli na liście sumę znaków dodanych przez redaktora w trakcie
tworzenia i edycji ze wszystkich wersji, które powstały w danym okresie
rozliczeniowym
9. Redaktor naczelna oznacza wybrane artykuły z raportu jako „autorskie plus” poprzez
nadanie im kategorii „autorskie plus”.
10. Redaktor jest rozliczany z liczby znaków wprowadzonych w danym okresie
rozliczeniowym w kategorii informacyjne, autorskie oraz autorskie plus.
Uprawnienia związane z rozliczaniem czasu pracy
Użytkownicy o roli Redaktor mają uprawnienia do:
● Podglądu swoich statystyk ogólnych (sumy)
● Podglądu swoich statystyk szczegółowych (podział na każdą wersję artykułu)
● Dodawania kategorii: informacyjne, autorskie
Użytkownicy o roli Redaktor-Admin mają uprawnienia do:
● Podglądu statystyk ogólnych (sumy) dowolnego użytkownika
● Podglądu statystyk szczegółowych (podział na każdą wersję artykułu) dowolnego
● użytkownika
● Dodawania kategorii: informacyjne, autorskie, autorskie plus
Statystyki przyrostu treści
System powinien pozwalać na wygenerowanie raportów dotyczących przyrostu treści w
serwisie. Chodzi tutaj o raport, pokazujący liczbę/przyrost treści w danym czasie. Podobnie jak
17/20
w przypadku statystyk autorów, raport przyrostu treści powinien pozwalać na generowanie
raportu z podziałem na:
1. okresy czasu - rok, miesiąc, dzień, zakres daty
2. typy treści
3. język
4. sumaryczna liczba treści
5. przyrost treści
Panel administracyjny
Panel administracyjny systemu musi być funkcjonalny i użyteczny. Przykładem panelu który w
opinii Zleceniodawcy będzie wymagał nieznaczących zmian jest panel systemu drupal.
Wszelkie pola w formularzach służących do tworzenia treści bądź edycji struktury serwisu,
powinny mieć wbudowaną pomoc w trybie “inline” - czyli pojawiające się w dymkach
podpowiedzi dokładnie opisujące co należy wprowadzić w danym polu. Dokumentacja pól nie
może być tylko i wyłącznie zawarta w osobnej sekcji systemu.
Wszelkie pola formularza powinny mieć ustawione konkretne typy i obsługiwać walidację
zarówno na poziomie javascript, jak i po stronie systemu.
Przepływ zadań/schemat publikacji
System powinien umożliwiać zarządzanie przepływem zadań między użytkownikami. Artykuły
przed publikacją, przykładowo wymagają korekty przez korektora, kontroli ze strony tłumacza
oraz zatwierdzenia przez redaktora.
System powinien pozwalać na co najmniej częściową automatyzację tego procesu i
odpowiednie ograniczenie uprawnień do danego artykułu dla danego typu użytkownika.
Właściwości systemu CMS
Zadeklarowany w ofercie system CMS powinien spełniać następujące wymagania:
● Zarówno kod samego systemu jak i kod wszelkich wykorzystanych wtyczek powinien
być dostępny na zasadach Open Source (licencja typu GPL).
● Nie jest dopuszczalne wykorzystanie komercyjnych wtyczek, lub wtyczek, które w wersji
otwartej/darmowej realizują jedynie część funkcjonalności dostępnych w płatnej wersji
wtyczki
● System powinien natywnie wspierać replikację baz danych oraz silniki RBDMSinne niż
MySQL
● System powinien natywnie wspierać mechanizmy key-value store (memcached, redis)
● System powinien posiadać dużą i aktywną społeczność, objawiającą się:
○ dużą liczbą użytkowników społeczności na świecie ( ponad 600000
użytkowników)
○ dużą liczbą aktywnych instalacji w sektorze 10000 największych stron w
zestawieniu serwisu builtwith.com pod adresem http://trends.builtwith.com/cms
18/20
●
●
●
●
●
●
●
●
Wszelkie moduły/pluginy wykorzystane przy wytwarzaniu serwisu, powinny
wykorzystywać warstwę abstrakcji dostarczaną przez CMS
System powinien umożliwiać prowadzenie blogów dla konkretnych użytkowników
System powinien umożliwiać budowanie nielimitowanej liczby hierarchicznych
taksonomii, włącznie z możliwością ustawiania kolejności elementów w drzewie i jego
gałęziach
System powinien umożliwiać tworzenie profili użytkowników, dodawanie do nich pól oraz
pozwalać na kontrolę wyświetlania tych pól za pomocą graficznych paneli zarządzania
tymi polami
System powinien pozwalać na dynamiczne tworzenie widoków dla typów treści:
○ kategorii
○ zawartości stron (dla wszystkich typów zawartości zdefiniowanych w systemie)
○ użytkowników
○ plików
○ danych przesłanych przez formularze
○ w formie:
■tabel,
■list HTML,
■kanałów rss (xml),
■niesformatowanych list
■menu
○ z możliwością:
■sortowania po dacie (asc,desc), tytule, bądź po dowolnym innym polu
wyświetlanym, bądź nie wyświetlanym widoku
■filtrowania po właściwości danego pola
■ustawiania dodatkowego nagłówka i stopki dla danego widoku
■stronnicowania wyników, z kontrolą liczby elementów wyświetlanych na
jednej stronie
■nadpisania wyników działania mechanizmu w przypadku braku wyników
■eksponowania filtrów które zostały użyte do wyświetlenia danego widoku w
celu umożliwienia użytkownikowi zmiany wartości danego filtra
■zapisywania wyników działania mechanizmu w pamięci podręcznej (cache)
System powinien umożliwiać edycję pól formularza dodawania treści, w panelu
zarządzania systemu. Formularze te nie mogą być zakodowane na stałe w systemie.
System powinien umożliwiać zarówno zmianę typu tych pól, jak i ich obowiązkowości,
grupowania oraz położenia w formularzu
System powinien korzystać z najbardziej popularnej na rynku biblioteki javascript jQuery
System powinien pozwalać na granularne zarządzanie uprawnieniami użytkowników, z
podziałem na:
○ możliwość dodawania/usuwania/edycji danych typów treści z podziałem na:
■treści własne
■treści utworzone przez inne osoby
○ poziomy użytkowników, dynamicznie zarządzane z poziomu panelu CMS
19/20
●
○ osobno udzielany dostęp do funkcji każdego modułu/pluginu
System CMS powinien umożliwiać z poziomu panelu administracyjnego, definiowanie
własnych typów treści, wraz z możliwością dodawania do nich własnych, dodatkowych
pól, z których każde może mieć osobne właściwości, nie ograniczane odgórnie przez
typy dostępne początkowo w systemie. To znaczy, że system powinien przykładowo
pozwalać na dodanie typu treści “sylwetka”
○ z wieloma polami typu:
■wartość bool (0/1)
■tekst
■tekst z wypisem
■liczba całkowita
■liczba dziesiętna
■liczba zmiennoprzecinkowa
■lista numeryczna
■lista tekstowa
■obraz
■link
■plik
■odnośnik do terminu (taksonomii)
○ z możliwością wyboru dla każdego pola trybu wprowadzania w formatach:
■lista pojedynczego wyboru
■lista wielokrotnego wyboru
■dowolna wartość
■automatycznie dopełniane pole tekstowe (w przypadku
taksonomii/słowników)
20/20