3.0 KiB
✅ 1. Tabel: users Untuk menyimpan user aplikasi.
Field Type Notes id (PK) uuid name varchar(150) email varchar(150) unique password_hash text role_id (FK) uuid status enum(active, inactive) default active created_at timestamp updated_at timestamp
✅ 2. Tabel: role Field Type id (PK) uuid name varchar(100) description text created_at timestamp updated_at timestamp
✅ 3. Tabel: campaign_type
Jenis campaign umum (misalnya: artikel, short video, banner digital, publikasi medsos)
Field Type id (PK) uuid name varchar(150) description text created_at timestamp updated_at timestamp
✅ 4. Tabel: campaign_destination
Tujuan publikasi spesifik sesuai media/platform.
Contoh:
Website → news section
Instagram → feed, reels, story
Videotron → LED Baliho Jl Gatot Subroto
Twitter/X → timeline
Field Type Notes id (PK) uuid campaign_type_id (FK) uuid untuk mengelompokkan sub_type varchar(100) IG Feed, Stories, TikTok, Videotron Mandiri Tower name varchar(150) nama tujuan description text url varchar(255) opsional is_active boolean default true created_at timestamp updated_at timestamp
✅ 5. Tabel: campaign
Tabel utama campaign/artikel/post.
Field Type Notes id (PK) uuid title varchar(255) tambahan campaign_type_id (FK) uuid start_date date end_date date media_type_selected varchar(100) ex: web, medsos, videotron media_item_selected uuid / json saran: bisa FK ke destination atau JSON array purpose text media_promote boolean yes/no description text creator_id (FK) uuid user pembuat status enum(draft, waiting_approval, approved, rejected, published, archived) workflow created_at timestamp updated_at timestamp
✅ 6. Tabel: campaign_file
Untuk file atau URL yang digunakan dalam campaign.
Field Type id (PK) uuid campaign_id (FK) uuid type enum(url, file) file_url text external_url text is_draft boolean is_publish boolean created_at timestamp updated_at timestamp
✅ 7. Tabel: campaign_destination_relation
Relasi campaign → media tujuan
Campaign bisa di-post ke banyak tempat sekaligus.
Field Type id (PK) uuid campaign_id (FK) uuid destination_id (FK) uuid scheduled_at timestamp publish_status enum(pending, success, failed) publish_response text created_at timestamp updated_at timestamp
✅ 8. Tabel: campaign_approval
Untuk workflow persetujuan.
Field Type id (PK) uuid campaign_id (FK) uuid approver_id (FK) uuid status enum(pending, approved, rejected) notes text created_at timestamp
✅ 9. Tabel: campaign_chat
Chat internal antar user di setiap campaign (komentar, diskusi revisi).
Field Type id (PK) uuid campaign_id (FK) uuid sender_id (FK) uuid message text attachment_url text created_at timestamp