Files
BMAD-METHOD/demos/v3-output-demo-files/data-models.md
2025-05-21 20:24:31 -05:00

2.1 KiB

Data Models

Core Application Entities

a. Episode

  • Attributes: episodeId (PK, UUID), publicationDate (YYYY-MM-DD), episodeNumber (Number), podcastGeneratedTitle (String), audioS3Bucket (String), audioS3Key (String), audioUrl (String, derived for API), playAiJobId (String), playAiSourceAudioUrl (String), sourceHNPosts (List of SourceHNPost), status (String: "PROCESSING", "PUBLISHED", "FAILED"), createdAt (ISO Timestamp), updatedAt (ISO Timestamp).

b. SourceHNPost (object within Episode.sourceHNPosts)

  • Attributes: hnPostId (String), title (String), originalArticleUrl (String), hnLink (String), isUpdateStatus (Boolean), oldRank (Number, Optional), lastCommentFetchTimestamp (Number, Unix Timestamp), articleScrapingFailed (Boolean), articleTitleFromScrape (String, Optional).

c. HackerNewsPostProcessState (DynamoDB Table)

  • Attributes: hnPostId (PK, String), originalArticleUrl (String), articleTitleFromScrape (String, Optional), lastSuccessfullyScrapedTimestamp (Number, Optional), lastCommentFetchTimestamp (Number, Optional), firstProcessedDate (YYYY-MM-DD), lastProcessedDate (YYYY-MM-DD), lastKnownRank (Number, Optional).

API Payload Schemas (Internal API)

a. EpisodeListItem (for GET /episodes)

  • episodeId, publicationDate, episodeNumber, podcastGeneratedTitle.

b. EpisodeDetail (for GET /episodes/{episodeId})

  • episodeId, publicationDate, episodeNumber, podcastGeneratedTitle, audioUrl, sourceHNPosts (list of SourceHNPostDetail containing hnPostId, title, originalArticleUrl, hnLink, isUpdateStatus, oldRank), playAiJobId (optional), playAiSourceAudioUrl (optional), createdAt.

Database Schemas (AWS DynamoDB)

a. BmadDailyDigestEpisodes Table

  • PK: episodeId (String).
  • Attributes: As per Episode entity.
  • GSI Example (PublicationDateIndex): PK: status, SK: publicationDate.
  • Billing: PAY_PER_REQUEST.

b. HackerNewsPostProcessState Table

  • PK: hnPostId (String).
  • Attributes: As per HackerNewsPostProcessState entity.
  • Billing: PAY_PER_REQUEST.