@theromans/convex-dobty 0.1.0

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 (133) hide show
  1. package/README.md +24 -0
  2. package/dist/client/index.d.ts +287 -0
  3. package/dist/client/index.d.ts.map +1 -0
  4. package/dist/client/index.js +215 -0
  5. package/dist/client/index.js.map +1 -0
  6. package/dist/component/_generated/api.d.ts +23 -0
  7. package/dist/component/_generated/api.d.ts.map +1 -0
  8. package/dist/component/_generated/api.js +15 -0
  9. package/dist/component/_generated/api.js.map +1 -0
  10. package/dist/component/_generated/dataModel.d.ts +28 -0
  11. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  12. package/dist/component/_generated/dataModel.js +11 -0
  13. package/dist/component/_generated/dataModel.js.map +1 -0
  14. package/dist/component/_generated/server.d.ts +23 -0
  15. package/dist/component/_generated/server.d.ts.map +1 -0
  16. package/dist/component/_generated/server.js +18 -0
  17. package/dist/component/_generated/server.js.map +1 -0
  18. package/dist/component/assessment.d.ts +141 -0
  19. package/dist/component/assessment.d.ts.map +1 -0
  20. package/dist/component/assessment.js +498 -0
  21. package/dist/component/assessment.js.map +1 -0
  22. package/dist/component/convex.config.d.ts +3 -0
  23. package/dist/component/convex.config.d.ts.map +1 -0
  24. package/dist/component/convex.config.js +3 -0
  25. package/dist/component/convex.config.js.map +1 -0
  26. package/dist/component/metrics.d.ts +145 -0
  27. package/dist/component/metrics.d.ts.map +1 -0
  28. package/dist/component/metrics.js +425 -0
  29. package/dist/component/metrics.js.map +1 -0
  30. package/dist/component/potentialAnalysis.d.ts +510 -0
  31. package/dist/component/potentialAnalysis.d.ts.map +1 -0
  32. package/dist/component/potentialAnalysis.js +1035 -0
  33. package/dist/component/potentialAnalysis.js.map +1 -0
  34. package/dist/component/schema.d.ts +342 -0
  35. package/dist/component/schema.d.ts.map +1 -0
  36. package/dist/component/schema.js +194 -0
  37. package/dist/component/schema.js.map +1 -0
  38. package/dist/component/scoring.d.ts +6 -0
  39. package/dist/component/scoring.d.ts.map +1 -0
  40. package/dist/component/scoring.js +394 -0
  41. package/dist/component/scoring.js.map +1 -0
  42. package/dist/data/dm/cvr.d.ts +12 -0
  43. package/dist/data/dm/cvr.d.ts.map +1 -0
  44. package/dist/data/dm/cvr.js +71 -0
  45. package/dist/data/dm/cvr.js.map +1 -0
  46. package/dist/data/dm/guidelines.d.ts +9 -0
  47. package/dist/data/dm/guidelines.d.ts.map +1 -0
  48. package/dist/data/dm/guidelines.js +22 -0
  49. package/dist/data/dm/guidelines.js.map +1 -0
  50. package/dist/data/dm/methods.d.ts +10 -0
  51. package/dist/data/dm/methods.d.ts.map +1 -0
  52. package/dist/data/dm/methods.js +50 -0
  53. package/dist/data/dm/methods.js.map +1 -0
  54. package/dist/data/dm/systems.d.ts +10 -0
  55. package/dist/data/dm/systems.d.ts.map +1 -0
  56. package/dist/data/dm/systems.js +52 -0
  57. package/dist/data/dm/systems.js.map +1 -0
  58. package/dist/data/domains.d.ts +20 -0
  59. package/dist/data/domains.d.ts.map +1 -0
  60. package/dist/data/domains.js +264 -0
  61. package/dist/data/domains.js.map +1 -0
  62. package/dist/data/ek/cvr.d.ts +12 -0
  63. package/dist/data/ek/cvr.d.ts.map +1 -0
  64. package/dist/data/ek/cvr.js +58 -0
  65. package/dist/data/ek/cvr.js.map +1 -0
  66. package/dist/data/ek/guidelines.d.ts +9 -0
  67. package/dist/data/ek/guidelines.d.ts.map +1 -0
  68. package/dist/data/ek/guidelines.js +26 -0
  69. package/dist/data/ek/guidelines.js.map +1 -0
  70. package/dist/data/ek/methods.d.ts +9 -0
  71. package/dist/data/ek/methods.d.ts.map +1 -0
  72. package/dist/data/ek/methods.js +35 -0
  73. package/dist/data/ek/methods.js.map +1 -0
  74. package/dist/data/ek/systems.d.ts +9 -0
  75. package/dist/data/ek/systems.d.ts.map +1 -0
  76. package/dist/data/ek/systems.js +23 -0
  77. package/dist/data/ek/systems.js.map +1 -0
  78. package/dist/data/influence-areas.d.ts +26 -0
  79. package/dist/data/influence-areas.d.ts.map +1 -0
  80. package/dist/data/influence-areas.js +143 -0
  81. package/dist/data/influence-areas.js.map +1 -0
  82. package/dist/data/km/cvr.d.ts +13 -0
  83. package/dist/data/km/cvr.d.ts.map +1 -0
  84. package/dist/data/km/cvr.js +65 -0
  85. package/dist/data/km/cvr.js.map +1 -0
  86. package/dist/data/km/guidelines.d.ts +9 -0
  87. package/dist/data/km/guidelines.d.ts.map +1 -0
  88. package/dist/data/km/guidelines.js +20 -0
  89. package/dist/data/km/guidelines.js.map +1 -0
  90. package/dist/data/km/methods.d.ts +9 -0
  91. package/dist/data/km/methods.d.ts.map +1 -0
  92. package/dist/data/km/methods.js +28 -0
  93. package/dist/data/km/methods.js.map +1 -0
  94. package/dist/data/km/systems.d.ts +9 -0
  95. package/dist/data/km/systems.d.ts.map +1 -0
  96. package/dist/data/km/systems.js +18 -0
  97. package/dist/data/km/systems.js.map +1 -0
  98. package/dist/data/stammdaten.d.ts +7 -0
  99. package/dist/data/stammdaten.d.ts.map +1 -0
  100. package/dist/data/stammdaten.js +94 -0
  101. package/dist/data/stammdaten.js.map +1 -0
  102. package/dist/data/types.d.ts +113 -0
  103. package/dist/data/types.d.ts.map +1 -0
  104. package/dist/data/types.js +23 -0
  105. package/dist/data/types.js.map +1 -0
  106. package/package.json +38 -0
  107. package/src/client/index.ts +442 -0
  108. package/src/component/_generated/api.ts +35 -0
  109. package/src/component/_generated/component.ts +50 -0
  110. package/src/component/_generated/dataModel.ts +42 -0
  111. package/src/component/_generated/server.ts +48 -0
  112. package/src/component/assessment.ts +536 -0
  113. package/src/component/convex.config.ts +3 -0
  114. package/src/component/metrics.ts +479 -0
  115. package/src/component/potentialAnalysis.ts +1118 -0
  116. package/src/component/schema.ts +209 -0
  117. package/src/component/scoring.ts +485 -0
  118. package/src/data/dm/cvr.ts +75 -0
  119. package/src/data/dm/guidelines.ts +24 -0
  120. package/src/data/dm/methods.ts +53 -0
  121. package/src/data/dm/systems.ts +55 -0
  122. package/src/data/domains.ts +275 -0
  123. package/src/data/ek/cvr.ts +62 -0
  124. package/src/data/ek/guidelines.ts +28 -0
  125. package/src/data/ek/methods.ts +39 -0
  126. package/src/data/ek/systems.ts +25 -0
  127. package/src/data/influence-areas.ts +162 -0
  128. package/src/data/km/cvr.ts +69 -0
  129. package/src/data/km/guidelines.ts +22 -0
  130. package/src/data/km/methods.ts +30 -0
  131. package/src/data/km/systems.ts +20 -0
  132. package/src/data/stammdaten.ts +96 -0
  133. package/src/data/types.ts +183 -0
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Shared TypeScript interfaces for the DOBT+ Excellence Rating model.
3
+ */
4
+
5
+ // ── Domain & Dimension ──
6
+
7
+ export type DomainKey = "KM" | "EK" | "DM";
8
+
9
+ export interface DomainDef {
10
+ key: DomainKey;
11
+ label: string;
12
+ labelEn: string;
13
+ dimensions: DimensionDef[];
14
+ maxScore: number;
15
+ }
16
+
17
+ export interface DimensionDef {
18
+ key: string;
19
+ domain: DomainKey;
20
+ label: string;
21
+ labelEn: string;
22
+ scoringSource: "expert" | "methods" | "systems" | "guidelines";
23
+ aggregationMethod: "direct" | "sumproduct" | "average";
24
+ pmNpmSplit: boolean;
25
+ }
26
+
27
+ // ── Maturity Scale ──
28
+
29
+ export type MaturityLevel = "informativ" | "steuernd" | "integrativ" | "world_class";
30
+
31
+ export interface MaturityLevelDef {
32
+ level: number;
33
+ key: MaturityLevel;
34
+ label: string;
35
+ labelEn: string;
36
+ min: number;
37
+ max: number;
38
+ }
39
+
40
+ // ── Methods / Systems / Guidelines ──
41
+
42
+ export interface ItemDef {
43
+ key: string;
44
+ label: string;
45
+ labelEn?: string;
46
+ dimension: string;
47
+ domain: DomainKey;
48
+ category: "method" | "system" | "guideline";
49
+ /** Per-level weights [w1, w2, w3] — determines scoring potential */
50
+ weights: [number, number, number];
51
+ /** Which complexity levels this item applies to [commodity, special, big, complex] */
52
+ complexityRelevance: [number, number, number, number];
53
+ /** EK PM/NPM classification ("both" = applies to PM and NPM) */
54
+ pmNpm?: "pm" | "npm" | "both";
55
+ sortOrder: number;
56
+ }
57
+
58
+ // ── CVR Weight Tables ──
59
+
60
+ export type ValueCategory =
61
+ | "overhead"
62
+ | "direct_cost"
63
+ | "additional_business"
64
+ | "innovation"
65
+ | "risk";
66
+
67
+ export const VALUE_CATEGORIES: ValueCategory[] = [
68
+ "overhead",
69
+ "direct_cost",
70
+ "additional_business",
71
+ "innovation",
72
+ "risk",
73
+ ];
74
+
75
+ /** Per-dimension CVR weights at World Class level */
76
+ export type CvrWeightRow = Record<ValueCategory, number>;
77
+
78
+ /** Maps dimension key → World Class CVR weights */
79
+ export type CvrWeightTable = Record<string, CvrWeightRow>;
80
+
81
+ /** Per-level buildup: maps dimension → level (1-4) → weights */
82
+ export type CvrBuildupTable = Record<string, Record<number, CvrWeightRow>>;
83
+
84
+ // ── Implementation Factors ──
85
+
86
+ export type ImplementationFactorTable = Record<string, CvrWeightRow>;
87
+
88
+ // ── Financial Inputs ──
89
+
90
+ export interface FinancialInputs {
91
+ revenue: number;
92
+ cost_volume: number;
93
+ manufacturing_costs: number;
94
+ complexity: 1 | 2 | 3 | 4;
95
+ headcount_km?: number;
96
+ direct_material?: number;
97
+ indirect_material?: number;
98
+ headcount_ek?: number;
99
+ headcount_npm?: number;
100
+ }
101
+
102
+ // ── Sensitivity & Lifetime ──
103
+
104
+ export interface SensitivityConfig {
105
+ revenue_to_margin: number;
106
+ efficiency_to_margin: number;
107
+ risk_to_margin: number;
108
+ innovation_to_margin: number;
109
+ direct_cost_to_margin: number;
110
+ }
111
+
112
+ export interface LifetimeConfig {
113
+ year_1: number;
114
+ year_2: number;
115
+ year_3: number;
116
+ }
117
+
118
+ export const DEFAULT_SENSITIVITY: SensitivityConfig = {
119
+ revenue_to_margin: 0.06,
120
+ efficiency_to_margin: 0.45,
121
+ risk_to_margin: 0.25,
122
+ innovation_to_margin: 0.10,
123
+ direct_cost_to_margin: 1.00,
124
+ };
125
+
126
+ export const DEFAULT_LIFETIME: LifetimeConfig = {
127
+ year_1: 0.10,
128
+ year_2: 0.35,
129
+ year_3: 0.55,
130
+ };
131
+
132
+ // ── Sub-Question Pattern ──
133
+
134
+ export type SubQuestionKey =
135
+ | "bekannt"
136
+ | "in_anwendung"
137
+ | "definiert"
138
+ | "verankert"
139
+ | "schulungen";
140
+
141
+ /** The 5 sub-questions for each method/system/guideline item */
142
+ export interface Sub5Value {
143
+ bekannt: boolean;
144
+ in_anwendung: boolean;
145
+ definiert: boolean;
146
+ verankert: string | null;
147
+ schulungen: boolean;
148
+ }
149
+
150
+ // ── Answer Schema Types ──
151
+
152
+ export type AnswerSchema = "sub5" | "scale04" | "numeric" | "dropdown" | "text";
153
+
154
+ // ── Question Definition (for seeding) ──
155
+
156
+ export interface QuestionDef {
157
+ questionKey: string;
158
+ domain: DomainKey;
159
+ dimension: string;
160
+ category: "method" | "system" | "guideline" | "expert" | "stammdaten";
161
+ itemKey: string;
162
+ label: string;
163
+ labelEn?: string;
164
+ answerSchema: AnswerSchema;
165
+ options?: unknown;
166
+ pmNpm?: "pm" | "npm" | "both";
167
+ sortOrder: number;
168
+ }
169
+
170
+ // ── Stammdaten (Dropdown Definitions) ──
171
+
172
+ export interface StammdatenOption {
173
+ key: string;
174
+ label: string;
175
+ labelEn?: string;
176
+ }
177
+
178
+ export interface StammdatenCategory {
179
+ key: string;
180
+ label: string;
181
+ labelEn?: string;
182
+ options: StammdatenOption[];
183
+ }