@hed-hog/operations 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/operations.module.d.ts +3 -0
- package/dist/operations.module.d.ts.map +1 -0
- package/dist/operations.module.js +28 -0
- package/dist/operations.module.js.map +1 -0
- package/hedhog/data/menu.yaml +132 -0
- package/hedhog/data/role.yaml +7 -0
- package/hedhog/data/route.yaml +80 -0
- package/hedhog/frontend/app/_components/allocation-calendar.tsx.ejs +56 -0
- package/hedhog/frontend/app/_components/kanban-board.tsx.ejs +83 -0
- package/hedhog/frontend/app/_components/operations-header.tsx.ejs +29 -0
- package/hedhog/frontend/app/_components/section-card.tsx.ejs +32 -0
- package/hedhog/frontend/app/_components/status-badge.tsx.ejs +15 -0
- package/hedhog/frontend/app/_components/timesheet-entry-dialog.tsx.ejs +142 -0
- package/hedhog/frontend/app/_lib/hooks/use-operations-data.ts.ejs +41 -0
- package/hedhog/frontend/app/_lib/mocks/allocations.mock.ts.ejs +74 -0
- package/hedhog/frontend/app/_lib/mocks/contracts.mock.ts.ejs +74 -0
- package/hedhog/frontend/app/_lib/mocks/projects.mock.ts.ejs +60 -0
- package/hedhog/frontend/app/_lib/mocks/tasks.mock.ts.ejs +88 -0
- package/hedhog/frontend/app/_lib/mocks/timesheets.mock.ts.ejs +84 -0
- package/hedhog/frontend/app/_lib/mocks/users.mock.ts.ejs +67 -0
- package/hedhog/frontend/app/_lib/services/contracts.service.ts.ejs +10 -0
- package/hedhog/frontend/app/_lib/services/projects.service.ts.ejs +10 -0
- package/hedhog/frontend/app/_lib/services/tasks.service.ts.ejs +10 -0
- package/hedhog/frontend/app/_lib/services/timesheets.service.ts.ejs +10 -0
- package/hedhog/frontend/app/_lib/types/operations.ts.ejs +95 -0
- package/hedhog/frontend/app/_lib/utils/format.ts.ejs +25 -0
- package/hedhog/frontend/app/_lib/utils/metrics.ts.ejs +103 -0
- package/hedhog/frontend/app/_lib/utils/status.ts.ejs +80 -0
- package/hedhog/frontend/app/allocations/page.tsx.ejs +99 -0
- package/hedhog/frontend/app/approvals/page.tsx.ejs +147 -0
- package/hedhog/frontend/app/contracts/[id]/page.tsx.ejs +108 -0
- package/hedhog/frontend/app/contracts/page.tsx.ejs +124 -0
- package/hedhog/frontend/app/layout.tsx.ejs +9 -0
- package/hedhog/frontend/app/page.tsx.ejs +177 -0
- package/hedhog/frontend/app/projects/[id]/page.tsx.ejs +186 -0
- package/hedhog/frontend/app/projects/page.tsx.ejs +111 -0
- package/hedhog/frontend/app/tasks/page.tsx.ejs +47 -0
- package/hedhog/frontend/app/timesheets/page.tsx.ejs +126 -0
- package/hedhog/frontend/messages/en.json +142 -0
- package/hedhog/frontend/messages/pt.json +142 -0
- package/package.json +37 -0
- package/src/index.ts +1 -0
- package/src/language/en.json +8 -0
- package/src/language/pt.json +8 -0
- package/src/operations.module.ts +15 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"DashboardPage": {
|
|
3
|
+
"title": "Operations Dashboard",
|
|
4
|
+
"description": "Track delivery health, utilization, approvals, and team throughput.",
|
|
5
|
+
"breadcrumb": "Dashboard",
|
|
6
|
+
"cards": {
|
|
7
|
+
"activeProjects": "Total Active Projects",
|
|
8
|
+
"loggedHours": "Hours Logged This Month",
|
|
9
|
+
"pendingHours": "Hours Pending Approval",
|
|
10
|
+
"revenue": "Revenue",
|
|
11
|
+
"utilization": "Team Utilization"
|
|
12
|
+
},
|
|
13
|
+
"charts": {
|
|
14
|
+
"hoursByProject": "Hours by Project",
|
|
15
|
+
"hoursByProjectDescription": "Logged effort grouped by active engagements.",
|
|
16
|
+
"hoursByUser": "Hours by User",
|
|
17
|
+
"hoursByUserDescription": "Delivery effort by consultant.",
|
|
18
|
+
"approvalStatus": "Approval Status",
|
|
19
|
+
"approvalStatusDescription": "Approved, pending, and rejected entries.",
|
|
20
|
+
"weeklyTrend": "Weekly Timesheet Trend",
|
|
21
|
+
"weeklyTrendDescription": "Recent weekly delivery cadence."
|
|
22
|
+
},
|
|
23
|
+
"recentTable": {
|
|
24
|
+
"title": "Recent Timesheet Entries",
|
|
25
|
+
"description": "Latest operational logging activity.",
|
|
26
|
+
"user": "User",
|
|
27
|
+
"project": "Project",
|
|
28
|
+
"task": "Task",
|
|
29
|
+
"hours": "Hours",
|
|
30
|
+
"status": "Status"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"ContractsPage": {
|
|
34
|
+
"title": "Contracts",
|
|
35
|
+
"description": "Review commercial agreements, caps, and linked delivery streams.",
|
|
36
|
+
"breadcrumb": "Contracts",
|
|
37
|
+
"tableTitle": "Contract Registry",
|
|
38
|
+
"tableDescription": "Static mock list ready for future API pagination and filters.",
|
|
39
|
+
"searchPlaceholder": "Search contract or client...",
|
|
40
|
+
"filters": {
|
|
41
|
+
"all": "All statuses",
|
|
42
|
+
"active": "Active",
|
|
43
|
+
"renewal": "Renewal",
|
|
44
|
+
"expired": "Expired",
|
|
45
|
+
"draft": "Draft"
|
|
46
|
+
},
|
|
47
|
+
"columns": {
|
|
48
|
+
"name": "Contract Name",
|
|
49
|
+
"client": "Client",
|
|
50
|
+
"type": "Type",
|
|
51
|
+
"startDate": "Start Date",
|
|
52
|
+
"endDate": "End Date",
|
|
53
|
+
"hourRate": "Hour Rate",
|
|
54
|
+
"hourLimit": "Hour Limit",
|
|
55
|
+
"status": "Status"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"ProjectsPage": {
|
|
59
|
+
"title": "Projects",
|
|
60
|
+
"description": "Navigate portfolio health, progress, and staffing at a glance.",
|
|
61
|
+
"breadcrumb": "Projects",
|
|
62
|
+
"gridTitle": "Project Portfolio",
|
|
63
|
+
"gridDescription": "Cards mirror a SaaS delivery overview and link to project details.",
|
|
64
|
+
"searchPlaceholder": "Search project or client...",
|
|
65
|
+
"progress": "Progress",
|
|
66
|
+
"teamMembers": "Team Members",
|
|
67
|
+
"hoursLogged": "Hours Logged",
|
|
68
|
+
"startDate": "Start Date",
|
|
69
|
+
"endDate": "End Date"
|
|
70
|
+
},
|
|
71
|
+
"AllocationsPage": {
|
|
72
|
+
"title": "Allocations",
|
|
73
|
+
"description": "Track weekly capacity, staffing coverage, and allocation windows.",
|
|
74
|
+
"breadcrumb": "Allocations",
|
|
75
|
+
"tableTitle": "Allocation Matrix",
|
|
76
|
+
"tableDescription": "Delivery allocation snapshot by user and project.",
|
|
77
|
+
"searchPlaceholder": "Search user or project...",
|
|
78
|
+
"columns": {
|
|
79
|
+
"user": "User",
|
|
80
|
+
"role": "Role",
|
|
81
|
+
"project": "Project",
|
|
82
|
+
"weeklyHours": "Weekly Hours",
|
|
83
|
+
"allocation": "Allocation %",
|
|
84
|
+
"startDate": "Start Date",
|
|
85
|
+
"endDate": "End Date"
|
|
86
|
+
},
|
|
87
|
+
"calendarTitle": "Allocation Calendar View",
|
|
88
|
+
"calendarDescription": "Mock weekly planner for future scheduling APIs."
|
|
89
|
+
},
|
|
90
|
+
"TasksPage": {
|
|
91
|
+
"title": "Tasks / Kanban",
|
|
92
|
+
"description": "Follow execution flow from backlog to done with realistic mock tasks.",
|
|
93
|
+
"breadcrumb": "Tasks",
|
|
94
|
+
"boardTitle": "Kanban Board",
|
|
95
|
+
"boardDescription": "Operational work items grouped by delivery stage.",
|
|
96
|
+
"searchPlaceholder": "Search title, project, or label..."
|
|
97
|
+
},
|
|
98
|
+
"TimesheetsPage": {
|
|
99
|
+
"title": "Timesheets",
|
|
100
|
+
"description": "Manage weekly entries, summaries, and approvals with a mock-first flow.",
|
|
101
|
+
"breadcrumb": "Timesheets",
|
|
102
|
+
"summary": {
|
|
103
|
+
"totalHours": "Total Hours",
|
|
104
|
+
"dailyTotals": "Daily Totals",
|
|
105
|
+
"weeklyTotal": "Weekly Total"
|
|
106
|
+
},
|
|
107
|
+
"gridTitle": "Weekly Timesheet Grid",
|
|
108
|
+
"gridDescription": "Entries are static for now but use a replaceable service layer.",
|
|
109
|
+
"searchPlaceholder": "Search user, project, task, or description...",
|
|
110
|
+
"columns": {
|
|
111
|
+
"date": "Date",
|
|
112
|
+
"user": "User",
|
|
113
|
+
"project": "Project",
|
|
114
|
+
"task": "Task",
|
|
115
|
+
"hours": "Hours",
|
|
116
|
+
"description": "Description",
|
|
117
|
+
"status": "Status"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"ApprovalsPage": {
|
|
121
|
+
"title": "Approvals",
|
|
122
|
+
"description": "Manager queue for timesheet review and approval decisions.",
|
|
123
|
+
"breadcrumb": "Approvals",
|
|
124
|
+
"cards": {
|
|
125
|
+
"pending": "Pending",
|
|
126
|
+
"approved": "Approved",
|
|
127
|
+
"rejected": "Rejected"
|
|
128
|
+
},
|
|
129
|
+
"queueTitle": "Approval Queue",
|
|
130
|
+
"queueDescription": "Static approval actions change local UI state only.",
|
|
131
|
+
"searchPlaceholder": "Search user, project, or description...",
|
|
132
|
+
"columns": {
|
|
133
|
+
"user": "User",
|
|
134
|
+
"project": "Project",
|
|
135
|
+
"date": "Date",
|
|
136
|
+
"hours": "Hours",
|
|
137
|
+
"description": "Description",
|
|
138
|
+
"status": "Status",
|
|
139
|
+
"actions": "Actions"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"DashboardPage": {
|
|
3
|
+
"title": "Dashboard de Operacoes",
|
|
4
|
+
"description": "Acompanhe saude da entrega, utilizacao, aprovacoes e throughput da equipe.",
|
|
5
|
+
"breadcrumb": "Dashboard",
|
|
6
|
+
"cards": {
|
|
7
|
+
"activeProjects": "Projetos Ativos",
|
|
8
|
+
"loggedHours": "Horas Lancadas no Mes",
|
|
9
|
+
"pendingHours": "Horas Pendentes de Aprovacao",
|
|
10
|
+
"revenue": "Receita",
|
|
11
|
+
"utilization": "Utilizacao da Equipe"
|
|
12
|
+
},
|
|
13
|
+
"charts": {
|
|
14
|
+
"hoursByProject": "Horas por Projeto",
|
|
15
|
+
"hoursByProjectDescription": "Esforco lancado por engagement ativo.",
|
|
16
|
+
"hoursByUser": "Horas por Usuario",
|
|
17
|
+
"hoursByUserDescription": "Esforco de entrega por consultor.",
|
|
18
|
+
"approvalStatus": "Status de Aprovacao",
|
|
19
|
+
"approvalStatusDescription": "Entradas aprovadas, pendentes e rejeitadas.",
|
|
20
|
+
"weeklyTrend": "Tendencia Semanal de Timesheets",
|
|
21
|
+
"weeklyTrendDescription": "Cadencia recente de entrega."
|
|
22
|
+
},
|
|
23
|
+
"recentTable": {
|
|
24
|
+
"title": "Entradas Recentes de Timesheet",
|
|
25
|
+
"description": "Ultima atividade de apontamento operacional.",
|
|
26
|
+
"user": "Usuario",
|
|
27
|
+
"project": "Projeto",
|
|
28
|
+
"task": "Tarefa",
|
|
29
|
+
"hours": "Horas",
|
|
30
|
+
"status": "Status"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"ContractsPage": {
|
|
34
|
+
"title": "Contratos",
|
|
35
|
+
"description": "Revise acordos comerciais, limites e frentes de entrega vinculadas.",
|
|
36
|
+
"breadcrumb": "Contratos",
|
|
37
|
+
"tableTitle": "Cadastro de Contratos",
|
|
38
|
+
"tableDescription": "Lista mock estatica pronta para paginacao e filtros futuros.",
|
|
39
|
+
"searchPlaceholder": "Buscar contrato ou cliente...",
|
|
40
|
+
"filters": {
|
|
41
|
+
"all": "Todos os status",
|
|
42
|
+
"active": "Ativo",
|
|
43
|
+
"renewal": "Renovacao",
|
|
44
|
+
"expired": "Expirado",
|
|
45
|
+
"draft": "Rascunho"
|
|
46
|
+
},
|
|
47
|
+
"columns": {
|
|
48
|
+
"name": "Nome do Contrato",
|
|
49
|
+
"client": "Cliente",
|
|
50
|
+
"type": "Tipo",
|
|
51
|
+
"startDate": "Data Inicial",
|
|
52
|
+
"endDate": "Data Final",
|
|
53
|
+
"hourRate": "Valor Hora",
|
|
54
|
+
"hourLimit": "Limite de Horas",
|
|
55
|
+
"status": "Status"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"ProjectsPage": {
|
|
59
|
+
"title": "Projetos",
|
|
60
|
+
"description": "Navegue pela saude do portfolio, progresso e alocacao da equipe.",
|
|
61
|
+
"breadcrumb": "Projetos",
|
|
62
|
+
"gridTitle": "Portfolio de Projetos",
|
|
63
|
+
"gridDescription": "Cards espelham uma visao de delivery SaaS e levam ao detalhe.",
|
|
64
|
+
"searchPlaceholder": "Buscar projeto ou cliente...",
|
|
65
|
+
"progress": "Progresso",
|
|
66
|
+
"teamMembers": "Membros da Equipe",
|
|
67
|
+
"hoursLogged": "Horas Lancadas",
|
|
68
|
+
"startDate": "Data Inicial",
|
|
69
|
+
"endDate": "Data Final"
|
|
70
|
+
},
|
|
71
|
+
"AllocationsPage": {
|
|
72
|
+
"title": "Alocacoes",
|
|
73
|
+
"description": "Acompanhe capacidade semanal, cobertura de staffing e janelas de alocacao.",
|
|
74
|
+
"breadcrumb": "Alocacoes",
|
|
75
|
+
"tableTitle": "Matriz de Alocacao",
|
|
76
|
+
"tableDescription": "Fotografia das alocacoes por usuario e projeto.",
|
|
77
|
+
"searchPlaceholder": "Buscar usuario ou projeto...",
|
|
78
|
+
"columns": {
|
|
79
|
+
"user": "Usuario",
|
|
80
|
+
"role": "Funcao",
|
|
81
|
+
"project": "Projeto",
|
|
82
|
+
"weeklyHours": "Horas Semanais",
|
|
83
|
+
"allocation": "Alocacao %",
|
|
84
|
+
"startDate": "Data Inicial",
|
|
85
|
+
"endDate": "Data Final"
|
|
86
|
+
},
|
|
87
|
+
"calendarTitle": "Calendario de Alocacao",
|
|
88
|
+
"calendarDescription": "Planejador semanal mock para futuras APIs de scheduling."
|
|
89
|
+
},
|
|
90
|
+
"TasksPage": {
|
|
91
|
+
"title": "Tarefas / Kanban",
|
|
92
|
+
"description": "Acompanhe a execucao do backlog ao done com tarefas mock realistas.",
|
|
93
|
+
"breadcrumb": "Tarefas",
|
|
94
|
+
"boardTitle": "Quadro Kanban",
|
|
95
|
+
"boardDescription": "Itens operacionais agrupados por etapa de entrega.",
|
|
96
|
+
"searchPlaceholder": "Buscar titulo, projeto ou label..."
|
|
97
|
+
},
|
|
98
|
+
"TimesheetsPage": {
|
|
99
|
+
"title": "Timesheets",
|
|
100
|
+
"description": "Gerencie lancamentos semanais, resumos e aprovacoes em fluxo mock.",
|
|
101
|
+
"breadcrumb": "Timesheets",
|
|
102
|
+
"summary": {
|
|
103
|
+
"totalHours": "Total de Horas",
|
|
104
|
+
"dailyTotals": "Totais Diarios",
|
|
105
|
+
"weeklyTotal": "Total Semanal"
|
|
106
|
+
},
|
|
107
|
+
"gridTitle": "Grade Semanal de Timesheets",
|
|
108
|
+
"gridDescription": "Entradas sao estaticas por enquanto, mas usam camada de servico substituivel.",
|
|
109
|
+
"searchPlaceholder": "Buscar usuario, projeto, tarefa ou descricao...",
|
|
110
|
+
"columns": {
|
|
111
|
+
"date": "Data",
|
|
112
|
+
"user": "Usuario",
|
|
113
|
+
"project": "Projeto",
|
|
114
|
+
"task": "Tarefa",
|
|
115
|
+
"hours": "Horas",
|
|
116
|
+
"description": "Descricao",
|
|
117
|
+
"status": "Status"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"ApprovalsPage": {
|
|
121
|
+
"title": "Aprovacoes",
|
|
122
|
+
"description": "Fila gerencial para revisao e decisao sobre timesheets.",
|
|
123
|
+
"breadcrumb": "Aprovacoes",
|
|
124
|
+
"cards": {
|
|
125
|
+
"pending": "Pendentes",
|
|
126
|
+
"approved": "Aprovadas",
|
|
127
|
+
"rejected": "Rejeitadas"
|
|
128
|
+
},
|
|
129
|
+
"queueTitle": "Fila de Aprovacao",
|
|
130
|
+
"queueDescription": "Acoes mock alteram apenas o estado local da interface.",
|
|
131
|
+
"searchPlaceholder": "Buscar usuario, projeto ou descricao...",
|
|
132
|
+
"columns": {
|
|
133
|
+
"user": "Usuario",
|
|
134
|
+
"project": "Projeto",
|
|
135
|
+
"date": "Data",
|
|
136
|
+
"hours": "Horas",
|
|
137
|
+
"description": "Descricao",
|
|
138
|
+
"status": "Status",
|
|
139
|
+
"actions": "Acoes"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hed-hog/operations",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"@nestjs/common": "*",
|
|
8
|
+
"@nestjs/config": "^4.0.2",
|
|
9
|
+
"@nestjs/core": "^11",
|
|
10
|
+
"@nestjs/jwt": "^11",
|
|
11
|
+
"@nestjs/mapped-types": "*",
|
|
12
|
+
"@hed-hog/api": "0.0.4",
|
|
13
|
+
"@hed-hog/api-locale": "0.0.13",
|
|
14
|
+
"@hed-hog/api-prisma": "0.0.5",
|
|
15
|
+
"@hed-hog/api-types": "0.0.1",
|
|
16
|
+
"@hed-hog/api-pagination": "0.0.6"
|
|
17
|
+
},
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"import": "./dist/index.js",
|
|
21
|
+
"require": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./package.json": "./package.json"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"src",
|
|
28
|
+
"hedhog"
|
|
29
|
+
],
|
|
30
|
+
"scripts": {
|
|
31
|
+
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\"",
|
|
32
|
+
"prebuild": "pnpm exec ts-node ../../scripts/build-dependencies.ts libraries/operations",
|
|
33
|
+
"build": "tsc --project tsconfig.production.json",
|
|
34
|
+
"patch": "pnpm exec ts-node ../../scripts/patch.ts libraries/operations",
|
|
35
|
+
"prod": "pnpm run patch && pnpm run build && pnpm publish --access public --no-git-checks"
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './operations.module';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { forwardRef, Module } from '@nestjs/common';
|
|
2
|
+
import { ConfigModule } from '@nestjs/config';
|
|
3
|
+
import { LocaleModule } from '@hed-hog/api-locale';
|
|
4
|
+
import { PaginationModule } from '@hed-hog/api-pagination';
|
|
5
|
+
import { PrismaModule } from '@hed-hog/api-prisma';
|
|
6
|
+
|
|
7
|
+
@Module({
|
|
8
|
+
imports: [
|
|
9
|
+
ConfigModule.forRoot(),
|
|
10
|
+
forwardRef(() => PaginationModule),
|
|
11
|
+
forwardRef(() => PrismaModule),
|
|
12
|
+
forwardRef(() => LocaleModule)
|
|
13
|
+
]
|
|
14
|
+
})
|
|
15
|
+
export class OperationsModule {}
|