| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- using Domain.Entities.Forum.Posts;
- using System.ComponentModel.DataAnnotations;
- using System.ComponentModel.DataAnnotations.Schema;
- namespace Domain.Entities.Forum.Briefings;
- /// <summary>
- /// 장전 브리핑 발행 기록 (d2 §③·§⑥ M3) — 매 영업일 07:30 KST DailyBriefingPublisher 가 전일 지수·등락상위·공시를
- /// 취합해 briefing 보드에 시스템 계정으로 Post 를 발행하고 이 행을 남긴다.
- /// BriefingDate 가 UNIQUE 이므로 같은 날 중복 발행을 방지한다(멱등). PostID 는 발행된 게시글을 가리킨다.
- /// </summary>
- public class DailyBriefing
- {
- [ForeignKey(nameof(PostID))]
- public virtual Post Post { get; private set; } = null!;
- [Key]
- public int ID { get; private set; }
- /// <summary>브리핑 대상 일자 (KST, UNIQUE) — 발행 실행일.</summary>
- public DateOnly BriefingDate { get; private set; }
- /// <summary>발행된 게시글 ID (FK Post).</summary>
- public int PostID { get; private set; }
- public DateTime GeneratedAt { get; private set; } = DateTime.UtcNow;
- private DailyBriefing() { }
- public static DailyBriefing Create(DateOnly briefingDate, int postID)
- {
- ArgumentOutOfRangeException.ThrowIfNegativeOrZero(postID);
- return new DailyBriefing
- {
- BriefingDate = briefingDate,
- PostID = postID
- };
- }
- }
|