@grapadigital/shared-schemas 1.0.230 → 1.0.232

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.
@@ -148,6 +148,8 @@ export declare class Action {
148
148
  phases?: ActionPhase[];
149
149
  /** Metas da Ação: mesmo { metric, value } e catálogo dos Tiers do cliente. Ver GD-691. */
150
150
  goals?: ClientMetricGoal[];
151
+ /** Fora dos relatórios do cliente no Hub (total de campanhas, lista e métricas). */
152
+ hideFromReports?: boolean;
151
153
  }
152
154
  export declare const ActionSchema: MongooseSchema<Action, import("mongoose").Model<Action, any, any, any, import("mongoose").Document<unknown, any, Action, any, {}> & Action & Required<{
153
155
  _id: Types.ObjectId;
@@ -368,6 +368,11 @@ __decorate([
368
368
  (0, mongoose_1.Prop)({ type: [client_schema_1.ClientMetricGoalSchema], default: [] }),
369
369
  __metadata("design:type", Array)
370
370
  ], Action.prototype, "goals", void 0);
371
+ __decorate([
372
+ (0, swagger_1.ApiProperty)({ required: false, default: false }),
373
+ (0, mongoose_1.Prop)({ type: Boolean, default: false }),
374
+ __metadata("design:type", Boolean)
375
+ ], Action.prototype, "hideFromReports", void 0);
371
376
  Action = __decorate([
372
377
  (0, mongoose_1.Schema)({ timestamps: true })
373
378
  ], Action);
@@ -40,7 +40,7 @@ export type ClientCustomization = (typeof CLIENT_CUSTOMIZATION_VALUES)[number];
40
40
  * `viralReachEngagementRate` é o limite de viral e só vale no Tier.
41
41
  * Ver GD-687.
42
42
  */
43
- export declare const CLIENT_GOAL_METRIC_VALUES: readonly ["potentialReach", "reachCount", "impressionCount", "engagementCount", "engagementRate", "reachEngagementRate", "qualifiedEngagementRate", "effectiveReach", "earnedMediaValue", "score", "costPerInfluency", "costPerImpact", "costPerEngagement", "savedCount", "shareCount", "videoCompletionRate", "viralReachEngagementRate"];
43
+ export declare const CLIENT_GOAL_METRIC_VALUES: readonly ["potentialReach", "reachCount", "impressionCount", "engagementCount", "engagementRate", "reachEngagementRate", "followersEngagementRate", "qualifiedEngagementRate", "effectiveReach", "earnedMediaValue", "score", "costPerInfluency", "costPerImpact", "costPerEngagement", "savedCount", "shareCount", "videoCompletionRate", "viralReachEngagementRate"];
44
44
  export type ClientGoalMetric = (typeof CLIENT_GOAL_METRIC_VALUES)[number];
45
45
  export type ClientGoalMetricUnit = 'count' | 'rate' | 'currency';
46
46
  /** Unidade de cada métrica. `rate` é guardado como fração (0,10 = 10%). */
@@ -33,6 +33,7 @@ exports.CLIENT_GOAL_METRIC_VALUES = [
33
33
  'engagementCount',
34
34
  'engagementRate',
35
35
  'reachEngagementRate',
36
+ 'followersEngagementRate',
36
37
  'qualifiedEngagementRate',
37
38
  'effectiveReach',
38
39
  'earnedMediaValue',
@@ -53,6 +54,7 @@ exports.CLIENT_GOAL_METRIC_UNITS = {
53
54
  engagementCount: 'count',
54
55
  engagementRate: 'rate',
55
56
  reachEngagementRate: 'rate',
57
+ followersEngagementRate: 'rate',
56
58
  qualifiedEngagementRate: 'rate',
57
59
  effectiveReach: 'count',
58
60
  earnedMediaValue: 'currency',
@@ -126,6 +126,15 @@ export declare class Metrics {
126
126
  reachEngagementRate?: number | null;
127
127
  /** Tx. de Engaj. por Seguidores: engagementCount ÷ potentialReach (fração). Ver GD-703. */
128
128
  followersEngagementRate?: number | null;
129
+ /**
130
+ * Engajamento ponderado do Real E/R (pesos do genc): curtidas×1 + comentários
131
+ * curados×2 + compartilhamentos×3 + salvos×3 + respostas×2 + cliques×6 +
132
+ * toques×1. Comentário curado = alvo marca ou conteúdo, fora de spam. null em
133
+ * story, sem GenIA ou sem comentários classificados. Ver GD-720.
134
+ */
135
+ curatedEngagementCount?: number | null;
136
+ /** Real E/R: curatedEngagementCount ÷ potentialReach (fração). Ver GD-720. */
137
+ curatedEngagementRate?: number | null;
129
138
  /** Nome do Client.tiers pelo potentialReach do post; null sem Tiers ou fora das faixas. Ver GD-703. */
130
139
  tier?: string | null;
131
140
  /**
@@ -219,6 +219,14 @@ __decorate([
219
219
  (0, mongoose_1.Prop)({ type: Number, required: false, default: null }),
220
220
  __metadata("design:type", Object)
221
221
  ], Metrics.prototype, "followersEngagementRate", void 0);
222
+ __decorate([
223
+ (0, mongoose_1.Prop)({ type: Number, required: false, default: null }),
224
+ __metadata("design:type", Object)
225
+ ], Metrics.prototype, "curatedEngagementCount", void 0);
226
+ __decorate([
227
+ (0, mongoose_1.Prop)({ type: Number, required: false, default: null }),
228
+ __metadata("design:type", Object)
229
+ ], Metrics.prototype, "curatedEngagementRate", void 0);
222
230
  __decorate([
223
231
  (0, mongoose_1.Prop)({ type: String, required: false, default: null }),
224
232
  __metadata("design:type", Object)
@@ -190,6 +190,12 @@ export declare class Scope {
190
190
  optIn?: OptIn;
191
191
  exchange?: Exchange;
192
192
  exclusivity?: boolean;
193
+ /**
194
+ * Squad do Influenciador nesta Ação (ex.: "Team Galaxy", "Content Creator",
195
+ * "Tech"). Nasce com o Squad do Contrato e é editável no escopo; os filtros de
196
+ * Squad da Samsung no Hub usam este valor.
197
+ */
198
+ squad?: string | null;
193
199
  estimates?: ScopeEstimates;
194
200
  }
195
201
  export declare const ScopeSchema: MongooseSchema<Scope, import("mongoose").Model<Scope, any, any, any, import("mongoose").Document<unknown, any, Scope, any, {}> & Scope & {
@@ -286,6 +286,10 @@ __decorate([
286
286
  (0, mongoose_1.Prop)({ required: false }),
287
287
  __metadata("design:type", Boolean)
288
288
  ], Scope.prototype, "exclusivity", void 0);
289
+ __decorate([
290
+ (0, mongoose_1.Prop)({ type: String, required: false, default: null }),
291
+ __metadata("design:type", Object)
292
+ ], Scope.prototype, "squad", void 0);
289
293
  __decorate([
290
294
  (0, mongoose_1.Prop)({ type: exports.ScopeEstimatesSchema, required: false }),
291
295
  __metadata("design:type", ScopeEstimates)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grapadigital/shared-schemas",
3
- "version": "1.0.230",
3
+ "version": "1.0.232",
4
4
  "description": "Shared Mongoose Schemas",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -324,6 +324,11 @@ export class Action {
324
324
  @ApiProperty({ type: () => [ClientMetricGoal], required: false })
325
325
  @Prop({ type: [ClientMetricGoalSchema], default: [] })
326
326
  goals?: ClientMetricGoal[];
327
+
328
+ /** Fora dos relatórios do cliente no Hub (total de campanhas, lista e métricas). */
329
+ @ApiProperty({ required: false, default: false })
330
+ @Prop({ type: Boolean, default: false })
331
+ hideFromReports?: boolean;
327
332
  }
328
333
 
329
334
  export const ActionSchema = SchemaFactory.createForClass(Action);
@@ -32,6 +32,7 @@ export const CLIENT_GOAL_METRIC_VALUES = [
32
32
  'engagementCount',
33
33
  'engagementRate',
34
34
  'reachEngagementRate',
35
+ 'followersEngagementRate',
35
36
  'qualifiedEngagementRate',
36
37
  'effectiveReach',
37
38
  'earnedMediaValue',
@@ -56,6 +57,7 @@ export const CLIENT_GOAL_METRIC_UNITS: Record<ClientGoalMetric, ClientGoalMetric
56
57
  engagementCount: 'count',
57
58
  engagementRate: 'rate',
58
59
  reachEngagementRate: 'rate',
60
+ followersEngagementRate: 'rate',
59
61
  qualifiedEngagementRate: 'rate',
60
62
  effectiveReach: 'count',
61
63
  earnedMediaValue: 'currency',
@@ -177,6 +177,19 @@ export class Metrics {
177
177
  @Prop({ type: Number, required: false, default: null })
178
178
  followersEngagementRate?: number | null;
179
179
 
180
+ /**
181
+ * Engajamento ponderado do Real E/R (pesos do genc): curtidas×1 + comentários
182
+ * curados×2 + compartilhamentos×3 + salvos×3 + respostas×2 + cliques×6 +
183
+ * toques×1. Comentário curado = alvo marca ou conteúdo, fora de spam. null em
184
+ * story, sem GenIA ou sem comentários classificados. Ver GD-720.
185
+ */
186
+ @Prop({ type: Number, required: false, default: null })
187
+ curatedEngagementCount?: number | null;
188
+
189
+ /** Real E/R: curatedEngagementCount ÷ potentialReach (fração). Ver GD-720. */
190
+ @Prop({ type: Number, required: false, default: null })
191
+ curatedEngagementRate?: number | null;
192
+
180
193
  /** Nome do Client.tiers pelo potentialReach do post; null sem Tiers ou fora das faixas. Ver GD-703. */
181
194
  @Prop({ type: String, required: false, default: null })
182
195
  tier?: string | null;
@@ -184,6 +184,14 @@ export class Scope {
184
184
  @Prop({ required: false })
185
185
  exclusivity?: boolean;
186
186
 
187
+ /**
188
+ * Squad do Influenciador nesta Ação (ex.: "Team Galaxy", "Content Creator",
189
+ * "Tech"). Nasce com o Squad do Contrato e é editável no escopo; os filtros de
190
+ * Squad da Samsung no Hub usam este valor.
191
+ */
192
+ @Prop({ type: String, required: false, default: null })
193
+ squad?: string | null;
194
+
187
195
  @Prop({ type: ScopeEstimatesSchema, required: false })
188
196
  estimates?: ScopeEstimates;
189
197
  }