-- ============================================================================ -- DATABASE EXTENSION FOR ESIMLAO PROJECT -- Based on infigate.vn website features and existing LAOS_ESIM schema -- Oracle Database SQL Script -- Created: 2025-12-29 -- ============================================================================ -- ============================================================================ -- I. EXTEND EXISTING CUSTOMER_INFO TABLE FOR GMAIL LOGIN -- ============================================================================ -- Add new columns to existing CUSTOMER_INFO table for authentication ALTER TABLE LAOS_ESIM.CUSTOMER_INFO ADD ( GOOGLE_ID VARCHAR2(200), AVATAR_URL VARCHAR2(1000), PASSWORD_HASH VARCHAR2(500), STATUS NUMBER(1) DEFAULT 1, IS_VERIFIED NUMBER(1) DEFAULT 0, LAST_LOGIN_DATE DATE ); COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.GOOGLE_ID IS 'ID tu Google OAuth khi dang nhap bang Gmail'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.AVATAR_URL IS 'Duong dan anh dai dien tu Google'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.PASSWORD_HASH IS 'Mat khau ma hoa (neu dang nhap bang password)'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.STATUS IS 'Trang thai tai khoan: 0=Khoa, 1=Hoat dong'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.IS_VERIFIED IS 'Da xac thuc email: 0=Chua, 1=Da xac thuc'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.LAST_LOGIN_DATE IS 'Thoi gian dang nhap gan nhat'; -- Add comments for existing columns (if not already added) COMMENT ON TABLE LAOS_ESIM.CUSTOMER_INFO IS 'Bang thong tin khach hang va tai khoan dang nhap'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.ID IS 'ID tu dong tang cua khach hang'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.SUR_NAME IS 'Ho cua khach hang'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.LAST_NAME IS 'Ten cua khach hang'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.EMAIL IS 'Dia chi email (dung de dang nhap)'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.PHONE_NUMBER IS 'So dien thoai lien he'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.CREATED_DATE IS 'Ngay tao tai khoan'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_INFO.LAST_UPDATE IS 'Ngay cap nhat gan nhat'; -- Create unique index on EMAIL for login CREATE UNIQUE INDEX LAOS_ESIM.CUSTOMER_INFO_EMAIL_UQ ON LAOS_ESIM.CUSTOMER_INFO(EMAIL); -- ============================================================================ -- II. OTP VERIFICATION TABLE -- ============================================================================ CREATE TABLE LAOS_ESIM.OTP_VERIFICATION ( ID NUMBER(10) NOT NULL, CUSTOMER_ID NUMBER(10), USER_EMAIL VARCHAR2(200) NOT NULL, OTP_CODE VARCHAR2(10) NOT NULL, OTP_TYPE NUMBER(2) DEFAULT 1, EXPIRED_AT DATE NOT NULL, IS_USED NUMBER(1) DEFAULT 0, ATTEMPT_COUNT NUMBER(2) DEFAULT 0, CREATED_DATE DATE DEFAULT SYSDATE, CONSTRAINT OTP_VERIFICATION_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.OTP_VERIFICATION IS 'Bang luu ma OTP xac thuc dang nhap'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.CUSTOMER_ID IS 'ID khach hang (CUSTOMER_INFO.ID)'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.USER_EMAIL IS 'Email can xac thuc'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.OTP_CODE IS 'Ma OTP 6 so'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.OTP_TYPE IS 'Loai OTP: 1=Dang nhap, 2=Dat lai mat khau, 3=Xac thuc email'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.EXPIRED_AT IS 'Thoi gian het han OTP'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.IS_USED IS 'Da su dung: 0=Chua, 1=Da dung'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.ATTEMPT_COUNT IS 'So lan thu sai'; COMMENT ON COLUMN LAOS_ESIM.OTP_VERIFICATION.CREATED_DATE IS 'Ngay tao OTP'; CREATE SEQUENCE LAOS_ESIM.OTP_VERIFICATION_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE INDEX LAOS_ESIM.OTP_EMAIL_IDX ON LAOS_ESIM.OTP_VERIFICATION(USER_EMAIL, IS_USED); -- ============================================================================ -- III. TOKEN MANAGEMENT TABLE -- ============================================================================ CREATE TABLE LAOS_ESIM.USER_TOKEN ( ID NUMBER(10) NOT NULL, CUSTOMER_ID NUMBER(10) NOT NULL, ACCESS_TOKEN VARCHAR2(500) NOT NULL, REFRESH_TOKEN VARCHAR2(500), TOKEN_TYPE VARCHAR2(50) DEFAULT 'Bearer', DEVICE_INFO VARCHAR2(500), IP_ADDRESS VARCHAR2(50), EXPIRED_AT DATE NOT NULL, REFRESH_EXPIRED_AT DATE, IS_REVOKED NUMBER(1) DEFAULT 0, CREATED_DATE DATE DEFAULT SYSDATE, LAST_USED DATE, CONSTRAINT USER_TOKEN_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.USER_TOKEN IS 'Bang quan ly token xac thuc API'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.CUSTOMER_ID IS 'ID khach hang (CUSTOMER_INFO.ID)'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.ACCESS_TOKEN IS 'Access token JWT'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.REFRESH_TOKEN IS 'Refresh token de lam moi access token'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.TOKEN_TYPE IS 'Loai token (Bearer)'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.DEVICE_INFO IS 'Thong tin thiet bi dang nhap'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.IP_ADDRESS IS 'Dia chi IP khi dang nhap'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.EXPIRED_AT IS 'Thoi gian het han access token'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.REFRESH_EXPIRED_AT IS 'Thoi gian het han refresh token'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.IS_REVOKED IS 'Token bi thu hoi: 0=Khong, 1=Da thu hoi'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.CREATED_DATE IS 'Ngay tao token'; COMMENT ON COLUMN LAOS_ESIM.USER_TOKEN.LAST_USED IS 'Thoi gian su dung gan nhat'; CREATE SEQUENCE LAOS_ESIM.USER_TOKEN_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE INDEX LAOS_ESIM.USER_TOKEN_CUSTOMER_IDX ON LAOS_ESIM.USER_TOKEN(CUSTOMER_ID); CREATE INDEX LAOS_ESIM.USER_TOKEN_ACCESS_IDX ON LAOS_ESIM.USER_TOKEN(ACCESS_TOKEN); -- ============================================================================ -- IV. MESSAGE QUEUE TABLE (For scanning and sending messages) -- ============================================================================ CREATE TABLE LAOS_ESIM.MESSAGE_QUEUE ( ID NUMBER(10) NOT NULL, MESSAGE_TYPE NUMBER(2) DEFAULT 1, RECIPIENT VARCHAR2(200) NOT NULL, SUBJECT NVARCHAR2(500), CONTENT CLOB, TEMPLATE_CODE VARCHAR2(50), TEMPLATE_DATA CLOB, PRIORITY NUMBER(1) DEFAULT 5, STATUS NUMBER(2) DEFAULT 0, SCHEDULED_AT DATE, PROCESSED_AT DATE, RETRY_COUNT NUMBER(2) DEFAULT 0, MAX_RETRY NUMBER(2) DEFAULT 3, ERROR_MESSAGE VARCHAR2(2000), CREATED_BY NUMBER(10), CREATED_DATE DATE DEFAULT SYSDATE, CONSTRAINT MESSAGE_QUEUE_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.MESSAGE_QUEUE IS 'Bang luu tin nhan cho xu ly gui (email/SMS)'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.MESSAGE_TYPE IS 'Loai tin nhan: 1=Email, 2=SMS, 3=Push Notification'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.RECIPIENT IS 'Dia chi nhan (email/so dien thoai)'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.SUBJECT IS 'Tieu de tin nhan/email'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.CONTENT IS 'Noi dung tin nhan'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.TEMPLATE_CODE IS 'Ma mau tin nhan'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.TEMPLATE_DATA IS 'Du lieu thay the vao mau (JSON)'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.PRIORITY IS 'Do uu tien: 1=Cao nhat, 10=Thap nhat'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.STATUS IS 'Trang thai: 0=Cho xu ly, 1=Dang xu ly, 2=Thanh cong, 3=That bai'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.SCHEDULED_AT IS 'Thoi gian dat lich gui'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.PROCESSED_AT IS 'Thoi gian da xu ly'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.RETRY_COUNT IS 'So lan thu lai'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.MAX_RETRY IS 'So lan thu lai toi da'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.ERROR_MESSAGE IS 'Thong bao loi khi gui that bai'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.CREATED_BY IS 'ID nguoi tao'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE.CREATED_DATE IS 'Ngay tao'; CREATE SEQUENCE LAOS_ESIM.MESSAGE_QUEUE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE INDEX LAOS_ESIM.MESSAGE_QUEUE_STATUS_IDX ON LAOS_ESIM.MESSAGE_QUEUE(STATUS, PRIORITY, SCHEDULED_AT); -- ============================================================================ -- V. MESSAGE TEMPLATE TABLE -- ============================================================================ CREATE TABLE LAOS_ESIM.MESSAGE_TEMPLATE ( ID NUMBER(10) NOT NULL, TEMPLATE_CODE VARCHAR2(50) NOT NULL, TEMPLATE_NAME NVARCHAR2(200) NOT NULL, MESSAGE_TYPE NUMBER(2) DEFAULT 1, SUBJECT NVARCHAR2(500), CONTENT CLOB, VARIABLES VARCHAR2(1000), STATUS NUMBER(1) DEFAULT 1, CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, CONSTRAINT MESSAGE_TEMPLATE_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.MESSAGE_TEMPLATE IS 'Bang mau tin nhan email/SMS'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.TEMPLATE_CODE IS 'Ma mau tin nhan (unique)'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.TEMPLATE_NAME IS 'Ten mau tin nhan'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.MESSAGE_TYPE IS 'Loai: 1=Email, 2=SMS'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.SUBJECT IS 'Tieu de email'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.CONTENT IS 'Noi dung mau'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.VARIABLES IS 'Danh sach bien (VD: {{name}},{{email}})'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.STATUS IS 'Trang thai: 0=An, 1=Hien'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.MESSAGE_TEMPLATE.LAST_UPDATE IS 'Ngay cap nhat'; CREATE SEQUENCE LAOS_ESIM.MESSAGE_TEMPLATE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE UNIQUE INDEX LAOS_ESIM.MESSAGE_TEMPLATE_CODE_UQ ON LAOS_ESIM.MESSAGE_TEMPLATE(TEMPLATE_CODE); -- ============================================================================ -- VI. CMS TABLES (Banner, Content, Articles - Based on infigate.vn) -- ============================================================================ -- BANNER: Homepage banners/sliders CREATE TABLE LAOS_ESIM.BANNER ( ID NUMBER(10) NOT NULL, TITLE NVARCHAR2(500), SUBTITLE NVARCHAR2(1000), IMAGE_URL VARCHAR2(1000) NOT NULL, IMAGE_MOBILE_URL VARCHAR2(1000), LINK_URL VARCHAR2(1000), LINK_TARGET VARCHAR2(20) DEFAULT '_self', POSITION VARCHAR2(50) DEFAULT 'HOME', DISPLAY_ORDER NUMBER(5) DEFAULT 1, STATUS NUMBER(1) DEFAULT 1, START_DATE DATE, END_DATE DATE, CREATED_BY NUMBER(10), CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, CONSTRAINT BANNER_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.BANNER IS 'Bang quan ly banner/slider trang web'; COMMENT ON COLUMN LAOS_ESIM.BANNER.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.BANNER.TITLE IS 'Tieu de banner'; COMMENT ON COLUMN LAOS_ESIM.BANNER.SUBTITLE IS 'Mo ta ngan'; COMMENT ON COLUMN LAOS_ESIM.BANNER.IMAGE_URL IS 'Duong dan anh banner (desktop)'; COMMENT ON COLUMN LAOS_ESIM.BANNER.IMAGE_MOBILE_URL IS 'Duong dan anh banner (mobile)'; COMMENT ON COLUMN LAOS_ESIM.BANNER.LINK_URL IS 'URL khi click vao banner'; COMMENT ON COLUMN LAOS_ESIM.BANNER.LINK_TARGET IS 'Mo tab: _self hoac _blank'; COMMENT ON COLUMN LAOS_ESIM.BANNER.POSITION IS 'Vi tri: HOME, PRODUCT, SUPPORT, etc.'; COMMENT ON COLUMN LAOS_ESIM.BANNER.DISPLAY_ORDER IS 'Thu tu hien thi'; COMMENT ON COLUMN LAOS_ESIM.BANNER.STATUS IS 'Trang thai: 0=An, 1=Hien'; COMMENT ON COLUMN LAOS_ESIM.BANNER.START_DATE IS 'Ngay bat dau hien thi'; COMMENT ON COLUMN LAOS_ESIM.BANNER.END_DATE IS 'Ngay ket thuc hien thi'; COMMENT ON COLUMN LAOS_ESIM.BANNER.CREATED_BY IS 'ID nguoi tao'; COMMENT ON COLUMN LAOS_ESIM.BANNER.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.BANNER.LAST_UPDATE IS 'Ngay cap nhat'; CREATE SEQUENCE LAOS_ESIM.BANNER_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; -- CMS_CONTENT: Static pages (About us, Terms, Policies, etc.) CREATE TABLE LAOS_ESIM.CMS_CONTENT ( ID NUMBER(10) NOT NULL, PAGE_CODE VARCHAR2(100) NOT NULL, PAGE_TITLE NVARCHAR2(500) NOT NULL, PAGE_SLUG VARCHAR2(200) NOT NULL, META_DESCRIPTION NVARCHAR2(500), META_KEYWORDS NVARCHAR2(500), CONTENT CLOB, PAGE_TYPE VARCHAR2(50) DEFAULT 'STATIC', STATUS NUMBER(1) DEFAULT 1, LANGUAGE VARCHAR2(10) DEFAULT 'vi', CREATED_BY NUMBER(10), CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, UPDATED_BY NUMBER(10), CONSTRAINT CMS_CONTENT_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.CMS_CONTENT IS 'Bang noi dung cac trang tinh (Gioi thieu, Chinh sach...)'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_CODE IS 'Ma trang (VD: ABOUT_US, TERMS, PRIVACY)'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_TITLE IS 'Tieu de trang'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_SLUG IS 'URL-friendly slug'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.META_DESCRIPTION IS 'Mo ta SEO'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.META_KEYWORDS IS 'Tu khoa SEO'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.CONTENT IS 'Noi dung HTML'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.PAGE_TYPE IS 'Loai trang: STATIC, POLICY, GUIDE'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.STATUS IS 'Trang thai: 0=An, 1=Hien'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.LANGUAGE IS 'Ngon ngu: vi, en, lo'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.CREATED_BY IS 'ID nguoi tao'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.LAST_UPDATE IS 'Ngay cap nhat'; COMMENT ON COLUMN LAOS_ESIM.CMS_CONTENT.UPDATED_BY IS 'ID nguoi cap nhat'; CREATE SEQUENCE LAOS_ESIM.CMS_CONTENT_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE UNIQUE INDEX LAOS_ESIM.CMS_CONTENT_CODE_LANG_UQ ON LAOS_ESIM.CMS_CONTENT(PAGE_CODE, LANGUAGE); CREATE UNIQUE INDEX LAOS_ESIM.CMS_CONTENT_SLUG_UQ ON LAOS_ESIM.CMS_CONTENT(PAGE_SLUG, LANGUAGE); -- ============================================================================ -- VII. ARTICLE/BLOG TABLES -- ============================================================================ -- ARTICLE_CATEGORY: Blog/Library categories CREATE TABLE LAOS_ESIM.ARTICLE_CATEGORY ( ID NUMBER(10) NOT NULL, CATEGORY_NAME NVARCHAR2(200) NOT NULL, CATEGORY_SLUG VARCHAR2(200) NOT NULL, DESCRIPTION NVARCHAR2(1000), ICON_URL VARCHAR2(500), PARENT_ID NUMBER(10), DISPLAY_ORDER NUMBER(5) DEFAULT 1, STATUS NUMBER(1) DEFAULT 1, CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, CONSTRAINT ARTICLE_CATEGORY_PK PRIMARY KEY (ID), CONSTRAINT ARTICLE_CATEGORY_PARENT_FK FOREIGN KEY (PARENT_ID) REFERENCES LAOS_ESIM.ARTICLE_CATEGORY(ID) ); COMMENT ON TABLE LAOS_ESIM.ARTICLE_CATEGORY IS 'Bang danh muc bai viet (Cam nang, Huong dan)'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.CATEGORY_NAME IS 'Ten danh muc'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.CATEGORY_SLUG IS 'URL slug cua danh muc'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.DESCRIPTION IS 'Mo ta danh muc'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.ICON_URL IS 'Duong dan icon'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.PARENT_ID IS 'ID danh muc cha (null = goc)'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.DISPLAY_ORDER IS 'Thu tu hien thi'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.STATUS IS 'Trang thai: 0=An, 1=Hien'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE_CATEGORY.LAST_UPDATE IS 'Ngay cap nhat'; CREATE SEQUENCE LAOS_ESIM.ARTICLE_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; -- ARTICLE: Blog posts/Library articles CREATE TABLE LAOS_ESIM.ARTICLE ( ID NUMBER(10) NOT NULL, CATEGORY_ID NUMBER(10), TITLE NVARCHAR2(500) NOT NULL, SLUG VARCHAR2(500) NOT NULL, SUMMARY NVARCHAR2(2000), CONTENT CLOB, THUMBNAIL_URL VARCHAR2(1000), COVER_IMAGE_URL VARCHAR2(1000), META_DESCRIPTION NVARCHAR2(500), META_KEYWORDS NVARCHAR2(500), AUTHOR_ID NUMBER(10), VIEW_COUNT NUMBER(10) DEFAULT 0, IS_FEATURED NUMBER(1) DEFAULT 0, IS_PINNED NUMBER(1) DEFAULT 0, STATUS NUMBER(1) DEFAULT 0, PUBLISHED_DATE DATE, LANGUAGE VARCHAR2(10) DEFAULT 'vi', CREATED_BY NUMBER(10), CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, UPDATED_BY NUMBER(10), CONSTRAINT ARTICLE_PK PRIMARY KEY (ID), CONSTRAINT ARTICLE_CATEGORY_FK FOREIGN KEY (CATEGORY_ID) REFERENCES LAOS_ESIM.ARTICLE_CATEGORY(ID) ); COMMENT ON TABLE LAOS_ESIM.ARTICLE IS 'Bang bai viet (Cam nang du lich, Huong dan)'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CATEGORY_ID IS 'ID danh muc bai viet'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.TITLE IS 'Tieu de bai viet'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.SLUG IS 'URL-friendly slug'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.SUMMARY IS 'Tom tat noi dung'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CONTENT IS 'Noi dung HTML day du'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.THUMBNAIL_URL IS 'Anh thu nho'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.COVER_IMAGE_URL IS 'Anh bia bai viet'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.META_DESCRIPTION IS 'Mo ta SEO'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.META_KEYWORDS IS 'Tu khoa SEO'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.AUTHOR_ID IS 'ID tac gia'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.VIEW_COUNT IS 'So luot xem'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.IS_FEATURED IS 'Bai viet noi bat: 0=Khong, 1=Co'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.IS_PINNED IS 'Ghim len dau: 0=Khong, 1=Co'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.STATUS IS 'Trang thai: 0=Nhap, 1=Xuat ban, 2=An'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.PUBLISHED_DATE IS 'Ngay xuat ban'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.LANGUAGE IS 'Ngon ngu: vi, en, lo'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CREATED_BY IS 'ID nguoi tao'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.LAST_UPDATE IS 'Ngay cap nhat'; COMMENT ON COLUMN LAOS_ESIM.ARTICLE.UPDATED_BY IS 'ID nguoi cap nhat'; CREATE SEQUENCE LAOS_ESIM.ARTICLE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE UNIQUE INDEX LAOS_ESIM.ARTICLE_SLUG_LANG_UQ ON LAOS_ESIM.ARTICLE(SLUG, LANGUAGE); CREATE INDEX LAOS_ESIM.ARTICLE_CATEGORY_IDX ON LAOS_ESIM.ARTICLE(CATEGORY_ID); CREATE INDEX LAOS_ESIM.ARTICLE_STATUS_IDX ON LAOS_ESIM.ARTICLE(STATUS, PUBLISHED_DATE); -- ============================================================================ -- VIII. SUPPORT CENTER TABLES (Based on infigate.vn support structure) -- ============================================================================ -- FAQ_CATEGORY: FAQ categories CREATE TABLE LAOS_ESIM.FAQ_CATEGORY ( ID NUMBER(10) NOT NULL, CATEGORY_NAME NVARCHAR2(200) NOT NULL, CATEGORY_SLUG VARCHAR2(200) NOT NULL, DESCRIPTION NVARCHAR2(1000), ICON_URL VARCHAR2(500), DISPLAY_ORDER NUMBER(5) DEFAULT 1, STATUS NUMBER(1) DEFAULT 1, LANGUAGE VARCHAR2(10) DEFAULT 'vi', CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, CONSTRAINT FAQ_CATEGORY_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.FAQ_CATEGORY IS 'Bang danh muc FAQ (Gioi thieu, Cai dat, Su dung, Su co)'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.CATEGORY_NAME IS 'Ten danh muc (VD: Gioi thieu co ban, Cai dat & kich hoat)'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.CATEGORY_SLUG IS 'URL slug cua danh muc'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.DESCRIPTION IS 'Mo ta danh muc'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.ICON_URL IS 'Duong dan icon danh muc'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.DISPLAY_ORDER IS 'Thu tu hien thi'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.STATUS IS 'Trang thai: 0=An, 1=Hien'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.LANGUAGE IS 'Ngon ngu: vi, en, lo'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.FAQ_CATEGORY.LAST_UPDATE IS 'Ngay cap nhat'; CREATE SEQUENCE LAOS_ESIM.FAQ_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; -- FAQ: Frequently Asked Questions CREATE TABLE LAOS_ESIM.FAQ ( ID NUMBER(10) NOT NULL, CATEGORY_ID NUMBER(10), QUESTION NVARCHAR2(1000) NOT NULL, ANSWER CLOB, DISPLAY_ORDER NUMBER(5) DEFAULT 1, VIEW_COUNT NUMBER(10) DEFAULT 0, IS_FEATURED NUMBER(1) DEFAULT 0, STATUS NUMBER(1) DEFAULT 1, LANGUAGE VARCHAR2(10) DEFAULT 'vi', CREATED_BY NUMBER(10), CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, CONSTRAINT FAQ_PK PRIMARY KEY (ID), CONSTRAINT FAQ_CATEGORY_FK FOREIGN KEY (CATEGORY_ID) REFERENCES LAOS_ESIM.FAQ_CATEGORY(ID) ); COMMENT ON TABLE LAOS_ESIM.FAQ IS 'Bang cau hoi thuong gap'; COMMENT ON COLUMN LAOS_ESIM.FAQ.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.FAQ.CATEGORY_ID IS 'ID danh muc FAQ'; COMMENT ON COLUMN LAOS_ESIM.FAQ.QUESTION IS 'Cau hoi'; COMMENT ON COLUMN LAOS_ESIM.FAQ.ANSWER IS 'Cau tra loi (HTML)'; COMMENT ON COLUMN LAOS_ESIM.FAQ.DISPLAY_ORDER IS 'Thu tu hien thi'; COMMENT ON COLUMN LAOS_ESIM.FAQ.VIEW_COUNT IS 'So luot xem'; COMMENT ON COLUMN LAOS_ESIM.FAQ.IS_FEATURED IS 'Noi bat trang chu: 0=Khong, 1=Co'; COMMENT ON COLUMN LAOS_ESIM.FAQ.STATUS IS 'Trang thai: 0=An, 1=Hien'; COMMENT ON COLUMN LAOS_ESIM.FAQ.LANGUAGE IS 'Ngon ngu: vi, en, lo'; COMMENT ON COLUMN LAOS_ESIM.FAQ.CREATED_BY IS 'ID nguoi tao'; COMMENT ON COLUMN LAOS_ESIM.FAQ.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.FAQ.LAST_UPDATE IS 'Ngay cap nhat'; CREATE SEQUENCE LAOS_ESIM.FAQ_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE INDEX LAOS_ESIM.FAQ_CATEGORY_IDX ON LAOS_ESIM.FAQ(CATEGORY_ID); -- ============================================================================ -- IX. CONTACT & CUSTOMER REVIEW TABLES -- ============================================================================ -- CONTACT_FORM: Contact form submissions CREATE TABLE LAOS_ESIM.CONTACT_FORM ( ID NUMBER(10) NOT NULL, FULL_NAME NVARCHAR2(200) NOT NULL, EMAIL VARCHAR2(200) NOT NULL, PHONE_NUMBER VARCHAR2(20), SUBJECT NVARCHAR2(500), MESSAGE CLOB NOT NULL, STATUS NUMBER(2) DEFAULT 0, ASSIGNED_TO NUMBER(10), ADMIN_NOTES NVARCHAR2(2000), REPLIED_AT DATE, IP_ADDRESS VARCHAR2(50), CREATED_DATE DATE DEFAULT SYSDATE, CONSTRAINT CONTACT_FORM_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.CONTACT_FORM IS 'Bang luu form lien he tu khach hang'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.FULL_NAME IS 'Ho ten khach hang'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.EMAIL IS 'Email lien he'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.PHONE_NUMBER IS 'So dien thoai'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.SUBJECT IS 'Chu de lien he'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.MESSAGE IS 'Noi dung tin nhan'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.STATUS IS 'Trang thai: 0=Moi, 1=Dang xu ly, 2=Da tra loi, 3=Dong'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.ASSIGNED_TO IS 'ID nhan vien xu ly'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.ADMIN_NOTES IS 'Ghi chu cua admin'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.REPLIED_AT IS 'Thoi gian tra loi'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.IP_ADDRESS IS 'Dia chi IP gui form'; COMMENT ON COLUMN LAOS_ESIM.CONTACT_FORM.CREATED_DATE IS 'Ngay gui'; CREATE SEQUENCE LAOS_ESIM.CONTACT_FORM_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; -- CUSTOMER_REVIEW: Customer testimonials (Khach hang noi ve chung toi) CREATE TABLE LAOS_ESIM.CUSTOMER_REVIEW ( ID NUMBER(10) NOT NULL, CUSTOMER_NAME NVARCHAR2(200) NOT NULL, AVATAR_URL VARCHAR2(500), RATING NUMBER(1) DEFAULT 5, REVIEW_CONTENT NVARCHAR2(2000) NOT NULL, DESTINATION NVARCHAR2(200), DISPLAY_ORDER NUMBER(5) DEFAULT 1, IS_FEATURED NUMBER(1) DEFAULT 0, STATUS NUMBER(1) DEFAULT 0, CREATED_DATE DATE DEFAULT SYSDATE, APPROVED_DATE DATE, APPROVED_BY NUMBER(10), CONSTRAINT CUSTOMER_REVIEW_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.CUSTOMER_REVIEW IS 'Bang danh gia cua khach hang (Testimonials)'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.CUSTOMER_NAME IS 'Ten khach hang'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.AVATAR_URL IS 'Anh dai dien khach hang'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.RATING IS 'Diem danh gia 1-5 sao'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.REVIEW_CONTENT IS 'Noi dung danh gia'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.DESTINATION IS 'Diem den du lich (VD: Thai Lan, Han Quoc)'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.DISPLAY_ORDER IS 'Thu tu hien thi'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.IS_FEATURED IS 'Hien thi trang chu: 0=Khong, 1=Co'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.STATUS IS 'Trang thai: 0=Cho duyet, 1=Da duyet, 2=Tu choi'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.APPROVED_DATE IS 'Ngay duyet'; COMMENT ON COLUMN LAOS_ESIM.CUSTOMER_REVIEW.APPROVED_BY IS 'ID nguoi duyet'; CREATE SEQUENCE LAOS_ESIM.CUSTOMER_REVIEW_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; -- ============================================================================ -- X. ADMIN USER TABLE -- ============================================================================ CREATE TABLE LAOS_ESIM.ADMIN_USER ( ID NUMBER(10) NOT NULL, USERNAME VARCHAR2(100) NOT NULL, PASSWORD_HASH VARCHAR2(500) NOT NULL, EMAIL VARCHAR2(200) NOT NULL, FULL_NAME NVARCHAR2(200), AVATAR_URL VARCHAR2(500), ROLE VARCHAR2(50) DEFAULT 'EDITOR', STATUS NUMBER(1) DEFAULT 1, LAST_LOGIN_DATE DATE, CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, CONSTRAINT ADMIN_USER_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.ADMIN_USER IS 'Bang quan ly user admin/CMS'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.USERNAME IS 'Ten dang nhap'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.PASSWORD_HASH IS 'Mat khau ma hoa'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.EMAIL IS 'Email admin'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.FULL_NAME IS 'Ho va ten'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.AVATAR_URL IS 'Anh dai dien'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.ROLE IS 'Vai tro: SUPER_ADMIN, ADMIN, EDITOR, VIEWER'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.STATUS IS 'Trang thai: 0=Khoa, 1=Hoat dong'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.LAST_LOGIN_DATE IS 'Thoi gian dang nhap gan nhat'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.ADMIN_USER.LAST_UPDATE IS 'Ngay cap nhat'; CREATE SEQUENCE LAOS_ESIM.ADMIN_USER_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE UNIQUE INDEX LAOS_ESIM.ADMIN_USER_USERNAME_UQ ON LAOS_ESIM.ADMIN_USER(USERNAME); CREATE UNIQUE INDEX LAOS_ESIM.ADMIN_USER_EMAIL_UQ ON LAOS_ESIM.ADMIN_USER(EMAIL); -- ============================================================================ -- XI. SYSTEM CONFIGURATION TABLE -- ============================================================================ CREATE TABLE LAOS_ESIM.SYSTEM_CONFIG ( ID NUMBER(10) NOT NULL, CONFIG_KEY VARCHAR2(100) NOT NULL, CONFIG_VALUE NVARCHAR2(2000), CONFIG_TYPE VARCHAR2(50) DEFAULT 'STRING', DESCRIPTION NVARCHAR2(500), IS_EDITABLE NUMBER(1) DEFAULT 1, CREATED_DATE DATE DEFAULT SYSDATE, LAST_UPDATE DATE, CONSTRAINT SYSTEM_CONFIG_PK PRIMARY KEY (ID) ); COMMENT ON TABLE LAOS_ESIM.SYSTEM_CONFIG IS 'Bang cau hinh he thong'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.ID IS 'ID tu dong tang'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CONFIG_KEY IS 'Khoa cau hinh (VD: SITE_NAME, HOTLINE)'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CONFIG_VALUE IS 'Gia tri cau hinh'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CONFIG_TYPE IS 'Loai du lieu: STRING, NUMBER, BOOLEAN, JSON'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.DESCRIPTION IS 'Mo ta cau hinh'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.IS_EDITABLE IS 'Cho phep sua: 0=Khong, 1=Co'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.CREATED_DATE IS 'Ngay tao'; COMMENT ON COLUMN LAOS_ESIM.SYSTEM_CONFIG.LAST_UPDATE IS 'Ngay cap nhat'; CREATE SEQUENCE LAOS_ESIM.SYSTEM_CONFIG_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE UNIQUE INDEX LAOS_ESIM.SYSTEM_CONFIG_KEY_UQ ON LAOS_ESIM.SYSTEM_CONFIG(CONFIG_KEY); -- ============================================================================ -- XII. INSERT DEFAULT DATA -- ============================================================================ -- Insert default FAQ categories (based on infigate.vn support-center) INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE) VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Giới thiệu cơ bản', 'gioi-thieu-co-ban', N'Các thông tin cơ bản về eSIM', 1, 1, 'vi'); INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE) VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Cài đặt & kích hoạt eSIM', 'cai-dat-kich-hoat-esim', N'Hướng dẫn cài đặt và kích hoạt eSIM trên thiết bị', 2, 1, 'vi'); INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE) VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Cách sử dụng eSIM', 'cach-su-dung-esim', N'Hướng dẫn sử dụng eSIM hiệu quả', 3, 1, 'vi'); INSERT INTO LAOS_ESIM.FAQ_CATEGORY (ID, CATEGORY_NAME, CATEGORY_SLUG, DESCRIPTION, DISPLAY_ORDER, STATUS, LANGUAGE) VALUES (LAOS_ESIM.FAQ_CATEGORY_SEQ.NEXTVAL, N'Các sự cố phổ biến', 'cac-su-co-pho-bien', N'Xử lý các sự cố thường gặp khi sử dụng eSIM', 4, 1, 'vi'); -- Insert default system config INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE) VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'SITE_NAME', 'EsimLao', 'STRING', N'Tên website', 1); INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE) VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'HOTLINE', '1900 9272', 'STRING', N'Số hotline hỗ trợ', 1); INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE) VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'SUPPORT_EMAIL', 'support@esimlao.com', 'STRING', N'Email hỗ trợ', 1); INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE) VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'COMPANY_ADDRESS', N'Vientiane, Lao PDR', 'STRING', N'Địa chỉ công ty', 1); INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE) VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'OTP_EXPIRE_MINUTES', '5', 'NUMBER', N'Thời gian hết hạn OTP (phút)', 1); INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE) VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'TOKEN_EXPIRE_HOURS', '24', 'NUMBER', N'Thời gian hết hạn access token (giờ)', 1); INSERT INTO LAOS_ESIM.SYSTEM_CONFIG (ID, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, DESCRIPTION, IS_EDITABLE) VALUES (LAOS_ESIM.SYSTEM_CONFIG_SEQ.NEXTVAL, 'REFRESH_TOKEN_EXPIRE_DAYS', '30', 'NUMBER', N'Thời gian hết hạn refresh token (ngày)', 1); -- Insert default CMS content pages INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT) VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'ABOUT_US', N'Về chúng tôi', 'about-us', N'Thông tin về EsimLao', 'STATIC', 1, 'vi', NULL); INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT) VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'TERMS_OF_SERVICE', N'Điều khoản dịch vụ', 'terms-and-services', N'Điều khoản sử dụng dịch vụ', 'POLICY', 1, 'vi', NULL); INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT) VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'PRIVACY_POLICY', N'Chính sách bảo mật', 'privacy-policy', N'Chính sách bảo mật thông tin', 'POLICY', 1, 'vi', NULL); INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT) VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'PAYMENT_POLICY', N'Chính sách thanh toán', 'payment-policy', N'Chính sách thanh toán', 'POLICY', 1, 'vi', NULL); INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT) VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'DELIVERY_POLICY', N'Chính sách giao hàng', 'delivery-policy', N'Chính sách giao hàng', 'POLICY', 1, 'vi', NULL); INSERT INTO LAOS_ESIM.CMS_CONTENT (ID, PAGE_CODE, PAGE_TITLE, PAGE_SLUG, META_DESCRIPTION, PAGE_TYPE, STATUS, LANGUAGE, CONTENT) VALUES (LAOS_ESIM.CMS_CONTENT_SEQ.NEXTVAL, 'REFUND_POLICY', N'Chính sách đổi trả và hoàn tiền', 'refund-policy', N'Chính sách đổi trả và hoàn tiền', 'POLICY', 1, 'vi', NULL); -- Insert default admin user (password: Admin@123 - should be hashed in production) INSERT INTO LAOS_ESIM.ADMIN_USER (ID, USERNAME, PASSWORD_HASH, EMAIL, FULL_NAME, ROLE, STATUS) VALUES (LAOS_ESIM.ADMIN_USER_SEQ.NEXTVAL, 'admin', 'CHANGE_THIS_TO_HASHED_PASSWORD', 'admin@esimlao.com', 'Administrator', 'SUPER_ADMIN', 1); COMMIT; -- ============================================================================ -- END OF SCRIPT -- ============================================================================