По договоренности
Нужна штука наподобие ietherpad.com, только без возможности редактирования чужого текста. Это необходимо для того, чтобы реализовать возможность заполнения одной таблицы несколькими пользователями одновременно. Недостаток сервисов типа ietherpad.com – в том, что пользователь может стереть текст, написанный другими до него, что открывает возможность для мошенничества и присваивания результатов чужого труда. Есть разделение пользователей на админа и исполнителей. Администратор обладает правом создавать таблицу и заголовки столбцов. Также должна быть предусмотрена функция учёта выполненной работы, например, сколько столбцов заполнил каждый из исполнителей.
Пример
Наполнение каталога интернет-магазина вручную параллельно несколькими сотрудниками.
Есть таблица spreadsheets.google с исходной инфой о товарах (артикул, название, название файла с фотографией, цена). Нужно путем копирования из таблицы вручную забить товары в каталог сайта. Всего 1000 товаров, соответственно в таблице 1000 строк. Каждая строка товар.
Задача рапределяется между 10 сотрудниками. Оплата производится за количество скопированных из таблицы товаров. Кто больше скопирует товаров, тот больше и заработает. Сотрудник сам выбирает строчку в таблице для копирования на сайт (из тех, что еще не скопированы). После создания товара на сайте, сотрудник в таблице в строчке со скопированным товаром ставит свою фамилию.
Когда все товары добавлены, организатор работ, подсчитывает, какой сотрудник сколько товаров добавил и оплачивает работы.
Проблема, которую необходимо решить.
1. Недобросовестный сотрудник заменяет чужую фамилию в строчке со скопированным товаром на свою. В результате злоумышленник ни за что получит оплату, а несчастный добросовестный сотрудник недополучит оплату за выполненную но неучтенную работу.
2. Создание товара в каталоге занимает в среднем 3-4 минуты. За создание одного товара могут приняться несколько человек одновременно и все не будут знать, что кто-то еще создает данный товар в этот момент.
Функциональные требования:
1. Программа работает онлайн через браузер, чтобы все сотрудники могли отмечать, кто какую задачку сделал в режиме реального времени.
2. Как только кто-то взялся за задачку, все остальные должны видеть, что эта задачка в работе.
3. Как только кто-то выполнил задачку, все должны видеть, что эта задачка выполнена.
4. Никто не может указать, что он выполнил задачку, которая был выполнена другим человеком.
5. Организатор работ может видеть статистику, кто сколько задачек сделал.
6. Сотрудник может видеть, сколько задачек он сделал.
7. Перечень, названия и тип полей задается организатором работы до начала работ.
8. Организатор может загрузить исходные данные в таблицу, например из CSV файла в кодировке UTF-8.
9. В таблице есть данные, загруженные организатором, а есть поля для ввода сотрудником. Пример: организатор загрузил артикулы, названия и цены товаров, а сотрудники должны ввести url страницы созданного в каталоге товара.
10. Организатор не является специалистом в SQL, ему нужен минимальный интерфейс для задания таблицы.
Нефункциональные требования:
1. PHP и документирование кода + сопутствующая документация (схема БД с комментариями, документация к программе в виде диаграмм хоть карандашом на бумажке и отфоткать, (“программа документирована на языке PHP” не проходит.), потому что есть другие потребности, которые придется также автоматизировать и надстраивать.
Фремфорки по желанию разработчика.
2. Красота не особенно важна, но отрыжкой интерфейс быть не должен. Сотруднику должно быть понятно, что еще не сделано, а что сделано, как взять задачку на выполнение и как отметить, что он выполнил задачку.
3. Использовать шаблнизаторы не обязательно.
4. Использовать CSS желательно, но можно использовать html-таблицы что будет проще.
5. Apache/2.2.14 (Ubuntu) Server
MySQL 5.1.41
PHP Version 5.3.2-1ubuntu4.9
Дополнительные соображения:
1. Организатор может создать CSV файл, первая строка которого будет содержать заголовки. Поэтому количество и перечень столбцов в таблице с исходными данными можно задать при загрузке файла с исходными данными.
2. Сотрудник перед началом работы заходит в программу, вводит свои ФИО (чтобы не делать регистрации, восстановления пароля, защиты от ботов и прочее, что не очень актуально). Сложно представить ситуацию, когда кто-то введет чужие ФИО и будет выполнять работу, не получив в последствии гонорар.
3. Когда сотруник выполнил задачку, он может просто отметить “Сделано”, система все равно знает, его фамилию. Чтобы ни он ни злоумышленник не вводили фамилию.