Пътят на един проект — от подаване на документи от клиента до защитено изтегляне на готовите файлове — точно както е имплементирано в контролерите.
До 20 файла наведнъж (PDF, DOC/DOCX, XLS/XLSX, PNG/JPG, ZIP), макс. 25 MB всеки. Проектът влиза със статус "подаден".
ProjectController@storeВсеки файл получава случайно генерирано UUID име и се пази извън публично достъпните папки — не съществува URL, който просто да отвори файла.
ProjectFileUploadService::storeOne()Служебно табло показва всички проекти с филтър по статус.
Ако статусът е "нужна информация", клиентът качва допълнителни документи и проектът автоматично се връща на "подаден".
ProjectController@storeFilesКрайните документи се маркират отделно като "deliverables" — различни от входните файлове на клиента.
Admin\ProjectController@storeDeliverablesВсяко изтегляне минава през проверка — собственик на проекта ли е заявителят (или е персонал) — преди файлът изобщо да бъде прочетен от диска.
ProjectFileController@downloadProject::scopeForClient) — заявка за чужд проект връща 403, не 404, за да е ясно, че е забрана, не липсващ ресурс.