1"""
2Invoicer
3
4Описание:
5 Invoicer е програма, чиято основна функция е генерирантео на фактури за нуждите на бизнеса. В основата си, тя е
6 WEB приложение, в което потребителят може да създава различни клиенти, на които в последствие да генерира фактури
7 през интерфейса на приложението, които могат да бъдат изтеглени в PDF формат. Наличието на тази информация пък дава
8 възможност за генериране на различни статистики и отчети, които да помогнат на бизнеса да се развива. Това включва
9 оборот на даден клиент, общи приходи за даден период, както и други.
10
11Функционалности:
12 Започваме с основните функционалности като вход и регистрация на потребители. Всеки регистриран потребител може да
13 създава клиенти, като им задава име, адрес, ЕИК и други. Предвижда се автоматично попълване на данните за клиентите
14 на база техния ЕИК чрез API. На база даден клиент, потребителят може да създава фактура за него, като въвежда
15 различните позиции и техните цени. След като е създал фактурата, потребителят може да я изтегли в PDF формат. Това е
16 доста не сложен процес, тъй като фактурата е базирана на xlsx темплейт, който всеки потребител може да си видоизмени
17 и използва, за да може форматът на фактурата да съответства на нуждите на бизнеса. В последствие този темплейт се
18 трансформира в PDF файл, който потребителят може да изтегли. Всеки потребител може да види списък с всички фактури,
19 както и тяхната стойност. Предвижда се и възможност за филтриране на фактурите по различни критерии, като дата,
20 стойност и други. Потребителят може да види и статистика за всички фактури, като оборот на даден клиент, общи приходи
21 за даден период и други. Предвижда се и възможност за изтегляне на статистиките в csv формат.
22
23Пътна карта :D
24 1. Създаване на базова структура на проекта, съдържаща основните модели (потребител, клиент, фактура)
25 2. Създаване на базовите CRUD операции за моделите
26 3. Разработване на функционалност за генериране на фактури
27 4. Интегриране на API за автоматично попълване на данни за клиентите
28 5. Разработване на статистики и отчети
29 6. Разработване на функционалност за филтриране на фактурите
30 7. Разработване на функционалност за изтегляне статистики в CSV формат
31
32 Разбира се, всички стъпки от 2. нататък включват и разработване на тестове за съответните функционалности, за да се
33 гарантира, че всичко работи коректно и няма грешки.
34
35Времеоценка:
36 1. Създаване на базова структура на проекта - 2 часа
37 2. Създаване на базовите CRUD операции за моделите - 4 часа
38 3. Разработване на функционалност за генериране на фактури - 10 часа
39 4. Интегриране на API за автоматично попълване на данни за клиентите - 8 часа
40 5. Разработване на статистики и отчети - 10 часа
41 6. Разработване на функционалност за филтриране на фактурите - 4 часа
42 7. Разработване на функционалност за изтегляне статистики в CSV формат - 4 часа
43 8. Подобряване на дизайна на приложението - 4 часа
44
45 Общо: 46 часа
46
47Технологии:
48 - Django
49 - Django REST Framework
50 - xlsxwriter
51 - pdfkit
52 - Bootstrap
53 - jQuery
54 - HTML
55 - CSS
56 - JavaScript
57 - Docker
58 - Docker Compose
59 - PostgreSQL
60 - Git
61 - Railway
62"""
----------------------------------------------------------------------
Ran 0 tests in 0.000s
NO TESTS RAN
Виктор Бечев
03.12.2024 13:09Искаме да видим достатъчно [Python](https://www.youtube.com/watch?v=PAk6KVsJ-l8) код, че да можем да оценим как пишеш [Python](https://www.youtube.com/watch?v=djKPvXDwXcs).
Не мога да ти дам мерило откъм редове, защото не оценяваме на написан ред, но за сравнение - последните домашни са средно около 130-150 реда код.
Ако имаш прекрасно изглеждащ, четим код, добър дизайн и ясна разбивка на атомарни части и кодът ти има прилично ниво на complexity, а не просто 40% принтове в конзолата и 40% викания на гугълско API, да речем, и за финал си написал тестове върху всичко, което може / е важно да бъде тествано - ще оценим проектът ти високо, без да броим дали е 300 или 3000 реда код.
Та, не мога да ти дам еднозначен отговор, we go by feeling. Работим с парчетата функционалност, които сте описали в това задание, пречупваме ги през призмата на знанията, които ние притежаваме и се опитваме да апроксимираме сложността по този начин.
Конкретно за твоя проект, звучи ми сякаш за точка 3 от роудмапа е най-сложния фийчър, но бих казал, че трябва да наблегнеш на частта за customisation на темплейта - иначе 90% от работата ще я свърши фреймуърка _(ако например всеки път генерираш един и същ вид output)_, а ние не можем да преценим качеството на кода ти по 30 реда call-ове към pdfkit.
|
Тихомир Галов
03.12.2024 09:47Да ясно, нямам проблем с това. Въпросът ми по - скоро е кога е достатъчно мащабен проектът?
|
Виктор Бечев
02.12.2024 23:49Супер е, че си направил доста подробен рисърч.
Имай предвид, че е възможно проектът да не се бори за максимален брой точки ако накрая се окаже 200 реда не-генериран от Django код.
Казвам го, защото ако модулите и API-тата ти свършат 90% от работата, накрая ще останеш само с call-ове към тях и малко view-та, модели и темплейти.
Не казвам, че това със сигурност ще е така, просто word of caution - като понапишеш част от него ще прецениш дали ще ти трябват още фийчъри или ще се окаже достатъчно мащабен и така.
|