feat(news): add scraper adapters, article deduplication, blocklist service, and remove tracked publish artifacts
This commit is contained in:
@@ -76,6 +76,33 @@ namespace FinlyticNews.Migrations
|
||||
b.ToTable("ArticleSources");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FinlyticNews.Entities.BlockedNewsUrlEntity", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b.Property<DateTime>("BlockedAtUtc")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("Reason")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("character varying(256)");
|
||||
|
||||
b.Property<string>("Url")
|
||||
.IsRequired()
|
||||
.HasMaxLength(2048)
|
||||
.HasColumnType("character varying(2048)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("Url")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("BlockedNewsUrls");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FinlyticNews.Entities.MatchedAssetEntity", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
@@ -124,6 +151,9 @@ namespace FinlyticNews.Migrations
|
||||
b.Property<DateTime>("ScrapedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<long?>("SimHash")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<string>("SourceUrl")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
@@ -139,48 +169,26 @@ namespace FinlyticNews.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("TitleHash")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("character varying(64)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("SimHash");
|
||||
|
||||
b.HasIndex("SourceUrl")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("Status");
|
||||
|
||||
b.HasIndex("TitleHash");
|
||||
|
||||
b.HasIndex("PublishedAt", "ScrapedAt");
|
||||
|
||||
b.ToTable("NewsArticles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FinlyticNews.Entities.NewsSettingsEntity", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b.Property<int>("ArticleRetentionDays")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("DefaultPageSize")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("N8nWebhookUrl")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("PollingFrequencyMinutes")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("ScrapingIntervalMinutes")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("UpdatedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Settings");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FinlyticNews.Entities.MatchedAssetEntity", b =>
|
||||
{
|
||||
b.HasOne("FinlyticNews.Entities.NewsArticleEntity", "NewsArticle")
|
||||
|
||||
Reference in New Issue
Block a user