@things-factory/spc 9.0.0-beta.24 → 9.0.0-beta.27

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 (75) hide show
  1. package/package.json +4 -4
  2. package/dist-client/bootstrap.d.ts +0 -1
  3. package/dist-client/bootstrap.js +0 -2
  4. package/dist-client/bootstrap.js.map +0 -1
  5. package/dist-client/index.d.ts +0 -0
  6. package/dist-client/index.js +0 -2
  7. package/dist-client/index.js.map +0 -1
  8. package/dist-client/pages/spc-chart-page.d.ts +0 -45
  9. package/dist-client/pages/spc-chart-page.js +0 -322
  10. package/dist-client/pages/spc-chart-page.js.map +0 -1
  11. package/dist-client/route.d.ts +0 -1
  12. package/dist-client/route.js +0 -8
  13. package/dist-client/route.js.map +0 -1
  14. package/dist-client/tsconfig.tsbuildinfo +0 -1
  15. package/dist-server/controllers/data-use-case-spc.d.ts +0 -5
  16. package/dist-server/controllers/data-use-case-spc.js +0 -40
  17. package/dist-server/controllers/data-use-case-spc.js.map +0 -1
  18. package/dist-server/controllers/index.d.ts +0 -1
  19. package/dist-server/controllers/index.js +0 -5
  20. package/dist-server/controllers/index.js.map +0 -1
  21. package/dist-server/controllers/rules/cp-cpk.d.ts +0 -1
  22. package/dist-server/controllers/rules/cp-cpk.js +0 -21
  23. package/dist-server/controllers/rules/cp-cpk.js.map +0 -1
  24. package/dist-server/controllers/spc-chart/c.d.ts +0 -2
  25. package/dist-server/controllers/spc-chart/c.js +0 -25
  26. package/dist-server/controllers/spc-chart/c.js.map +0 -1
  27. package/dist-server/controllers/spc-chart/histogram.d.ts +0 -13
  28. package/dist-server/controllers/spc-chart/histogram.js +0 -25
  29. package/dist-server/controllers/spc-chart/histogram.js.map +0 -1
  30. package/dist-server/controllers/spc-chart/i.d.ts +0 -2
  31. package/dist-server/controllers/spc-chart/i.js +0 -25
  32. package/dist-server/controllers/spc-chart/i.js.map +0 -1
  33. package/dist-server/controllers/spc-chart/index.d.ts +0 -140
  34. package/dist-server/controllers/spc-chart/index.js +0 -172
  35. package/dist-server/controllers/spc-chart/index.js.map +0 -1
  36. package/dist-server/controllers/spc-chart/mr.d.ts +0 -2
  37. package/dist-server/controllers/spc-chart/mr.js +0 -24
  38. package/dist-server/controllers/spc-chart/mr.js.map +0 -1
  39. package/dist-server/controllers/spc-chart/np.d.ts +0 -2
  40. package/dist-server/controllers/spc-chart/np.js +0 -25
  41. package/dist-server/controllers/spc-chart/np.js.map +0 -1
  42. package/dist-server/controllers/spc-chart/p.d.ts +0 -2
  43. package/dist-server/controllers/spc-chart/p.js +0 -24
  44. package/dist-server/controllers/spc-chart/p.js.map +0 -1
  45. package/dist-server/controllers/spc-chart/pareto.d.ts +0 -12
  46. package/dist-server/controllers/spc-chart/pareto.js +0 -23
  47. package/dist-server/controllers/spc-chart/pareto.js.map +0 -1
  48. package/dist-server/controllers/spc-chart/r.d.ts +0 -2
  49. package/dist-server/controllers/spc-chart/r.js +0 -30
  50. package/dist-server/controllers/spc-chart/r.js.map +0 -1
  51. package/dist-server/controllers/spc-chart/u.d.ts +0 -2
  52. package/dist-server/controllers/spc-chart/u.js +0 -26
  53. package/dist-server/controllers/spc-chart/u.js.map +0 -1
  54. package/dist-server/controllers/spc-chart/x-bar-r.d.ts +0 -2
  55. package/dist-server/controllers/spc-chart/x-bar-r.js +0 -44
  56. package/dist-server/controllers/spc-chart/x-bar-r.js.map +0 -1
  57. package/dist-server/controllers/spc-chart/x-bar.d.ts +0 -2
  58. package/dist-server/controllers/spc-chart/x-bar.js +0 -44
  59. package/dist-server/controllers/spc-chart/x-bar.js.map +0 -1
  60. package/dist-server/index.d.ts +0 -1
  61. package/dist-server/index.js +0 -11
  62. package/dist-server/index.js.map +0 -1
  63. package/dist-server/service/index.d.ts +0 -5
  64. package/dist-server/service/index.js +0 -21
  65. package/dist-server/service/index.js.map +0 -1
  66. package/dist-server/service/spc-chart/index.d.ts +0 -4
  67. package/dist-server/service/spc-chart/index.js +0 -8
  68. package/dist-server/service/spc-chart/index.js.map +0 -1
  69. package/dist-server/service/spc-chart/spc-chart-query.d.ts +0 -4
  70. package/dist-server/service/spc-chart/spc-chart-query.js +0 -99
  71. package/dist-server/service/spc-chart/spc-chart-query.js.map +0 -1
  72. package/dist-server/service/spc-chart/spc-chart-type.d.ts +0 -33
  73. package/dist-server/service/spc-chart/spc-chart-type.js +0 -133
  74. package/dist-server/service/spc-chart/spc-chart-type.js.map +0 -1
  75. package/dist-server/tsconfig.tsbuildinfo +0 -1
@@ -1,140 +0,0 @@
1
- declare const result: {
2
- dataset: {
3
- id: string;
4
- name: string;
5
- };
6
- query: {};
7
- analysisResults: ({
8
- chartType: string;
9
- variables: {
10
- name: string;
11
- stats: {
12
- mean: number;
13
- UCL: number;
14
- LCL: number;
15
- CL: number;
16
- };
17
- samples: {
18
- x: string;
19
- values: number;
20
- }[];
21
- }[];
22
- } | {
23
- chartType: string;
24
- variables: {
25
- name: string;
26
- stats: {
27
- range: number;
28
- UCL: number;
29
- LCL: number;
30
- CL: number;
31
- };
32
- samples: {
33
- x: string;
34
- value: number;
35
- }[];
36
- }[];
37
- } | {
38
- chartType: string;
39
- variables: {
40
- name: string;
41
- stats: {
42
- proportion: number;
43
- UCL: number;
44
- LCL: number;
45
- };
46
- samples: {
47
- x: string;
48
- value: number;
49
- }[];
50
- }[];
51
- } | {
52
- chartType: string;
53
- variables: {
54
- name: string;
55
- stats: {
56
- nonconforming: number;
57
- UCL: number;
58
- LCL: number;
59
- };
60
- samples: {
61
- x: string;
62
- value: number;
63
- }[];
64
- }[];
65
- } | {
66
- chartType: string;
67
- variables: {
68
- name: string;
69
- stats: {
70
- count: number;
71
- UCL: number;
72
- LCL: number;
73
- };
74
- samples: {
75
- x: string;
76
- value: number;
77
- }[];
78
- }[];
79
- } | {
80
- chartType: string;
81
- variables: {
82
- name: string;
83
- stats: {
84
- defectsPerUnit: number;
85
- UCL: number;
86
- LCL: number;
87
- };
88
- samples: {
89
- x: string;
90
- value: number;
91
- }[];
92
- }[];
93
- } | {
94
- chartType: string;
95
- variables: {
96
- name: string;
97
- stats: {
98
- individualValue: number;
99
- UCL: number;
100
- LCL: number;
101
- };
102
- samples: {
103
- x: string;
104
- value: number;
105
- }[];
106
- }[];
107
- } | {
108
- chartType: string;
109
- variables: {
110
- name: string;
111
- stats: {
112
- movingRange: number;
113
- UCL: number;
114
- LCL: number;
115
- };
116
- samples: {
117
- x: string;
118
- value: number;
119
- }[];
120
- }[];
121
- } | {
122
- chartType: string;
123
- variables: {
124
- name: string;
125
- bins: {
126
- binRange: string;
127
- count: number;
128
- }[];
129
- }[];
130
- } | {
131
- chartType: string;
132
- variables: {
133
- name: string;
134
- categories: {
135
- category: string;
136
- count: number;
137
- }[];
138
- }[];
139
- })[];
140
- };
@@ -1,172 +0,0 @@
1
- const result = {
2
- dataset: {
3
- id: 'aaa',
4
- name: 'bbb'
5
- },
6
- query: {},
7
- analysisResults: [
8
- {
9
- chartType: 'Xbar',
10
- variables: [
11
- {
12
- name: 'variable1',
13
- stats: {
14
- mean: 22,
15
- UCL: 25,
16
- LCL: 19,
17
- CL: 22
18
- },
19
- samples: [
20
- { x: '1', values: 22 },
21
- { x: '2', values: 23 }
22
- ]
23
- }
24
- ]
25
- },
26
- {
27
- chartType: 'R',
28
- variables: [
29
- {
30
- name: 'variable2',
31
- stats: {
32
- range: 1.3,
33
- UCL: 2.1,
34
- LCL: 0.5,
35
- CL: 1.3
36
- },
37
- samples: [
38
- { x: '1', value: 1.2 },
39
- { x: '2', value: 1.3 }
40
- ]
41
- }
42
- ]
43
- },
44
- {
45
- chartType: 'p',
46
- variables: [
47
- {
48
- name: 'variable3',
49
- stats: {
50
- proportion: 0.05,
51
- UCL: 0.1,
52
- LCL: 0.01
53
- },
54
- samples: [
55
- { x: '1', value: 0.05 },
56
- { x: '2', value: 0.06 }
57
- ]
58
- }
59
- ]
60
- },
61
- {
62
- chartType: 'np',
63
- variables: [
64
- {
65
- name: 'variable4',
66
- stats: {
67
- nonconforming: 5,
68
- UCL: 10,
69
- LCL: 1
70
- },
71
- samples: [
72
- { x: '1', value: 5 },
73
- { x: '2', value: 4 }
74
- ]
75
- }
76
- ]
77
- },
78
- {
79
- chartType: 'c',
80
- variables: [
81
- {
82
- name: 'variable5',
83
- stats: {
84
- count: 20,
85
- UCL: 25,
86
- LCL: 15
87
- },
88
- samples: [
89
- { x: '1', value: 20 },
90
- { x: '2', value: 21 }
91
- ]
92
- }
93
- ]
94
- },
95
- {
96
- chartType: 'u',
97
- variables: [
98
- {
99
- name: 'variable6',
100
- stats: {
101
- defectsPerUnit: 1.2,
102
- UCL: 1.5,
103
- LCL: 0.9
104
- },
105
- samples: [
106
- { x: '1', value: 1.2 },
107
- { x: '2', value: 1.1 }
108
- ]
109
- }
110
- ]
111
- },
112
- {
113
- chartType: 'I',
114
- variables: [
115
- {
116
- name: 'variable7',
117
- stats: {
118
- individualValue: 10,
119
- UCL: 12,
120
- LCL: 8
121
- },
122
- samples: [
123
- { x: '1', value: 10 },
124
- { x: '2', value: 11 }
125
- ]
126
- }
127
- ]
128
- },
129
- {
130
- chartType: 'MR',
131
- variables: [
132
- {
133
- name: 'variable8',
134
- stats: {
135
- movingRange: 2,
136
- UCL: 3,
137
- LCL: 1
138
- },
139
- samples: [
140
- { x: '1', value: 2 },
141
- { x: '2', value: 2.5 }
142
- ]
143
- }
144
- ]
145
- },
146
- {
147
- chartType: 'Histogram',
148
- variables: [
149
- {
150
- name: 'variable9',
151
- bins: [
152
- { binRange: '0-1', count: 5 },
153
- { binRange: '1-2', count: 10 }
154
- ]
155
- }
156
- ]
157
- },
158
- {
159
- chartType: 'Pareto',
160
- variables: [
161
- {
162
- name: 'defectType',
163
- categories: [
164
- { category: 'Scratch', count: 20 },
165
- { category: 'Dent', count: 15 }
166
- ]
167
- }
168
- ]
169
- }
170
- ]
171
- };
172
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACb,OAAO,EAAE;QACP,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;KACZ;IACD,KAAK,EAAE,EAAE;IACT,eAAe,EAAE;QACf;YACE,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,IAAI,EAAE,EAAE;wBACR,GAAG,EAAE,EAAE;wBACP,GAAG,EAAE,EAAE;wBACP,EAAE,EAAE,EAAE;qBACP;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;wBACtB,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;qBACvB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,GAAG;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,KAAK,EAAE,GAAG;wBACV,GAAG,EAAE,GAAG;wBACR,GAAG,EAAE,GAAG;wBACR,EAAE,EAAE,GAAG;qBACR;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;wBACtB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;qBACvB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,GAAG;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,UAAU,EAAE,IAAI;wBAChB,GAAG,EAAE,GAAG;wBACR,GAAG,EAAE,IAAI;qBACV;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;wBACvB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;qBACxB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,IAAI;YACf,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,aAAa,EAAE,CAAC;wBAChB,GAAG,EAAE,EAAE;wBACP,GAAG,EAAE,CAAC;qBACP;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;wBACpB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;qBACrB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,GAAG;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,KAAK,EAAE,EAAE;wBACT,GAAG,EAAE,EAAE;wBACP,GAAG,EAAE,EAAE;qBACR;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;wBACrB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;qBACtB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,GAAG;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,cAAc,EAAE,GAAG;wBACnB,GAAG,EAAE,GAAG;wBACR,GAAG,EAAE,GAAG;qBACT;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;wBACtB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;qBACvB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,GAAG;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,eAAe,EAAE,EAAE;wBACnB,GAAG,EAAE,EAAE;wBACP,GAAG,EAAE,CAAC;qBACP;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;wBACrB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;qBACtB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,IAAI;YACf,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE;wBACL,WAAW,EAAE,CAAC;wBACd,GAAG,EAAE,CAAC;wBACN,GAAG,EAAE,CAAC;qBACP;oBACD,OAAO,EAAE;wBACP,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;wBACpB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;qBACvB;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE;wBACJ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;wBAC7B,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;qBAC/B;iBACF;aACF;SACF;QACD;YACE,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,YAAY;oBAClB,UAAU,EAAE;wBACV,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;wBAClC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;qBAChC;iBACF;aACF;SACF;KACF;CACF,CAAA","sourcesContent":["const result = {\n dataset: {\n id: 'aaa',\n name: 'bbb'\n },\n query: {},\n analysisResults: [\n {\n chartType: 'Xbar',\n variables: [\n {\n name: 'variable1',\n stats: {\n mean: 22,\n UCL: 25,\n LCL: 19,\n CL: 22\n },\n samples: [\n { x: '1', values: 22 },\n { x: '2', values: 23 }\n ]\n }\n ]\n },\n {\n chartType: 'R',\n variables: [\n {\n name: 'variable2',\n stats: {\n range: 1.3,\n UCL: 2.1,\n LCL: 0.5,\n CL: 1.3\n },\n samples: [\n { x: '1', value: 1.2 },\n { x: '2', value: 1.3 }\n ]\n }\n ]\n },\n {\n chartType: 'p',\n variables: [\n {\n name: 'variable3',\n stats: {\n proportion: 0.05,\n UCL: 0.1,\n LCL: 0.01\n },\n samples: [\n { x: '1', value: 0.05 },\n { x: '2', value: 0.06 }\n ]\n }\n ]\n },\n {\n chartType: 'np',\n variables: [\n {\n name: 'variable4',\n stats: {\n nonconforming: 5,\n UCL: 10,\n LCL: 1\n },\n samples: [\n { x: '1', value: 5 },\n { x: '2', value: 4 }\n ]\n }\n ]\n },\n {\n chartType: 'c',\n variables: [\n {\n name: 'variable5',\n stats: {\n count: 20,\n UCL: 25,\n LCL: 15\n },\n samples: [\n { x: '1', value: 20 },\n { x: '2', value: 21 }\n ]\n }\n ]\n },\n {\n chartType: 'u',\n variables: [\n {\n name: 'variable6',\n stats: {\n defectsPerUnit: 1.2,\n UCL: 1.5,\n LCL: 0.9\n },\n samples: [\n { x: '1', value: 1.2 },\n { x: '2', value: 1.1 }\n ]\n }\n ]\n },\n {\n chartType: 'I',\n variables: [\n {\n name: 'variable7',\n stats: {\n individualValue: 10,\n UCL: 12,\n LCL: 8\n },\n samples: [\n { x: '1', value: 10 },\n { x: '2', value: 11 }\n ]\n }\n ]\n },\n {\n chartType: 'MR',\n variables: [\n {\n name: 'variable8',\n stats: {\n movingRange: 2,\n UCL: 3,\n LCL: 1\n },\n samples: [\n { x: '1', value: 2 },\n { x: '2', value: 2.5 }\n ]\n }\n ]\n },\n {\n chartType: 'Histogram',\n variables: [\n {\n name: 'variable9',\n bins: [\n { binRange: '0-1', count: 5 },\n { binRange: '1-2', count: 10 }\n ]\n }\n ]\n },\n {\n chartType: 'Pareto',\n variables: [\n {\n name: 'defectType',\n categories: [\n { category: 'Scratch', count: 20 },\n { category: 'Dent', count: 15 }\n ]\n }\n ]\n }\n ]\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type';
2
- export declare function calculateMRChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateMRChartAnalysisResult = calculateMRChartAnalysisResult;
4
- function calculateMRChartAnalysisResult(plots) {
5
- // 각 샘플의 평균을 계산
6
- plots = plots.map((plot, index) => (Object.assign(Object.assign({}, plot), { i: plot.values[0], mr: index == 0 ? 0 : Math.abs(plot.values[0] - plots[index - 1].values[0]) })));
7
- // 변동 범위의 평균을 계산하여 중심선(CL)을 구합니다.
8
- const cl = plots.slice(1).reduce((acc, plot) => acc + plot.mr, 0) / (plots.length - 1);
9
- // 공정 변동을 고려하여 상한 제어선(UCL)을 계산합니다.
10
- // MR 차트에서는 3.267 * MR-Bar을 사용합니다 (2개의 측정값을 사용하는 경우).
11
- const ucl = 3.267 * cl;
12
- // MR 차트에서 하한 제어선(LCL)은 일반적으로 사용되지 않거나 0으로 설정됩니다.
13
- const lcl = 0; // 하한 제어선
14
- return {
15
- chartType: 'MR',
16
- controlLimits: {
17
- cl,
18
- ucl,
19
- lcl
20
- },
21
- plots
22
- };
23
- }
24
- //# sourceMappingURL=mr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mr.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/mr.ts"],"names":[],"mappings":";;AAEA,wEA2BC;AA3BD,SAAgB,8BAA8B,CAAC,KAAqB;IAClE,eAAe;IACf,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,iCAC9B,IAAI,KACP,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAC1E,CAAC,CAAA;IAEH,iCAAiC;IACjC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEtF,kCAAkC;IAClC,qDAAqD;IACrD,MAAM,GAAG,GAAG,KAAK,GAAG,EAAE,CAAA;IAEtB,iDAAiD;IACjD,MAAM,GAAG,GAAG,CAAC,CAAA,CAAC,SAAS;IAEvB,OAAO;QACL,SAAS,EAAE,IAAI;QACf,aAAa,EAAE;YACb,EAAE;YACF,GAAG;YACH,GAAG;SACJ;QACD,KAAK;KACN,CAAA;AACH,CAAC","sourcesContent":["import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type'\n\nexport function calculateMRChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis {\n // 각 샘플의 평균을 계산\n plots = plots.map((plot, index) => ({\n ...plot,\n i: plot.values[0],\n mr: index == 0 ? 0 : Math.abs(plot.values[0] - plots[index - 1].values[0])\n }))\n\n // 변동 범위의 평균을 계산하여 중심선(CL)을 구합니다.\n const cl = plots.slice(1).reduce((acc, plot) => acc + plot.mr, 0) / (plots.length - 1)\n\n // 공정 변동을 고려하여 상한 제어선(UCL)을 계산합니다.\n // MR 차트에서는 3.267 * MR-Bar을 사용합니다 (2개의 측정값을 사용하는 경우).\n const ucl = 3.267 * cl\n\n // MR 차트에서 하한 제어선(LCL)은 일반적으로 사용되지 않거나 0으로 설정됩니다.\n const lcl = 0 // 하한 제어선\n\n return {\n chartType: 'MR',\n controlLimits: {\n cl,\n ucl,\n lcl\n },\n plots\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type';
2
- export declare function calculateNPChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateNPChartAnalysisResult = calculateNPChartAnalysisResult;
4
- function calculateNPChartAnalysisResult(plots) {
5
- // 각 샘플의 평균을 계산
6
- plots = plots.map(plot => (Object.assign(Object.assign({}, plot), { defects: plot.values.reduce((sum, v) => sum + v, 0), n: plot.values.length })));
7
- const totalNonConforming = plots.reduce((acc, plot) => acc + plot.defects, 0);
8
- const totalUnits = plots.reduce((acc, plot) => acc + plot.n, 0);
9
- const NPBar = totalNonConforming / plots.length; // 평균 불량품 수
10
- // p 차트 공식을 사용하여 UCL과 LCL을 계산합니다.
11
- const pBar = totalNonConforming / totalUnits; // 전체 불량품 비율
12
- const ucl = NPBar + 3 * Math.sqrt(NPBar * (1 - pBar));
13
- let lcl = NPBar - 3 * Math.sqrt(NPBar * (1 - pBar));
14
- lcl = lcl < 0 ? 0 : lcl; // LCL이 음수인 경우 0으로 설정
15
- return {
16
- chartType: 'NP',
17
- controlLimits: {
18
- ucl,
19
- lcl,
20
- cl: NPBar
21
- },
22
- plots
23
- };
24
- }
25
- //# sourceMappingURL=np.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"np.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/np.ts"],"names":[],"mappings":";;AAEA,wEA2BC;AA3BD,SAAgB,8BAA8B,CAAC,KAAqB;IAClE,eAAe;IACf,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iCACrB,IAAI,KACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EACnD,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IACrB,CAAC,CAAA;IAEH,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAA,CAAC,WAAW;IAE3D,iCAAiC;IACjC,MAAM,IAAI,GAAG,kBAAkB,GAAG,UAAU,CAAA,CAAC,YAAY;IACzD,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACrD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACnD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,CAAC,qBAAqB;IAE7C,OAAO;QACL,SAAS,EAAE,IAAI;QACf,aAAa,EAAE;YACb,GAAG;YACH,GAAG;YACH,EAAE,EAAE,KAAK;SACV;QACD,KAAK;KACN,CAAA;AACH,CAAC","sourcesContent":["import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type'\n\nexport function calculateNPChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis {\n // 각 샘플의 평균을 계산\n plots = plots.map(plot => ({\n ...plot,\n defects: plot.values.reduce((sum, v) => sum + v, 0),\n n: plot.values.length\n }))\n\n const totalNonConforming = plots.reduce((acc, plot) => acc + plot.defects, 0)\n const totalUnits = plots.reduce((acc, plot) => acc + plot.n, 0)\n const NPBar = totalNonConforming / plots.length // 평균 불량품 수\n\n // p 차트 공식을 사용하여 UCL과 LCL을 계산합니다.\n const pBar = totalNonConforming / totalUnits // 전체 불량품 비율\n const ucl = NPBar + 3 * Math.sqrt(NPBar * (1 - pBar))\n let lcl = NPBar - 3 * Math.sqrt(NPBar * (1 - pBar))\n lcl = lcl < 0 ? 0 : lcl // LCL이 음수인 경우 0으로 설정\n\n return {\n chartType: 'NP',\n controlLimits: {\n ucl,\n lcl,\n cl: NPBar\n },\n plots\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type';
2
- export declare function calculatePChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculatePChartAnalysisResult = calculatePChartAnalysisResult;
4
- function calculatePChartAnalysisResult(plots) {
5
- // 각 샘플의 평균을 계산
6
- plots = plots.map(plot => (Object.assign(Object.assign({}, plot), { defects: plot.values.reduce((sum, v) => sum + v, 0), n: plot.values.length })));
7
- // 결함 있는 단위의 평균 비율(PBar)을 계산합니다.
8
- const totalDefectiveUnits = plots.reduce((acc, plot) => acc + plot.defects, 0);
9
- const totalUnits = plots.reduce((acc, plot) => acc + plot.n, 0);
10
- const PBar = totalDefectiveUnits / totalUnits;
11
- // 샘플 그룹의 크기(n)에 따라 UCL과 LCL을 계산합니다.
12
- const ucl = PBar + 3 * Math.sqrt((PBar * (1 - PBar)) / totalUnits);
13
- const lcl = PBar - 3 * Math.sqrt((PBar * (1 - PBar)) / totalUnits) < 0 ? 0 : PBar - 3 * Math.sqrt((PBar * (1 - PBar)) / totalUnits); // LCL이 음수가 되지 않도록 처리
14
- return {
15
- chartType: 'P',
16
- controlLimits: {
17
- ucl,
18
- lcl,
19
- cl: PBar
20
- },
21
- plots
22
- };
23
- }
24
- //# sourceMappingURL=p.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"p.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/p.ts"],"names":[],"mappings":";;AAEA,sEA0BC;AA1BD,SAAgB,6BAA6B,CAAC,KAAqB;IACjE,eAAe;IACf,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iCACrB,IAAI,KACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EACnD,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IACrB,CAAC,CAAA;IAEH,gCAAgC;IAChC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,mBAAmB,GAAG,UAAU,CAAA;IAE7C,oCAAoC;IACpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA,CAAC,qBAAqB;IAEzJ,OAAO;QACL,SAAS,EAAE,GAAG;QACd,aAAa,EAAE;YACb,GAAG;YACH,GAAG;YACH,EAAE,EAAE,IAAI;SACT;QACD,KAAK;KACN,CAAA;AACH,CAAC","sourcesContent":["import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type'\n\nexport function calculatePChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis {\n // 각 샘플의 평균을 계산\n plots = plots.map(plot => ({\n ...plot,\n defects: plot.values.reduce((sum, v) => sum + v, 0),\n n: plot.values.length\n }))\n\n // 결함 있는 단위의 평균 비율(PBar)을 계산합니다.\n const totalDefectiveUnits = plots.reduce((acc, plot) => acc + plot.defects, 0)\n const totalUnits = plots.reduce((acc, plot) => acc + plot.n, 0)\n const PBar = totalDefectiveUnits / totalUnits\n\n // 샘플 그룹의 크기(n)에 따라 UCL과 LCL을 계산합니다.\n const ucl = PBar + 3 * Math.sqrt((PBar * (1 - PBar)) / totalUnits)\n const lcl = PBar - 3 * Math.sqrt((PBar * (1 - PBar)) / totalUnits) < 0 ? 0 : PBar - 3 * Math.sqrt((PBar * (1 - PBar)) / totalUnits) // LCL이 음수가 되지 않도록 처리\n\n return {\n chartType: 'P',\n controlLimits: {\n ucl,\n lcl,\n cl: PBar\n },\n plots\n }\n}\n"]}
@@ -1,12 +0,0 @@
1
- interface ParetoCategory {
2
- category: string;
3
- count: number;
4
- }
5
- interface ParetoResult {
6
- chartType: 'Pareto';
7
- categories: ParetoCategory[];
8
- }
9
- export declare function calculatePareto(data: {
10
- category: string;
11
- }[]): ParetoResult;
12
- export {};
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculatePareto = calculatePareto;
4
- function calculatePareto(data) {
5
- // 각 카테고리별 데이터 개수 계산
6
- const categoryCounts = {};
7
- data.forEach(item => {
8
- const category = item.category;
9
- categoryCounts[category] = (categoryCounts[category] || 0) + 1;
10
- });
11
- // 카테고리와 데이터 개수를 배열로 변환
12
- const categories = Object.keys(categoryCounts).map(category => ({
13
- category,
14
- count: categoryCounts[category]
15
- }));
16
- // 데이터 개수에 따라 내림차순으로 정렬
17
- categories.sort((a, b) => b.count - a.count);
18
- return {
19
- chartType: 'Pareto',
20
- categories
21
- };
22
- }
23
- //# sourceMappingURL=pareto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pareto.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/pareto.ts"],"names":[],"mappings":";;AAUA,0CAqBC;AArBD,SAAgB,eAAe,CAAC,IAA4B;IAC1D,oBAAoB;IACpB,MAAM,cAAc,GAAmC,EAAE,CAAA;IACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC9B,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,uBAAuB;IACvB,MAAM,UAAU,GAAqB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChF,QAAQ;QACR,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC;KAChC,CAAC,CAAC,CAAA;IAEH,uBAAuB;IACvB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IAE5C,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,UAAU;KACX,CAAA;AACH,CAAC","sourcesContent":["interface ParetoCategory {\n category: string // 카테고리 이름\n count: number // 해당 카테고리의 데이터 개수 또는 중요도\n}\n\ninterface ParetoResult {\n chartType: 'Pareto'\n categories: ParetoCategory[] // Pareto 차트에 표시될 카테고리 및 중요도 정보\n}\n\nexport function calculatePareto(data: { category: string }[]): ParetoResult {\n // 각 카테고리별 데이터 개수 계산\n const categoryCounts: { [category: string]: number } = {}\n data.forEach(item => {\n const category = item.category\n categoryCounts[category] = (categoryCounts[category] || 0) + 1\n })\n\n // 카테고리와 데이터 개수를 배열로 변환\n const categories: ParetoCategory[] = Object.keys(categoryCounts).map(category => ({\n category,\n count: categoryCounts[category]\n }))\n\n // 데이터 개수에 따라 내림차순으로 정렬\n categories.sort((a, b) => b.count - a.count)\n\n return {\n chartType: 'Pareto',\n categories\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type';
2
- export declare function calculateRChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateRChartAnalysisResult = calculateRChartAnalysisResult;
4
- function calculateRChartAnalysisResult(plots) {
5
- var _a;
6
- // 각 샘플 그룹의 범위를 계산합니다.
7
- plots = plots.map(plot => {
8
- return Object.assign(Object.assign({}, plot), { r: Math.max(...plot.values) - Math.min(...plot.values) });
9
- });
10
- // 모든 샘플 그룹의 범위의 평균값(R-bar)을 계산합니다.
11
- const RBar = plots.reduce((acc, plot) => acc + plot.r, 0) / plots.length;
12
- // 샘플 그룹의 크기(n)에 따라 D3와 D4 값을 설정합니다.
13
- // 예시에서는 n=5인 경우의 D3와 D4 값을 사용합니다. 실제 구현에서는 샘플 크기에 맞는 값을 사용해야 합니다.
14
- const n = (_a = plots[0]) === null || _a === void 0 ? void 0 : _a.values.length; // 샘플 크기 추정(모든 그룹이 같은 크기를 가정)
15
- const D3 = 0; // n=5에 대한 D3 값
16
- const D4 = 2.114; // n=5에 대한 D4 값
17
- // UCL과 LCL을 계산합니다.
18
- const ucl = D4 * RBar;
19
- const lcl = D3 * RBar; // D3가 0인 경우, LCL은 0이 됩니다.
20
- return {
21
- chartType: 'R',
22
- controlLimits: {
23
- ucl,
24
- lcl,
25
- cl: RBar
26
- },
27
- plots
28
- };
29
- }
30
- //# sourceMappingURL=r.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"r.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/r.ts"],"names":[],"mappings":";;AAEA,sEA+BC;AA/BD,SAAgB,6BAA6B,CAAC,KAAqB;;IACjE,sBAAsB;IACtB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACvB,uCACK,IAAI,KACP,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IACvD;IACH,CAAC,CAAC,CAAA;IAEF,mCAAmC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IAExE,oCAAoC;IACpC,kEAAkE;IAClE,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC,MAAM,CAAA,CAAC,6BAA6B;IAC/D,MAAM,EAAE,GAAG,CAAC,CAAA,CAAC,eAAe;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAA,CAAC,eAAe;IAEhC,mBAAmB;IACnB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAA;IACrB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,0BAA0B;IAEhD,OAAO;QACL,SAAS,EAAE,GAAG;QACd,aAAa,EAAE;YACb,GAAG;YACH,GAAG;YACH,EAAE,EAAE,IAAI;SACT;QACD,KAAK;KACN,CAAA;AACH,CAAC","sourcesContent":["import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type'\n\nexport function calculateRChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis {\n // 각 샘플 그룹의 범위를 계산합니다.\n plots = plots.map(plot => {\n return {\n ...plot,\n r: Math.max(...plot.values) - Math.min(...plot.values)\n }\n })\n\n // 모든 샘플 그룹의 범위의 평균값(R-bar)을 계산합니다.\n const RBar = plots.reduce((acc, plot) => acc + plot.r, 0) / plots.length\n\n // 샘플 그룹의 크기(n)에 따라 D3와 D4 값을 설정합니다.\n // 예시에서는 n=5인 경우의 D3와 D4 값을 사용합니다. 실제 구현에서는 샘플 크기에 맞는 값을 사용해야 합니다.\n const n = plots[0]?.values.length // 샘플 크기 추정(모든 그룹이 같은 크기를 가정)\n const D3 = 0 // n=5에 대한 D3 값\n const D4 = 2.114 // n=5에 대한 D4 값\n\n // UCL과 LCL을 계산합니다.\n const ucl = D4 * RBar\n const lcl = D3 * RBar // D3가 0인 경우, LCL은 0이 됩니다.\n\n return {\n chartType: 'R',\n controlLimits: {\n ucl,\n lcl,\n cl: RBar\n },\n plots\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type';
2
- export declare function calculateUChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateUChartAnalysisResult = calculateUChartAnalysisResult;
4
- function calculateUChartAnalysisResult(plots) {
5
- // 각 샘플의 평균을 계산
6
- plots = plots.map(plot => (Object.assign(Object.assign({}, plot), { defects: plot.values.map(Boolean).length, n: plot.values.length })));
7
- // 단위당 결함 수의 평균(UBar)을 계산합니다.
8
- const totalDefects = plots.reduce((acc, plot) => acc + plot.defects, 0);
9
- const totalUnits = plots.reduce((acc, plot) => acc + plot.n, 0);
10
- const UBar = totalDefects / totalUnits;
11
- // 샘플 그룹의 크기(n)에 따라 상수를 결정합니다. 여기서는 일반적인 상수 값을 사용합니다.
12
- const n = plots.length; // 샘플 그룹의 수
13
- // UCL과 LCL 계산을 위한 상수. 실제 값은 샘플 크기와 분포에 따라 달라질 수 있습니다.
14
- const ucl = UBar + 3 * Math.sqrt(UBar / totalUnits);
15
- const lcl = UBar - 3 * Math.sqrt(UBar / totalUnits) < 0 ? 0 : UBar - 3 * Math.sqrt(UBar / totalUnits); // LCL이 음수가 되지 않도록 처리
16
- return {
17
- chartType: 'U',
18
- controlLimits: {
19
- ucl,
20
- lcl,
21
- cl: UBar
22
- },
23
- plots
24
- };
25
- }
26
- //# sourceMappingURL=u.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"u.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/u.ts"],"names":[],"mappings":";;AAEA,sEA4BC;AA5BD,SAAgB,6BAA6B,CAAC,KAAqB;IACjE,eAAe;IACf,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iCACrB,IAAI,KACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EACxC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IACrB,CAAC,CAAA;IAEH,6BAA6B;IAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACvE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,YAAY,GAAG,UAAU,CAAA;IAEtC,qDAAqD;IACrD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA,CAAC,WAAW;IAClC,sDAAsD;IACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,CAAA;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,CAAA,CAAC,qBAAqB;IAE3H,OAAO;QACL,SAAS,EAAE,GAAG;QACd,aAAa,EAAE;YACb,GAAG;YACH,GAAG;YACH,EAAE,EAAE,IAAI;SACT;QACD,KAAK;KACN,CAAA;AACH,CAAC","sourcesContent":["import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type'\n\nexport function calculateUChartAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis {\n // 각 샘플의 평균을 계산\n plots = plots.map(plot => ({\n ...plot,\n defects: plot.values.map(Boolean).length,\n n: plot.values.length\n }))\n\n // 단위당 결함 수의 평균(UBar)을 계산합니다.\n const totalDefects = plots.reduce((acc, plot) => acc + plot.defects, 0)\n const totalUnits = plots.reduce((acc, plot) => acc + plot.n, 0)\n const UBar = totalDefects / totalUnits\n\n // 샘플 그룹의 크기(n)에 따라 상수를 결정합니다. 여기서는 일반적인 상수 값을 사용합니다.\n const n = plots.length // 샘플 그룹의 수\n // UCL과 LCL 계산을 위한 상수. 실제 값은 샘플 크기와 분포에 따라 달라질 수 있습니다.\n const ucl = UBar + 3 * Math.sqrt(UBar / totalUnits)\n const lcl = UBar - 3 * Math.sqrt(UBar / totalUnits) < 0 ? 0 : UBar - 3 * Math.sqrt(UBar / totalUnits) // LCL이 음수가 되지 않도록 처리\n\n return {\n chartType: 'U',\n controlLimits: {\n ucl,\n lcl,\n cl: UBar\n },\n plots\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type';
2
- export declare function calculateXBarAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis;
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateXBarAnalysisResult = calculateXBarAnalysisResult;
4
- function getA2Value(sampleSize) {
5
- const a2Values = {
6
- 2: 1.88,
7
- 3: 1.023,
8
- 4: 0.729,
9
- 5: 0.577,
10
- 6: 0.483
11
- // 다른 샘플 크기에 대한 A2 값 추가...
12
- };
13
- return a2Values[sampleSize] || 0; // 샘플 크기에 대한 A2 값이 정의되지 않은 경우 0을 반환
14
- }
15
- function calculateXBarAnalysisResult(plots) {
16
- var _a, _b;
17
- // 각 샘플의 평균을 계산
18
- plots = plots.map(plot => (Object.assign(Object.assign({}, plot), { xbar: plot.values ? plot.values.reduce((sum, val) => sum + val, 0) / plot.values.length : 0, r: Math.max(...plot.values) - Math.min(...plot.values) })));
19
- const plotSize = (_b = (_a = plots[0]) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b.length; // 샘플 크기 추정(모든 그룹이 같은 크기를 가정)
20
- // 각 샘플의 범위(R) 계산
21
- const ranges = plots.map(plot => {
22
- if (plot.values) {
23
- return Math.max(...plot.values) - Math.min(...plot.values);
24
- }
25
- return 0;
26
- });
27
- // 범위(R)의 평균 계산
28
- const averageRange = ranges.reduce((sum, r) => sum + r, 0) / ranges.length;
29
- // 전체 평균(중심선, CL) 계산
30
- const overallMean = plots.reduce((sum, plot) => sum + plot.xbar, 0) / plots.length;
31
- const A2 = getA2Value(plotSize);
32
- const ucl = overallMean + A2 * averageRange;
33
- const lcl = overallMean - A2 * averageRange;
34
- return {
35
- chartType: 'Xbar',
36
- controlLimits: {
37
- ucl,
38
- lcl,
39
- cl: overallMean
40
- },
41
- plots
42
- };
43
- }
44
- //# sourceMappingURL=x-bar-r.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"x-bar-r.js","sourceRoot":"","sources":["../../../server/controllers/spc-chart/x-bar-r.ts"],"names":[],"mappings":";;AAeA,kEAqCC;AAlDD,SAAS,UAAU,CAAC,UAAkB;IACpC,MAAM,QAAQ,GAA8B;QAC1C,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,0BAA0B;KAC3B,CAAA;IAED,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,CAAC,mCAAmC;AACtE,CAAC;AAED,SAAgB,2BAA2B,CAAC,KAAqB;;IAC/D,eAAe;IACf,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iCACrB,IAAI,KACP,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC3F,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IACtD,CAAC,CAAA;IAEH,MAAM,QAAQ,GAAG,MAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,MAAM,0CAAE,MAAM,CAAA,CAAC,6BAA6B;IAEvE,iBAAiB;IACjB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IAEF,eAAe;IACf,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;IAE1E,oBAAoB;IACpB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IAElF,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAG,WAAW,GAAG,EAAE,GAAG,YAAY,CAAA;IAC3C,MAAM,GAAG,GAAG,WAAW,GAAG,EAAE,GAAG,YAAY,CAAA;IAE3C,OAAO;QACL,SAAS,EAAE,MAAM;QACjB,aAAa,EAAE;YACb,GAAG;YACH,GAAG;YACH,EAAE,EAAE,WAAW;SAChB;QACD,KAAK;KACN,CAAA;AACH,CAAC","sourcesContent":["import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type'\n\nfunction getA2Value(sampleSize: number): number {\n const a2Values: { [key: number]: number } = {\n 2: 1.88,\n 3: 1.023,\n 4: 0.729,\n 5: 0.577,\n 6: 0.483\n // 다른 샘플 크기에 대한 A2 값 추가...\n }\n\n return a2Values[sampleSize] || 0 // 샘플 크기에 대한 A2 값이 정의되지 않은 경우 0을 반환\n}\n\nexport function calculateXBarAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis {\n // 각 샘플의 평균을 계산\n plots = plots.map(plot => ({\n ...plot,\n xbar: plot.values ? plot.values.reduce((sum, val) => sum + val, 0) / plot.values.length : 0,\n r: Math.max(...plot.values) - Math.min(...plot.values)\n }))\n\n const plotSize = plots[0]?.values?.length // 샘플 크기 추정(모든 그룹이 같은 크기를 가정)\n\n // 각 샘플의 범위(R) 계산\n const ranges = plots.map(plot => {\n if (plot.values) {\n return Math.max(...plot.values) - Math.min(...plot.values)\n }\n return 0\n })\n\n // 범위(R)의 평균 계산\n const averageRange = ranges.reduce((sum, r) => sum + r, 0) / ranges.length\n\n // 전체 평균(중심선, CL) 계산\n const overallMean = plots.reduce((sum, plot) => sum + plot.xbar, 0) / plots.length\n\n const A2 = getA2Value(plotSize)\n const ucl = overallMean + A2 * averageRange\n const lcl = overallMean - A2 * averageRange\n\n return {\n chartType: 'Xbar',\n controlLimits: {\n ucl,\n lcl,\n cl: overallMean\n },\n plots\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { SPCChartPlot, SPCChartAnalysis } from '../../service/spc-chart/spc-chart-type';
2
- export declare function calculateXBarAnalysisResult(plots: SPCChartPlot[]): SPCChartAnalysis;