Монолитное веб-приложение для централизованного учёта дефектов: регистрация, назначение исполнителей, контроль статусов, аналитика и отчётность.
npm install
npm run prisma:migrate
npm run seed
npm run devПриложение доступно на http://localhost:3000.
admin@local.com/admin123(менеджер)eng@local.com/eng12345(инженер)
npm run dev— запуск в режиме разработкиnpm run build/npm start— сборка и запуск прод-версииnpm run seed— заполнение демо-данныхnpm run test— Vitest (≥5 unit, ≥2 integration)npm run bench— нагрузочный тест (autocannon)
docs/testing-plan.md— план тестированияdocs/DEPLOY.md— инструкция по деплоюdocs/er-diagram.mmd— ER-диаграмма (Mermaid)
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#0d47a1'}}}%%
erDiagram
USER ||--o{ DEFECT : "reported"
USER ||--o{ DEFECT : "assigned"
USER ||--o{ COMMENT : "writes"
USER ||--o{ ATTACHMENT : "uploads"
USER ||--o{ DEFECT_HISTORY : "changes"
PROJECT ||--o{ STAGE : "has"
PROJECT ||--o{ DEFECT : "contains"
STAGE ||--o{ DEFECT : "groups"
DEFECT ||--o{ COMMENT : "has"
DEFECT ||--o{ ATTACHMENT : "has"
DEFECT ||--o{ DEFECT_HISTORY : "logs"
USER {
string id PK
string email UK
string passwordHash
string name
enum role
datetime createdAt
datetime updatedAt
}
PROJECT {
string id PK
string name
string description
datetime createdAt
datetime updatedAt
}
STAGE {
string id PK
string name
int position
string projectId FK
}
DEFECT {
string id PK
string title
string description
enum priority
enum status
datetime dueAt
datetime createdAt
datetime updatedAt
string projectId FK
string stageId FK
string reporterId FK
string assigneeId FK
}
COMMENT {
string id PK
string content
datetime createdAt
string defectId FK
string authorId FK
}
ATTACHMENT {
string id PK
string originalName
string storedName
string mimeType
int size
string path
datetime createdAt
string defectId FK
string uploadedById FK
}
DEFECT_HISTORY {
string id PK
string field
string oldValue
string newValue
enum fromStatus
enum toStatus
string note
datetime createdAt
string defectId FK
string changedById FK
}
- Node.js, Express 5, TypeScript
- Prisma + SQLite
- EJS + EJS-mate (шаблоны)
- Chart.js для аналитики
- Helmet, CSRF, bcrypt, multer
- Vitest + Supertest (тесты)
src/app.ts— инициализация сервераsrc/ui/*— маршруты (auth, projects, defects, reports)src/views/*— EJS-шаблоны интерфейсаprisma/schema.prisma— описание БДprisma/seed.ts— сидинг демо-данныхtests/*— unit и integration тесты