@hed-hog/contact 0.0.295 → 0.0.297

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.
Files changed (46) hide show
  1. package/dist/contact-type/contact-type.controller.d.ts +1 -1
  2. package/dist/contact-type/contact-type.service.d.ts +1 -1
  3. package/dist/document-type/document-type.controller.d.ts +1 -1
  4. package/dist/document-type/document-type.service.d.ts +1 -1
  5. package/dist/person/dto/reports-query.dto.d.ts +8 -0
  6. package/dist/person/dto/reports-query.dto.d.ts.map +1 -0
  7. package/dist/person/dto/reports-query.dto.js +33 -0
  8. package/dist/person/dto/reports-query.dto.js.map +1 -0
  9. package/dist/person/person.controller.d.ts +67 -10
  10. package/dist/person/person.controller.d.ts.map +1 -1
  11. package/dist/person/person.controller.js +26 -6
  12. package/dist/person/person.controller.js.map +1 -1
  13. package/dist/person/person.service.d.ts +61 -5
  14. package/dist/person/person.service.d.ts.map +1 -1
  15. package/dist/person/person.service.js +656 -298
  16. package/dist/person/person.service.js.map +1 -1
  17. package/dist/person-relation-type/person-relation-type.controller.d.ts +2 -2
  18. package/dist/person-relation-type/person-relation-type.service.d.ts +2 -2
  19. package/hedhog/data/menu.yaml +163 -163
  20. package/hedhog/data/route.yaml +68 -60
  21. package/hedhog/frontend/app/_lib/crm-sections.tsx.ejs +9 -9
  22. package/hedhog/frontend/app/accounts/_components/account-form-sheet.tsx.ejs +573 -573
  23. package/hedhog/frontend/app/accounts/_components/account-types.ts.ejs +9 -9
  24. package/hedhog/frontend/app/accounts/page.tsx.ejs +970 -970
  25. package/hedhog/frontend/app/activities/_components/activity-detail-sheet.tsx.ejs +240 -240
  26. package/hedhog/frontend/app/activities/_components/activity-types.ts.ejs +66 -66
  27. package/hedhog/frontend/app/activities/page.tsx.ejs +460 -460
  28. package/hedhog/frontend/app/dashboard/_components/dashboard-types.ts.ejs +70 -70
  29. package/hedhog/frontend/app/dashboard/page.tsx.ejs +639 -639
  30. package/hedhog/frontend/app/follow-ups/page.tsx.ejs +785 -785
  31. package/hedhog/frontend/app/person/_components/person-interaction-dialog.tsx.ejs +10 -12
  32. package/hedhog/frontend/app/reports/_components/report-types.ts.ejs +84 -0
  33. package/hedhog/frontend/app/reports/page.tsx.ejs +1196 -15
  34. package/hedhog/frontend/messages/en.json +242 -123
  35. package/hedhog/frontend/messages/pt.json +242 -123
  36. package/hedhog/table/crm_activity.yaml +68 -68
  37. package/hedhog/table/crm_stage_history.yaml +34 -0
  38. package/hedhog/table/person_company.yaml +27 -27
  39. package/package.json +9 -9
  40. package/src/person/dto/account.dto.ts +100 -100
  41. package/src/person/dto/activity.dto.ts +54 -54
  42. package/src/person/dto/dashboard-query.dto.ts +25 -25
  43. package/src/person/dto/followup-query.dto.ts +25 -25
  44. package/src/person/dto/reports-query.dto.ts +25 -0
  45. package/src/person/person.controller.ts +176 -159
  46. package/src/person/person.service.ts +4825 -4288
@@ -98,12 +98,11 @@ export function PersonInteractionDialog({
98
98
  if (!person) return;
99
99
  try {
100
100
  setIsSubmitting(true);
101
- await request({
102
- url: `/person/${person.id}/interaction`,
103
- method: 'POST',
104
- data: values,
105
- showErrors: false,
106
- });
101
+ await request({
102
+ url: `/person/${person.id}/interaction`,
103
+ method: 'POST',
104
+ data: values,
105
+ });
107
106
  toast.success(t('interactionSuccess'));
108
107
  onOpenChange(false);
109
108
  onSuccess();
@@ -118,12 +117,11 @@ export function PersonInteractionDialog({
118
117
  if (!person) return;
119
118
  try {
120
119
  setIsSubmitting(true);
121
- await request({
122
- url: `/person/${person.id}/followup`,
123
- method: 'POST',
124
- data: values,
125
- showErrors: false,
126
- });
120
+ await request({
121
+ url: `/person/${person.id}/followup`,
122
+ method: 'POST',
123
+ data: values,
124
+ });
127
125
  toast.success(t('followupSuccess'));
128
126
  onOpenChange(false);
129
127
  onSuccess();
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+
3
+ import type {
4
+ PersonLifecycleStage,
5
+ PersonSource,
6
+ } from '../../person/_components/person-types';
7
+
8
+ export type ReportGroupBy = 'day' | 'week' | 'month' | 'year';
9
+
10
+ export type ReportSummary = {
11
+ new_leads: number;
12
+ qualified_moves: number;
13
+ customer_moves: number;
14
+ lost_moves: number;
15
+ interactions: number;
16
+ followups_completed: number;
17
+ conversion_rate: number;
18
+ };
19
+
20
+ export type ReportTimelineItem = {
21
+ period: string;
22
+ label: string;
23
+ } & ReportSummary;
24
+
25
+ export type ReportBreakdownBucket<T extends string> = {
26
+ key: T;
27
+ total: number;
28
+ };
29
+
30
+ export type ReportOwnerPerformanceItem = {
31
+ owner_user_id: number;
32
+ owner_name: string;
33
+ interactions: number;
34
+ followups_completed: number;
35
+ customer_moves: number;
36
+ };
37
+
38
+ export type ReportActivityType =
39
+ | 'call'
40
+ | 'email'
41
+ | 'meeting'
42
+ | 'whatsapp'
43
+ | 'task'
44
+ | 'note';
45
+
46
+ export type ReportResponse = {
47
+ summary: ReportSummary;
48
+ timeline: ReportTimelineItem[];
49
+ breakdowns: {
50
+ source: ReportBreakdownBucket<PersonSource>[];
51
+ current_stage: ReportBreakdownBucket<PersonLifecycleStage>[];
52
+ activity_type: ReportBreakdownBucket<ReportActivityType>[];
53
+ };
54
+ owners: ReportOwnerPerformanceItem[];
55
+ table: ReportTimelineItem[];
56
+ };
57
+
58
+ export const REPORT_STAGE_ORDER: PersonLifecycleStage[] = [
59
+ 'new',
60
+ 'contacted',
61
+ 'qualified',
62
+ 'proposal',
63
+ 'negotiation',
64
+ 'customer',
65
+ 'lost',
66
+ ];
67
+
68
+ export const REPORT_SOURCE_ORDER: PersonSource[] = [
69
+ 'website',
70
+ 'referral',
71
+ 'social',
72
+ 'inbound',
73
+ 'outbound',
74
+ 'other',
75
+ ];
76
+
77
+ export const REPORT_ACTIVITY_ORDER: ReportActivityType[] = [
78
+ 'call',
79
+ 'email',
80
+ 'meeting',
81
+ 'whatsapp',
82
+ 'task',
83
+ 'note',
84
+ ];