eco-helpers 3.0.20 → 3.0.22
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.
- checksums.yaml +4 -4
- data/.idea/.gitignore +10 -0
- data/CHANGELOG.md +55 -5
- data/eco-helpers.gemspec +3 -3
- data/lib/eco/api/common/class_hierarchy.rb +6 -9
- data/lib/eco/api/common/loaders/case_base.rb +12 -4
- data/lib/eco/api/common/loaders/config/cli.rb +9 -0
- data/lib/eco/api/common/loaders/config/workflow/cases_extension.rb +53 -0
- data/lib/eco/api/common/loaders/config/workflow/mailer.rb +2 -14
- data/lib/eco/api/common/loaders/config/workflow.rb +4 -0
- data/lib/eco/api/common/loaders/config.rb +1 -0
- data/lib/eco/api/common/loaders/error_handler.rb +3 -2
- data/lib/eco/api/common/loaders/policy.rb +3 -2
- data/lib/eco/api/common/loaders/use_case/cli_identify.rb +28 -0
- data/lib/eco/api/common/loaders/use_case/target_model.rb +25 -0
- data/lib/eco/api/common/loaders/use_case/type.rb +37 -0
- data/lib/eco/api/common/loaders/use_case.rb +16 -43
- data/lib/eco/api/common/people/default_parsers/xls_parser.rb +1 -1
- data/lib/eco/api/common/session/logger/cache.rb +10 -4
- data/lib/eco/api/common/session/logger/channels.rb +41 -0
- data/lib/eco/api/common/session/logger.rb +9 -0
- data/lib/eco/api/error/handler.rb +6 -4
- data/lib/eco/api/error/handlers.rb +12 -5
- data/lib/eco/api/microcases/people/apply_changes/set_account/account_excluded.rb +34 -0
- data/lib/eco/api/microcases/people/apply_changes/set_account.rb +28 -0
- data/lib/eco/api/microcases/people/apply_changes/set_core/core_excluded.rb +28 -0
- data/lib/eco/api/microcases/people/apply_changes/set_core.rb +27 -0
- data/lib/eco/api/microcases/people/apply_changes/set_core_with_supervisor.rb +38 -0
- data/lib/eco/api/microcases/people/apply_changes/set_supervisor.rb +69 -0
- data/lib/eco/api/microcases/people/apply_changes.rb +19 -0
- data/lib/eco/api/microcases/people/fetch/with_each.rb +109 -0
- data/lib/eco/api/microcases/people/fetch/with_each_leaver.rb +33 -0
- data/lib/eco/api/microcases/people/fetch/with_each_present.rb +42 -0
- data/lib/eco/api/microcases/people/fetch/with_each_starter.rb +43 -0
- data/lib/eco/api/microcases/people/fetch/with_each_subordinate.rb +41 -0
- data/lib/eco/api/microcases/people/fetch/with_supervisor.rb +46 -0
- data/lib/eco/api/microcases/people/fetch.rb +23 -0
- data/lib/eco/api/microcases/people/integrity/fix_default_group.rb +39 -0
- data/lib/eco/api/microcases/people/integrity/fix_filter_tags.rb +55 -0
- data/lib/eco/api/microcases/people/integrity/refresh_default_tag.rb +32 -0
- data/lib/eco/api/microcases/people/integrity.rb +17 -0
- data/lib/eco/api/microcases/people/macro/take_email.rb +141 -0
- data/lib/eco/api/microcases/people/macro.rb +13 -0
- data/lib/eco/api/microcases/people/manage/cache.rb +36 -0
- data/lib/eco/api/microcases/people/manage/load.rb +90 -0
- data/lib/eco/api/microcases/people/manage/refresh.rb +59 -0
- data/lib/eco/api/microcases/people/manage/search.rb +118 -0
- data/lib/eco/api/microcases/people/manage.rb +19 -0
- data/lib/eco/api/microcases/people/preserve/default_tag.rb +29 -0
- data/lib/eco/api/microcases/people/preserve/filter_tags.rb +34 -0
- data/lib/eco/api/microcases/people/preserve/policy_groups.rb +36 -0
- data/lib/eco/api/microcases/people/preserve.rb +17 -0
- data/lib/eco/api/microcases/people.rb +21 -0
- data/lib/eco/api/microcases/person_update.rb +1 -1
- data/lib/eco/api/microcases/s3upload_targets.rb +1 -1
- data/lib/eco/api/microcases/with_each_contractor_present.rb +40 -0
- data/lib/eco/api/microcases.rb +3 -23
- data/lib/eco/api/organization/people/multiple_search_results.rb +48 -0
- data/lib/eco/api/organization/{people_similarity.rb → people/similarity.rb} +89 -72
- data/lib/eco/api/organization/people.rb +40 -66
- data/lib/eco/api/organization.rb +0 -1
- data/lib/eco/api/policies/policy.rb +7 -5
- data/lib/eco/api/policies.rb +9 -4
- data/lib/eco/api/session/batch/feedback/generate.rb +60 -0
- data/lib/eco/api/session/batch/feedback/getters.rb +28 -0
- data/lib/eco/api/session/batch/feedback/identifiers.rb +20 -0
- data/lib/eco/api/session/batch/feedback/job_dependencies.rb +45 -0
- data/lib/eco/api/session/batch/feedback/request_stat.rb +27 -0
- data/lib/eco/api/session/batch/feedback/request_stats.rb +270 -0
- data/lib/eco/api/session/batch/feedback.rb +45 -119
- data/lib/eco/api/session/batch/job/sets.rb +23 -0
- data/lib/eco/api/session/batch/job/type.rb +22 -0
- data/lib/eco/api/session/batch/job.rb +19 -18
- data/lib/eco/api/session/batch/jobs.rb +6 -2
- data/lib/eco/api/session/batch/launcher/mode_size.rb +1 -1
- data/lib/eco/api/session/batch/launcher/retry.rb +4 -4
- data/lib/eco/api/session/batch/launcher.rb +2 -2
- data/lib/eco/api/session/batch/policies.rb +4 -4
- data/lib/eco/api/session/batch/searcher.rb +2 -1
- data/lib/eco/api/session/batch.rb +0 -1
- data/lib/eco/api/session/config/workflow.rb +19 -9
- data/lib/eco/api/usecases/base_case/model.rb +54 -0
- data/lib/eco/api/usecases/base_case/type.rb +52 -0
- data/lib/eco/api/usecases/base_case.rb +5 -29
- data/lib/eco/api/usecases/base_io/chaining.rb +48 -0
- data/lib/eco/api/usecases/base_io/validations.rb +114 -0
- data/lib/eco/api/usecases/base_io.rb +65 -115
- data/lib/eco/api/usecases/cli/dsl.rb +3 -1
- data/lib/eco/api/usecases/default/people/treat/analyse_people_case.rb +7 -4
- data/lib/eco/api/usecases/default/people/treat/supers_cyclic_identify_case.rb +1 -3
- data/lib/eco/api/usecases/default/people/treat/supers_hierarchy_case.rb +1 -5
- data/lib/eco/api/usecases/default_cases/entries_to_csv_case.rb +2 -2
- data/lib/eco/api/usecases/default_cases/hris_case.rb +0 -2
- data/lib/eco/api/usecases/default_cases/to_csv_case.rb +3 -6
- data/lib/eco/api/usecases/graphql/base.rb +3 -2
- data/lib/eco/api/usecases/graphql/helpers/base/case_env.rb +1 -1
- data/lib/eco/api/usecases/graphql/helpers/base/error_handling.rb +3 -3
- data/lib/eco/api/usecases/graphql/helpers/contractors/base/load.rb +17 -0
- data/lib/eco/api/usecases/graphql/helpers/contractors/base.rb +8 -0
- data/lib/eco/api/usecases/graphql/helpers/contractors.rb +6 -0
- data/lib/eco/api/usecases/graphql/helpers/location/base.rb +5 -4
- data/lib/eco/api/usecases/graphql/helpers/location/command.rb +2 -2
- data/lib/eco/api/usecases/graphql/helpers.rb +1 -0
- data/lib/eco/api/usecases/graphql/samples/contractors/dsl.rb +5 -0
- data/lib/eco/api/usecases/graphql/samples/contractors.rb +17 -0
- data/lib/eco/api/usecases/graphql/samples/location/service/base.rb +1 -1
- data/lib/eco/api/usecases/graphql/samples/location.rb +1 -1
- data/lib/eco/api/usecases/graphql/samples.rb +1 -0
- data/lib/eco/api/usecases/ooze_samples/ooze_base_case.rb +0 -1
- data/lib/eco/api/usecases/ooze_samples/ooze_run_base_case.rb +8 -8
- data/lib/eco/api/usecases/use_case/chainer.rb +12 -0
- data/lib/eco/api/usecases/use_case.rb +32 -23
- data/lib/eco/api/usecases/use_case_chain/chaining.rb +88 -0
- data/lib/eco/api/usecases/use_case_chain.rb +17 -62
- data/lib/eco/api/usecases/use_case_io/chain.rb +24 -0
- data/lib/eco/api/usecases/use_case_io.rb +17 -22
- data/lib/eco/api/usecases.rb +12 -4
- data/lib/eco/assets.rb +1 -1
- data/lib/eco/cli/config/filters/people_filters.rb +6 -5
- data/lib/eco/cli/config/input.rb +6 -2
- data/lib/eco/cli/config/use_cases.rb +4 -2
- data/lib/eco/cli_default/input.rb +49 -29
- data/lib/eco/cli_default/options.rb +4 -1
- data/lib/eco/cli_default/people.rb +102 -47
- data/lib/eco/cli_default/people_filters.rb +5 -1
- data/lib/eco/cli_default/workflow.rb +149 -138
- data/lib/eco/data/mapper.rb +51 -19
- data/lib/eco/language/auxiliar_logger.rb +16 -3
- data/lib/eco/language/basic_logger.rb +1 -0
- data/lib/eco/language/methods/dsl_able.rb +3 -0
- data/lib/eco/version.rb +1 -1
- metadata +68 -33
- data/lib/eco/api/microcases/account_excluded.rb +0 -26
- data/lib/eco/api/microcases/core_excluded.rb +0 -20
- data/lib/eco/api/microcases/fix_default_group.rb +0 -33
- data/lib/eco/api/microcases/fix_filter_tags.rb +0 -49
- data/lib/eco/api/microcases/people_cache.rb +0 -30
- data/lib/eco/api/microcases/people_load.rb +0 -84
- data/lib/eco/api/microcases/people_refresh.rb +0 -53
- data/lib/eco/api/microcases/people_search.rb +0 -112
- data/lib/eco/api/microcases/preserve_default_tag.rb +0 -23
- data/lib/eco/api/microcases/preserve_filter_tags.rb +0 -28
- data/lib/eco/api/microcases/preserve_policy_groups.rb +0 -30
- data/lib/eco/api/microcases/refresh_default_tag.rb +0 -26
- data/lib/eco/api/microcases/set_account.rb +0 -18
- data/lib/eco/api/microcases/set_core.rb +0 -17
- data/lib/eco/api/microcases/set_core_with_supervisor.rb +0 -32
- data/lib/eco/api/microcases/set_supervisor.rb +0 -63
- data/lib/eco/api/microcases/take_email_from_account.rb +0 -129
- data/lib/eco/api/microcases/with_each.rb +0 -103
- data/lib/eco/api/microcases/with_each_leaver.rb +0 -27
- data/lib/eco/api/microcases/with_each_present.rb +0 -36
- data/lib/eco/api/microcases/with_each_starter.rb +0 -37
- data/lib/eco/api/microcases/with_each_subordinate.rb +0 -33
- data/lib/eco/api/microcases/with_supervisor.rb +0 -35
- data/lib/eco/api/session/batch/request_stats.rb +0 -266
@@ -1,266 +0,0 @@
|
|
1
|
-
module Eco
|
2
|
-
module API
|
3
|
-
class Session
|
4
|
-
class Batch
|
5
|
-
# @attr_reader count [Integer] the total number of requests
|
6
|
-
# @attr_reader stats [Hash] plain `Hash` with the number of requests that include an attribute
|
7
|
-
class RequestStats
|
8
|
-
CORE_ATTRS = Eco::API::Common::People::PersonParser::CORE_ATTRS
|
9
|
-
ACCOUNT_ATTRS = (Eco::API::Common::People::PersonParser::ACCOUNT_ATTRS + ['permissions_custom']).uniq
|
10
|
-
DETAILS_ATTRS = ['fields'].freeze
|
11
|
-
BLANKED_PREFIX = 'blanked_'.freeze
|
12
|
-
DETAILS_FIELDS = 'details_fields'.freeze
|
13
|
-
|
14
|
-
class << self
|
15
|
-
def valid_type?(type)
|
16
|
-
Eco::API::Session::Batch::Job.valid_type?(type.to_sym)
|
17
|
-
end
|
18
|
-
|
19
|
-
def core_attrs(stats: false, all: false)
|
20
|
-
CORE_ATTRS.dup.tap do |attrs|
|
21
|
-
next unless stats || all
|
22
|
-
|
23
|
-
attrs.unshift('core')
|
24
|
-
attrs.concat(blank_attrs(CORE_ATTRS))
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def account_attrs(stats: false, all: false)
|
29
|
-
ACCOUNT_ATTRS.dup.tap do |attrs|
|
30
|
-
next unless stats || all
|
31
|
-
|
32
|
-
attrs.unshift('account_remove')
|
33
|
-
attrs.unshift('account') if all
|
34
|
-
attrs.concat(blank_attrs(ACCOUNT_ATTRS))
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def details_attrs(stats: false, all: false)
|
39
|
-
DETAILS_ATTRS.dup.tap do |attrs|
|
40
|
-
next unless stats || all
|
41
|
-
|
42
|
-
attrs.unshift('details_remove')
|
43
|
-
attrs.unshift('details') if all
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def blanked_prefix(attr = nil)
|
48
|
-
@blanked_prefix ||= BLANKED_PREFIX
|
49
|
-
return @blanked_prefix unless attr
|
50
|
-
|
51
|
-
"#{blanked_prefix}#{attr}"
|
52
|
-
end
|
53
|
-
|
54
|
-
def blanked_prefix=(value)
|
55
|
-
@blanked_prefix = value || blanked_prefix
|
56
|
-
end
|
57
|
-
|
58
|
-
def blank_attrs(attrs)
|
59
|
-
attrs.map {|attr| "#{blanked_prefix}#{attr}"}
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
attr_reader :type, :count
|
64
|
-
|
65
|
-
def initialize(type:, requests: [])
|
66
|
-
msg = "Type should be one of #{Eco::API::Session::Batch::Job.types}. Given: #{type}"
|
67
|
-
raise msg unless self.class.valid_type?(type.to_sym)
|
68
|
-
|
69
|
-
@type = type.to_sym
|
70
|
-
@count = requests&.length
|
71
|
-
@stats = build(requests)
|
72
|
-
end
|
73
|
-
|
74
|
-
def to_h
|
75
|
-
@stats
|
76
|
-
end
|
77
|
-
|
78
|
-
def message(percent: false)
|
79
|
-
lines = []
|
80
|
-
lines << pairs_to_line(core_pairs(percent: percent))
|
81
|
-
lines << pairs_to_line(account_pairs(percent: percent))
|
82
|
-
lines << pairs_to_line(details_pairs(percent: percent))
|
83
|
-
lines.join("\n")
|
84
|
-
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
def attr_value(attr, percent: false, total: count, details: false)
|
89
|
-
target = details ? (@stats[DETAILS_FIELDS] || {}) : @stats
|
90
|
-
i = target[attr.to_s]
|
91
|
-
return i unless percent
|
92
|
-
|
93
|
-
percentage(i, total: total)
|
94
|
-
end
|
95
|
-
|
96
|
-
def core(percent: false)
|
97
|
-
attr_value('core', percent: percent)
|
98
|
-
end
|
99
|
-
|
100
|
-
def account(percent: false)
|
101
|
-
attr_value('account', percent: percent)
|
102
|
-
end
|
103
|
-
|
104
|
-
def details(percent: false)
|
105
|
-
attr_value('details', percent: percent)
|
106
|
-
end
|
107
|
-
|
108
|
-
def stats
|
109
|
-
@stats ||= Hash.new(0)
|
110
|
-
end
|
111
|
-
|
112
|
-
def build(requests)
|
113
|
-
stats.tap do |stats|
|
114
|
-
stats[type] = count
|
115
|
-
|
116
|
-
no_requests =
|
117
|
-
!requests ||
|
118
|
-
!requests.is_a?(Enumerable) ||
|
119
|
-
requests.empty?
|
120
|
-
|
121
|
-
next if no_requests
|
122
|
-
|
123
|
-
stats[DETAILS_FIELDS] = Hash.new(0)
|
124
|
-
|
125
|
-
requests.each do |request|
|
126
|
-
add_core_stats(stats, request || {})
|
127
|
-
add_account_stats(stats, request || {})
|
128
|
-
add_details_stats(stats, request || {})
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def attrs_to_stat(stats, hash, attrs)
|
134
|
-
stats.tap do |st|
|
135
|
-
attrs.each do |attr|
|
136
|
-
next unless hash.key?(attr)
|
137
|
-
|
138
|
-
st[attr] += 1
|
139
|
-
next unless blanked_value?(hash[attr])
|
140
|
-
|
141
|
-
st[blanked_prefix(attr)]+= 1
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
def add_core_stats(stats, request)
|
147
|
-
any_core = !(request.keys & core_attrs).empty? # rubocop:disable Style/ArrayIntersect
|
148
|
-
stats['core'] += 1 if any_core
|
149
|
-
|
150
|
-
attrs_to_stat(stats, request, core_attrs)
|
151
|
-
end
|
152
|
-
|
153
|
-
def add_account_stats(stats, request)
|
154
|
-
return unless request.key?('account')
|
155
|
-
|
156
|
-
stats['account'] += 1
|
157
|
-
stats['account_remove'] += 1 unless request['account']
|
158
|
-
|
159
|
-
attrs_to_stat(stats, request['account'] || {}, account_attrs)
|
160
|
-
end
|
161
|
-
|
162
|
-
def add_details_stats(stats, request)
|
163
|
-
return unless request.key?('details')
|
164
|
-
|
165
|
-
stats['details'] += 1
|
166
|
-
stats['details_remove'] += 1 unless request['details']
|
167
|
-
|
168
|
-
det_attrs = {}
|
169
|
-
if (fields = request.dig('details', 'fields'))
|
170
|
-
stats['fields'] += fields.length
|
171
|
-
|
172
|
-
det_attrs = fields.each_with_object(det_attrs) do |fld, hash|
|
173
|
-
hash[fld['alt_id']] = fld['value']
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
attrs_to_stat(stats[DETAILS_FIELDS], det_attrs, det_attrs.keys)
|
178
|
-
end
|
179
|
-
|
180
|
-
def core_pairs(percent: false)
|
181
|
-
cattrs = core_attrs + blank_attrs(core_attrs)
|
182
|
-
[['core', core(percent: percent)]] + pairs(cattrs, percent: percent, total: core)
|
183
|
-
end
|
184
|
-
|
185
|
-
def account_pairs(percent: false)
|
186
|
-
aattrs = ['account_remove'] + account_attrs + blank_attrs(account_attrs)
|
187
|
-
[['account', account(percent: percent)]] + pairs(aattrs, percent: percent, total: account)
|
188
|
-
end
|
189
|
-
|
190
|
-
def details_pairs(percent: false)
|
191
|
-
det_pairs = [['details', details(percent: percent)]]
|
192
|
-
det_pairs += [['fields', fields_average]] if attr_value('fields') && fields_average
|
193
|
-
det_pairs += pairs(['details_remove'], percent: percent, total: details)
|
194
|
-
det_pairs += pairs(details_field_attrs, percent: percent, total: details, details: true)
|
195
|
-
det_pairs
|
196
|
-
end
|
197
|
-
|
198
|
-
def pairs(attrs, percent: false, total: count, details: false)
|
199
|
-
attrs.map do |a|
|
200
|
-
value = attr_value(a, percent: percent, total: total, details: details)
|
201
|
-
value.positive? ? [a, value] : nil
|
202
|
-
end.compact
|
203
|
-
end
|
204
|
-
|
205
|
-
def pairs_to_line(pairs, percent: false)
|
206
|
-
key_val_delimiter = ': '; attr_delimiter = ' ++ '
|
207
|
-
pairs.map do |p|
|
208
|
-
[p.first.to_s, "#{p.last}#{percent ? '%' : ''}"].join(key_val_delimiter)
|
209
|
-
end.join(attr_delimiter)
|
210
|
-
end
|
211
|
-
|
212
|
-
def core_attrs
|
213
|
-
@core_attrs ||= self.class.core_attrs
|
214
|
-
end
|
215
|
-
|
216
|
-
def account_attrs
|
217
|
-
@account_attrs ||= self.class.account_attrs
|
218
|
-
end
|
219
|
-
|
220
|
-
def details_attrs
|
221
|
-
@details_attrs ||= self.class.details_attrs
|
222
|
-
end
|
223
|
-
|
224
|
-
def details_field_attrs
|
225
|
-
@stats[DETAILS_FIELDS].keys
|
226
|
-
end
|
227
|
-
|
228
|
-
def blank_attrs(attrs)
|
229
|
-
self.class.blank_attrs(attrs)
|
230
|
-
end
|
231
|
-
|
232
|
-
def blanked_prefix(attr = nil)
|
233
|
-
self.class.blanked_prefix(attr)
|
234
|
-
end
|
235
|
-
|
236
|
-
def blanked_value?(value)
|
237
|
-
case value
|
238
|
-
when nil, false
|
239
|
-
true
|
240
|
-
when Numeric
|
241
|
-
value.zero?
|
242
|
-
when Array
|
243
|
-
value.compact.empty?
|
244
|
-
when String
|
245
|
-
value.to_s.strip.empty?
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
def fields_average
|
250
|
-
fields_num = attr_value('fields')
|
251
|
-
return unless fields_num && (total = details).positive?
|
252
|
-
|
253
|
-
(fields_num / total.to_f).round(2)
|
254
|
-
end
|
255
|
-
|
256
|
-
def percentage(num, total: count)
|
257
|
-
return unless num
|
258
|
-
|
259
|
-
total ||= count
|
260
|
-
(num.to_f / total * 100).round(2)
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
264
|
-
end
|
265
|
-
end
|
266
|
-
end
|