jaecoo-be/plan/development-plan.md

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