Add account browsing simulation
This commit is contained in:
1 parent
e2d7dc4b82
commit
27012399ec
31 files changed
+1476
-28
No files matched your search
@@ -15,6 +15,51 @@ export const GrowthQuietHoursSchema = z.strictObject({
|
||||
endHour: z.number().int().min(0).max(23),
|
||||
});
|
||||
|
||||
export const BrowsingSettingsSchema = z.strictObject({
|
||||
enabled: z.boolean(),
|
||||
dailyTargetMin: z.number().int(),
|
||||
dailyTargetMax: z.number().int(),
|
||||
postWeight: z.number(),
|
||||
commentWeight: z.number(),
|
||||
quietHours: GrowthQuietHoursSchema,
|
||||
minimumGapMs: z.number().int(),
|
||||
jitterMs: z.number().int(),
|
||||
allowNsfw: z.boolean(),
|
||||
nextDueAt: z.number().nullable(),
|
||||
updatedAt: z.number(),
|
||||
});
|
||||
|
||||
export const BrowsingStatsSchema = z.strictObject({
|
||||
selected: z.number().int(),
|
||||
posts: z.number().int(),
|
||||
comments: z.number().int(),
|
||||
rejected: z.number().int(),
|
||||
skipped: z.number().int(),
|
||||
});
|
||||
|
||||
export const BrowsingDecisionSchema = z.strictObject({
|
||||
thingFullname: z.string(),
|
||||
thingKind: z.enum(['post', 'comment']),
|
||||
postId: z.string(),
|
||||
subreddit: z.string(),
|
||||
author: z.string(),
|
||||
permalink: z.string(),
|
||||
decision: z.enum(['simulated-upvote', 'skipped', 'rejected']),
|
||||
reason: z.string(),
|
||||
decidedAt: z.number(),
|
||||
});
|
||||
|
||||
export const BrowsingSummarySchema = z.strictObject({
|
||||
settings: BrowsingSettingsSchema,
|
||||
todayTarget: z.number().int(),
|
||||
stats: BrowsingStatsSchema,
|
||||
noVotesSubmitted: z.literal(true),
|
||||
});
|
||||
|
||||
export const BrowsingDetailSchema = BrowsingSummarySchema.extend({
|
||||
recentDecisions: z.array(BrowsingDecisionSchema),
|
||||
});
|
||||
|
||||
export const GrowthSubredditSchema = z.strictObject({
|
||||
subreddit: z.string(),
|
||||
enabled: z.boolean(),
|
||||
@@ -82,11 +127,13 @@ export const GrowthAccountSummarySchema = z.strictObject({
|
||||
stats: GrowthStatsSchema,
|
||||
subredditCount: z.number().int(),
|
||||
activeSubredditCount: z.number().int(),
|
||||
browsing: BrowsingSummarySchema,
|
||||
});
|
||||
|
||||
export const GrowthAccountDetailSchema = GrowthAccountSummarySchema.extend({
|
||||
subreddits: z.array(GrowthSubredditSchema),
|
||||
recentComments: z.array(GrowthCommentSchema),
|
||||
browsing: BrowsingDetailSchema,
|
||||
});
|
||||
|
||||
export const GrowthOverviewResponseSchema = z.strictObject({
|
||||
@@ -104,6 +151,18 @@ export const GrowthSettingsUpdateRequestSchema = z.strictObject({
|
||||
allowNsfw: z.boolean().optional(),
|
||||
});
|
||||
|
||||
export const BrowsingSettingsUpdateRequestSchema = z.strictObject({
|
||||
enabled: z.boolean().optional(),
|
||||
dailyTargetMin: z.number().int().min(1).max(12).optional(),
|
||||
dailyTargetMax: z.number().int().min(1).max(12).optional(),
|
||||
postWeight: z.number().min(0).max(100).optional(),
|
||||
commentWeight: z.number().min(0).max(100).optional(),
|
||||
quietHours: GrowthQuietHoursSchema.optional(),
|
||||
minimumGapMs: z.number().int().min(45 * 60_000).max(24 * 60 * 60_000).optional(),
|
||||
jitterMs: z.number().int().min(0).max(6 * 60 * 60_000).optional(),
|
||||
allowNsfw: z.boolean().optional(),
|
||||
});
|
||||
|
||||
export const GrowthPauseRequestSchema = z.strictObject({
|
||||
reason: z.string().min(1).max(200).optional(),
|
||||
});
|
||||
@@ -138,3 +197,9 @@ export type GrowthSettingsUpdateRequest = z.infer<typeof GrowthSettingsUpdateReq
|
||||
export type GrowthSubredditCreateRequest = z.infer<typeof GrowthSubredditCreateRequestSchema>;
|
||||
export type GrowthSubredditUpdateRequest = z.infer<typeof GrowthSubredditUpdateRequestSchema>;
|
||||
export type GrowthAccountResponse = z.infer<typeof GrowthAccountResponseSchema>;
|
||||
export type BrowsingSettings = z.infer<typeof BrowsingSettingsSchema>;
|
||||
export type BrowsingStats = z.infer<typeof BrowsingStatsSchema>;
|
||||
export type BrowsingDecision = z.infer<typeof BrowsingDecisionSchema>;
|
||||
export type BrowsingSummary = z.infer<typeof BrowsingSummarySchema>;
|
||||
export type BrowsingDetail = z.infer<typeof BrowsingDetailSchema>;
|
||||
export type BrowsingSettingsUpdateRequest = z.infer<typeof BrowsingSettingsUpdateRequestSchema>;
|
||||
Reference in new issue
Block a user