feat: add RSS feeds management page with automation rules
This commit is contained in:
@@ -135,3 +135,50 @@ export const ideas = mysqlTable("ideas", {
|
||||
|
||||
export type Idea = typeof ideas.$inferSelect;
|
||||
export type InsertIdea = typeof ideas.$inferInsert;
|
||||
|
||||
// ─── Flux RSS ────────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
export const rssFeeds = mysqlTable("rss_feeds", {
|
||||
id: int("id").autoincrement().primaryKey(),
|
||||
// URL du flux RSS
|
||||
url: text("url").notNull(),
|
||||
// Nom descriptif du flux
|
||||
name: varchar("name", { length: 255 }).notNull(),
|
||||
// Type de contenu alimenté par ce flux
|
||||
feedType: mysqlEnum("feedType", ["veille", "aap"]).notNull(),
|
||||
// Pour les flux de type veille : type de veille par défaut
|
||||
defaultTypeVeille: mysqlEnum("defaultTypeVeille", ["reglementaire", "concurrentielle", "technologique", "generale"]),
|
||||
// Pour les flux de type aap : catégorie par défaut
|
||||
defaultCategorieAap: mysqlEnum("defaultCategorieAap", ["Handicap", "PA", "Enfance", "Précarité", "Sanitaire", "Autre"]),
|
||||
// Règles d'automatisme JSON : [{keyword, typeVeille|categorieAap}]
|
||||
autoRules: json("autoRules"),
|
||||
// Actif ou non
|
||||
isActive: boolean("isActive").default(true).notNull(),
|
||||
// Dernière lecture réussie
|
||||
lastFetchedAt: timestamp("lastFetchedAt"),
|
||||
// Dernier statut de lecture
|
||||
lastFetchStatus: mysqlEnum("lastFetchStatus", ["ok", "error", "pending"]).default("pending"),
|
||||
lastFetchError: text("lastFetchError"),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
updatedAt: timestamp("updatedAt").defaultNow().onUpdateNow().notNull(),
|
||||
});
|
||||
|
||||
export type RssFeed = typeof rssFeeds.$inferSelect;
|
||||
export type InsertRssFeed = typeof rssFeeds.$inferInsert;
|
||||
|
||||
// Paramètres globaux RSS (fréquence de lecture, etc.)
|
||||
export const rssSettings = mysqlTable("rss_settings", {
|
||||
id: int("id").autoincrement().primaryKey(),
|
||||
// Fréquence de lecture en minutes (ex: 60, 360, 1440)
|
||||
fetchIntervalMinutes: int("fetchIntervalMinutes").default(360).notNull(),
|
||||
// Heure de lecture automatique (format HH:MM, si mode planifié)
|
||||
scheduledTime: varchar("scheduledTime", { length: 5 }).default("06:00"),
|
||||
// Mode : interval (toutes les N minutes) ou scheduled (heure fixe)
|
||||
fetchMode: mysqlEnum("fetchMode", ["interval", "scheduled"]).default("scheduled").notNull(),
|
||||
// Activer/désactiver la lecture automatique
|
||||
autoFetchEnabled: boolean("autoFetchEnabled").default(true).notNull(),
|
||||
updatedAt: timestamp("updatedAt").defaultNow().onUpdateNow().notNull(),
|
||||
});
|
||||
|
||||
export type RssSettings = typeof rssSettings.$inferSelect;
|
||||
export type InsertRssSettings = typeof rssSettings.$inferInsert;
|
||||
|
||||
Reference in New Issue
Block a user