-- ============================================================================
-- Shodh Sanchayan — V1 Base Schema
-- Academic Paper Submission, Review & Publishing Platform
-- PostgreSQL 16 | Double-blind review | Configurable reviewers (1-5)
-- ============================================================================

-- ===== EXTENSIONS =====
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pgcrypto";

-- ===== ENUMS =====
CREATE TYPE user_role AS ENUM ('AUTHOR', 'REVIEWER', 'ADMIN');
CREATE TYPE user_status AS ENUM ('ACTIVE', 'INACTIVE', 'SUSPENDED');
CREATE TYPE auth_provider AS ENUM ('LOCAL', 'GOOGLE', 'MICROSOFT');
CREATE TYPE paper_status AS ENUM (
    'DRAFT', 'SUBMITTED', 'SCREENING', 'PENDING_ASSIGNMENT',
    'UNDER_REVIEW', 'REVISION_REQUESTED', 'REVISION_SUBMITTED',
    'REVIEW_COMPLETE', 'ACCEPTED', 'REJECTED', 'PUBLISHED', 'WITHDRAWN'
);
CREATE TYPE review_recommendation AS ENUM ('ACCEPT', 'MINOR_REVISION', 'MAJOR_REVISION', 'REJECT');
CREATE TYPE review_status AS ENUM ('PENDING', 'IN_PROGRESS', 'COMPLETED', 'DECLINED', 'EXPIRED');
CREATE TYPE payment_status AS ENUM ('PENDING', 'SUCCESS', 'FAILED', 'REFUNDED');
CREATE TYPE magazine_status AS ENUM ('DRAFT', 'READY', 'PUBLISHED');
CREATE TYPE content_section AS ENUM (
    'LANDING', 'AUTHOR', 'SUBMIT', 'ADMIN', 'REVIEWER',
    'MAGAZINE', 'JOURNALS', 'LOGIN', 'FOOTER', 'NAVBAR', 'SIDEBAR', 'ADMIN_PAPERS'
);
CREATE TYPE otp_purpose AS ENUM ('LOGIN', 'REGISTRATION', 'PASSWORD_RESET');

-- ===== USERS =====
CREATE TABLE users (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    email           VARCHAR(255) NOT NULL UNIQUE,
    phone           VARCHAR(15) UNIQUE,
    password_hash   VARCHAR(255),                    -- null for OAuth-only users
    name_hi         VARCHAR(255) NOT NULL,           -- Hindi name
    name_en         VARCHAR(255) NOT NULL,           -- English name
    role            user_role NOT NULL DEFAULT 'AUTHOR',
    status          user_status NOT NULL DEFAULT 'ACTIVE',
    auth_provider   auth_provider NOT NULL DEFAULT 'LOCAL',
    oauth_id        VARCHAR(255),                    -- Google/MS subject ID
    avatar_url      VARCHAR(500),
    designation     VARCHAR(100),                    -- e.g., Assistant Professor, Professor
    institution     VARCHAR(255),                    -- university / college
    department      VARCHAR(255),                    -- e.g., Computer Science
    orcid_id        VARCHAR(50),                     -- ORCID identifier
    bio_hi          TEXT,
    bio_en          TEXT,
    email_verified  BOOLEAN NOT NULL DEFAULT FALSE,
    phone_verified  BOOLEAN NOT NULL DEFAULT FALSE,
    invited_by      UUID REFERENCES users(id),       -- for reviewer invites
    last_login_at   TIMESTAMPTZ,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_role ON users(role);
CREATE INDEX idx_users_status ON users(status);

-- ===== OTP =====
CREATE TABLE otps (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    identifier      VARCHAR(255) NOT NULL,           -- email or phone
    otp_code        VARCHAR(10) NOT NULL,
    purpose         otp_purpose NOT NULL DEFAULT 'LOGIN',
    expires_at      TIMESTAMPTZ NOT NULL,
    verified        BOOLEAN NOT NULL DEFAULT FALSE,
    attempts        INT NOT NULL DEFAULT 0,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_otps_identifier ON otps(identifier, purpose);

-- ===== CATEGORIES =====
CREATE TABLE categories (
    id              SERIAL PRIMARY KEY,
    name_hi         VARCHAR(255) NOT NULL,
    name_en         VARCHAR(255) NOT NULL,
    slug            VARCHAR(255) NOT NULL UNIQUE,     -- url-friendly
    description_hi  TEXT,
    description_en  TEXT,
    parent_id       INT REFERENCES categories(id),    -- for sub-categories
    is_active       BOOLEAN NOT NULL DEFAULT TRUE,
    sort_order      INT NOT NULL DEFAULT 0,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- ===== PAPERS =====
CREATE TABLE papers (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    reference_no    VARCHAR(20) NOT NULL UNIQUE,      -- e.g., AP-2026-0342
    title_hi        TEXT NOT NULL,
    title_en        TEXT NOT NULL,
    abstract_hi     TEXT,
    abstract_en     TEXT,
    keywords        TEXT[],                           -- array of keywords
    category_id     INT REFERENCES categories(id),
    subcategory_id  INT REFERENCES categories(id),
    status          paper_status NOT NULL DEFAULT 'DRAFT',
    submitted_by    UUID NOT NULL REFERENCES users(id),
    manuscript_key  VARCHAR(500),                     -- S3 key for manuscript file
    manuscript_name VARCHAR(255),                     -- original filename
    manuscript_size BIGINT,                           -- bytes
    doi             VARCHAR(100) UNIQUE,              -- assigned after publish
    volume          INT,                              -- assigned when published in magazine
    issue           INT,
    page_start      INT,
    page_end        INT,
    citation_count  INT NOT NULL DEFAULT 0,
    download_count  INT NOT NULL DEFAULT 0,
    plagiarism_score DECIMAL(5,2),                    -- AI plagiarism check score
    plagiarism_report JSONB,                          -- full AI report
    required_reviewers INT NOT NULL DEFAULT 2,        -- configurable 1-5
    admin_notes     TEXT,                             -- internal admin notes
    submitted_at    TIMESTAMPTZ,
    accepted_at     TIMESTAMPTZ,
    published_at    TIMESTAMPTZ,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_papers_status ON papers(status);
CREATE INDEX idx_papers_submitted_by ON papers(submitted_by);
CREATE INDEX idx_papers_category ON papers(category_id);
CREATE INDEX idx_papers_reference ON papers(reference_no);
CREATE INDEX idx_papers_published_at ON papers(published_at DESC);

-- ===== CO-AUTHORS =====
CREATE TABLE paper_coauthors (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    paper_id        UUID NOT NULL REFERENCES papers(id) ON DELETE CASCADE,
    user_id         UUID REFERENCES users(id),        -- null if external co-author
    name_hi         VARCHAR(255) NOT NULL,
    name_en         VARCHAR(255) NOT NULL,
    email           VARCHAR(255),
    institution     VARCHAR(255),
    author_order    INT NOT NULL DEFAULT 1,           -- display order
    is_corresponding BOOLEAN NOT NULL DEFAULT FALSE,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_coauthors_paper ON paper_coauthors(paper_id);

-- ===== PAPER REVISIONS =====
CREATE TABLE paper_revisions (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    paper_id        UUID NOT NULL REFERENCES papers(id) ON DELETE CASCADE,
    version         INT NOT NULL DEFAULT 1,
    manuscript_key  VARCHAR(500) NOT NULL,            -- S3 key
    manuscript_name VARCHAR(255),
    change_notes    TEXT,                             -- author's revision notes
    uploaded_at     TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_revisions_paper ON paper_revisions(paper_id);

-- ===== REVIEWS (Double-blind) =====
CREATE TABLE reviews (
    id                  UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    paper_id            UUID NOT NULL REFERENCES papers(id) ON DELETE CASCADE,
    reviewer_id         UUID NOT NULL REFERENCES users(id),
    status              review_status NOT NULL DEFAULT 'PENDING',
    -- Ratings (1-10 scale)
    originality_score   INT CHECK (originality_score BETWEEN 1 AND 10),
    methodology_score   INT CHECK (methodology_score BETWEEN 1 AND 10),
    clarity_score       INT CHECK (clarity_score BETWEEN 1 AND 10),
    relevance_score     INT CHECK (relevance_score BETWEEN 1 AND 10),
    references_score    INT CHECK (references_score BETWEEN 1 AND 10),
    overall_score       DECIMAL(4,2),                 -- computed average
    recommendation      review_recommendation,
    comments_to_author  TEXT,                         -- visible to author (anonymized)
    confidential_notes  TEXT,                         -- visible only to admin
    assigned_at         TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    deadline_at         TIMESTAMPTZ,
    started_at          TIMESTAMPTZ,
    completed_at        TIMESTAMPTZ,
    created_at          TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at          TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    UNIQUE(paper_id, reviewer_id)
);
CREATE INDEX idx_reviews_paper ON reviews(paper_id);
CREATE INDEX idx_reviews_reviewer ON reviews(reviewer_id);
CREATE INDEX idx_reviews_status ON reviews(status);

-- ===== REVIEWER EXPERTISE =====
CREATE TABLE reviewer_expertise (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    reviewer_id     UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    category_id     INT NOT NULL REFERENCES categories(id) ON DELETE CASCADE,
    UNIQUE(reviewer_id, category_id)
);

-- ===== PAYMENTS =====
CREATE TABLE payments (
    id                  UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    paper_id            UUID NOT NULL REFERENCES papers(id),
    user_id             UUID NOT NULL REFERENCES users(id),
    razorpay_order_id   VARCHAR(100),
    razorpay_payment_id VARCHAR(100),
    razorpay_signature  VARCHAR(255),
    amount_paise        INT NOT NULL,                 -- amount in paise (70000 = ₹700)
    gst_paise           INT NOT NULL,                 -- GST in paise
    total_paise         INT NOT NULL,                 -- total including GST
    currency            VARCHAR(3) NOT NULL DEFAULT 'INR',
    status              payment_status NOT NULL DEFAULT 'PENDING',
    receipt             VARCHAR(100),                  -- internal receipt no
    description         VARCHAR(255),
    paid_at             TIMESTAMPTZ,
    created_at          TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at          TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_payments_paper ON payments(paper_id);
CREATE INDEX idx_payments_user ON payments(user_id);
CREATE INDEX idx_payments_razorpay ON payments(razorpay_order_id);

-- ===== MAGAZINES / ISSUES =====
CREATE TABLE magazines (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    volume          INT NOT NULL,
    issue           INT NOT NULL,
    quarter         VARCHAR(10),                      -- e.g., "Q2 2026"
    cover_title_hi  VARCHAR(500),
    cover_title_en  VARCHAR(500),
    editorial_hi    TEXT,
    editorial_en    TEXT,
    status          magazine_status NOT NULL DEFAULT 'DRAFT',
    pdf_key         VARCHAR(500),                     -- S3 key for generated PDF
    download_count  INT NOT NULL DEFAULT 0,
    published_at    TIMESTAMPTZ,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    UNIQUE(volume, issue)
);

-- ===== MAGAZINE ↔ PAPERS (join table with ordering) =====
CREATE TABLE magazine_papers (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    magazine_id     UUID NOT NULL REFERENCES magazines(id) ON DELETE CASCADE,
    paper_id        UUID NOT NULL REFERENCES papers(id),
    paper_order     INT NOT NULL DEFAULT 0,           -- display order in magazine
    page_start      INT,
    page_end        INT,
    UNIQUE(magazine_id, paper_id)
);
CREATE INDEX idx_magpapers_magazine ON magazine_papers(magazine_id);

-- ===== CMS CONTENT (Admin-managed bilingual content) =====
CREATE TABLE cms_content (
    id              SERIAL PRIMARY KEY,
    section         content_section NOT NULL,
    group_key       VARCHAR(100) NOT NULL,            -- e.g., "hero", "banner", "stats"
    field_key       VARCHAR(100) NOT NULL,            -- unique within section+group
    title_hi        VARCHAR(500) NOT NULL,            -- Hindi label for admin UI
    title_en        VARCHAR(500) NOT NULL,            -- English label for admin UI
    value_hi        TEXT NOT NULL DEFAULT '',          -- Hindi content value
    value_en        TEXT NOT NULL DEFAULT '',          -- English content value
    field_type      VARCHAR(20) NOT NULL DEFAULT 'text',  -- text, textarea, heading, button_text
    sort_order      INT NOT NULL DEFAULT 0,
    updated_by      UUID REFERENCES users(id),
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    UNIQUE(section, group_key, field_key)
);
CREATE INDEX idx_cms_section ON cms_content(section);

-- ===== PLATFORM SETTINGS =====
CREATE TABLE platform_settings (
    key             VARCHAR(100) PRIMARY KEY,
    value           TEXT NOT NULL,
    description     VARCHAR(500),
    updated_by      UUID REFERENCES users(id),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- ===== EMAIL TEMPLATES =====
CREATE TABLE email_templates (
    id              SERIAL PRIMARY KEY,
    template_key    VARCHAR(100) NOT NULL UNIQUE,      -- e.g., "submission_received"
    subject_hi      VARCHAR(500) NOT NULL,
    subject_en      VARCHAR(500) NOT NULL,
    body_hi         TEXT NOT NULL,
    body_en         TEXT NOT NULL,
    description     VARCHAR(255),
    updated_by      UUID REFERENCES users(id),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- ===== AUDIT LOG =====
CREATE TABLE audit_log (
    id              BIGSERIAL PRIMARY KEY,
    user_id         UUID REFERENCES users(id),
    action          VARCHAR(100) NOT NULL,             -- e.g., "PAPER_SUBMITTED", "REVIEW_COMPLETED"
    entity_type     VARCHAR(50) NOT NULL,              -- e.g., "PAPER", "REVIEW", "USER"
    entity_id       VARCHAR(100),
    details         JSONB,
    ip_address      VARCHAR(45),
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_audit_user ON audit_log(user_id);
CREATE INDEX idx_audit_entity ON audit_log(entity_type, entity_id);
CREATE INDEX idx_audit_created ON audit_log(created_at DESC);

-- ===== NOTIFICATIONS =====
CREATE TABLE notifications (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    user_id         UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    title_hi        VARCHAR(500) NOT NULL,
    title_en        VARCHAR(500) NOT NULL,
    message_hi      TEXT,
    message_en      TEXT,
    link            VARCHAR(500),                     -- deep link to related page
    is_read         BOOLEAN NOT NULL DEFAULT FALSE,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_notifications_user ON notifications(user_id, is_read);

-- ===== PAPER STATUS HISTORY =====
CREATE TABLE paper_status_history (
    id              UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    paper_id        UUID NOT NULL REFERENCES papers(id) ON DELETE CASCADE,
    from_status     paper_status,
    to_status       paper_status NOT NULL,
    changed_by      UUID REFERENCES users(id),
    notes           TEXT,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_status_history_paper ON paper_status_history(paper_id);

-- ===== INITIAL DATA: Default Admin User =====
INSERT INTO users (email, password_hash, name_hi, name_en, role, status, email_verified)
VALUES ('admin@shodh.net', '$2a$10$placeholder_hash_change_on_first_login', 'प्रशासक', 'Admin', 'ADMIN', 'ACTIVE', TRUE);

-- ===== INITIAL DATA: Platform Settings =====
INSERT INTO platform_settings (key, value, description) VALUES
('site_name_hi', 'शैक्षणिक प्रेस', 'Site name in Hindi'),
('site_name_en', 'Academic Press', 'Site name in English'),
('tagline_hi', 'पत्रिका प्रकाशन मंच', 'Tagline Hindi'),
('tagline_en', 'Journal Publishing Platform', 'Tagline English'),
('contact_email', 'admin@shodh.net', 'Contact email'),
('review_fee_paise', '70000', 'Review fee in paise'),
('gst_percent', '18', 'GST percentage'),
('review_type', 'DOUBLE_BLIND', 'SINGLE_BLIND or DOUBLE_BLIND'),
('default_reviewers', '2', 'Default reviewers per paper'),
('review_deadline_days', '21', 'Default review deadline in days');

-- ===== INITIAL DATA: Email Templates =====
INSERT INTO email_templates (template_key, subject_hi, subject_en, body_hi, body_en, description) VALUES
('submission_received', 'शोधपत्र प्राप्त — {{reference_no}}', 'Paper Received — {{reference_no}}', 'प्रिय {{author_name}}, आपका शोधपत्र "{{paper_title}}" सफलतापूर्वक प्राप्त हुआ।', 'Dear {{author_name}}, Your paper "{{paper_title}}" has been received successfully.', 'Sent when paper is submitted'),
('reviewer_assigned', 'नई समीक्षा सौंपी गई — {{reference_no}}', 'New Review Assigned — {{reference_no}}', 'प्रिय {{reviewer_name}}, आपको एक नई समीक्षा सौंपी गई है।', 'Dear {{reviewer_name}}, A new review has been assigned to you.', 'Sent to reviewer on assignment'),
('revision_requested', 'संशोधन अनुरोध — {{reference_no}}', 'Revision Requested — {{reference_no}}', 'प्रिय {{author_name}}, आपके शोधपत्र में संशोधन अनुरोधित है।', 'Dear {{author_name}}, Revisions have been requested for your paper.', 'Sent when revision is requested'),
('paper_accepted', 'शोधपत्र स्वीकृत — {{reference_no}}', 'Paper Accepted — {{reference_no}}', 'बधाई! आपका शोधपत्र स्वीकृत हो गया है।', 'Congratulations! Your paper has been accepted.', 'Sent on acceptance'),
('paper_rejected', 'शोधपत्र निर्णय — {{reference_no}}', 'Paper Decision — {{reference_no}}', 'प्रिय {{author_name}}, दुर्भाग्यवश आपका शोधपत्र स्वीकृत नहीं हो सका।', 'Dear {{author_name}}, Unfortunately your paper could not be accepted.', 'Sent on rejection'),
('paper_published', 'शोधपत्र प्रकाशित — {{reference_no}}', 'Paper Published — {{reference_no}}', 'बधाई! आपका शोधपत्र प्रकाशित हो गया है।', 'Congratulations! Your paper has been published.', 'Sent on publication');

-- ===== INITIAL DATA: Default Categories =====
INSERT INTO categories (name_hi, name_en, slug, sort_order) VALUES
('कंप्यूटर विज्ञान', 'Computer Science', 'computer-science', 1),
('गणित', 'Mathematics', 'mathematics', 2),
('पर्यावरण विज्ञान', 'Environmental Science', 'environmental-science', 3),
('औषधि विज्ञान', 'Pharmacology', 'pharmacology', 4),
('भाषाविज्ञान', 'Linguistics', 'linguistics', 5),
('प्रबंधन', 'Management', 'management', 6),
('शिक्षा', 'Education', 'education', 7),
('ऊर्जा अध्ययन', 'Energy Studies', 'energy-studies', 8),
('चिकित्सा विज्ञान', 'Medical Science', 'medical-science', 9),
('जैव प्रौद्योगिकी', 'Biotechnology', 'biotechnology', 10),
('कृषि तकनीक', 'Agricultural Technology', 'agricultural-tech', 11),
('इंजीनियरिंग', 'Engineering', 'engineering', 12);

-- ===== INITIAL DATA: CMS Content Seed =====
INSERT INTO cms_content (section, group_key, field_key, title_hi, title_en, value_hi, value_en, field_type, sort_order) VALUES
-- LANDING > hero
('LANDING', 'hero', 'badge_text', 'बैज टेक्स्ट', 'Badge Text', 'शोधपत्र जमा, समीक्षा एवं प्रकाशन मंच', 'Paper Submission, Review & Publishing Platform', 'text', 1),
('LANDING', 'hero', 'brand_name', 'ब्रांड नाम', 'Brand Name', 'शोध संचयन', 'शोध संचयन', 'heading', 2),
('LANDING', 'hero', 'subtitle', 'उपशीर्षक', 'Subtitle', 'शैक्षणिक शोधपत्र प्रकाशन मंच', 'Academic Paper Publishing Platform', 'text', 3),
('LANDING', 'hero', 'description', 'विवरण', 'Description', 'शोध संचयन एक समर्पित मंच है जहाँ शोधकर्ता अपने शोधपत्र हिन्दी और अंग्रेज़ी दोनों भाषाओं में प्रस्तुत कर सकते हैं। विशेषज्ञ समीक्षा, AI-आधारित मौलिकता जाँच और डिजिटल प्रकाशन — सब एक स्थान पर।', 'Shodh Sanchayan is a dedicated platform where researchers can submit their papers in both Hindi and English. Expert peer review, AI-powered plagiarism checks, and digital publishing — all in one place.', 'textarea', 4),
('LANDING', 'hero', 'cta_submit', 'जमा बटन', 'Submit Button', 'शोधपत्र जमा करें', 'Submit Paper', 'button_text', 5),
('LANDING', 'hero', 'cta_browse', 'ब्राउज़ बटन', 'Browse Button', 'जर्नल्स ब्राउज़ करें', 'Browse Journals', 'button_text', 6),

-- LANDING > stats
('LANDING', 'stats', 'total_papers_label', 'कुल शोधपत्र लेबल', 'Total Papers Label', 'कुल शोधपत्र', 'Total Papers', 'text', 1),
('LANDING', 'stats', 'categories_label', 'श्रेणियाँ लेबल', 'Categories Label', 'श्रेणियाँ', 'Categories', 'text', 2),
('LANDING', 'stats', 'published_papers_label', 'प्रकाशित शोधपत्र लेबल', 'Published Papers Label', 'प्रकाशित शोधपत्र', 'Published Papers', 'text', 3),

-- LANDING > call_for_papers
('LANDING', 'call_for_papers', 'heading', 'शीर्षक', 'Heading', 'Call for Papers / शोधपत्र आमंत्रण', 'Call for Papers / शोधपत्र आमंत्रण', 'heading', 1),
('LANDING', 'call_for_papers', 'description_hi', 'विवरण हिन्दी', 'Description Hindi', 'हम विभिन्न विषयों पर मौलिक शोधपत्रों का स्वागत करते हैं। हिन्दी और अंग्रेज़ी दोनों भाषाओं में प्रस्तुतियाँ स्वीकार्य हैं।', 'We welcome original research papers across diverse disciplines. Submissions are accepted in both Hindi and English.', 'textarea', 2),
('LANDING', 'call_for_papers', 'step_1', 'चरण 1', 'Step 1', 'शोधपत्र तैयार करें और प्लेटफ़ॉर्म पर जमा करें', 'Prepare your paper and submit it on the platform', 'text', 3),
('LANDING', 'call_for_papers', 'step_2', 'चरण 2', 'Step 2', 'विशेषज्ञ समीक्षक आपके शोधपत्र की समीक्षा करेंगे', 'Expert reviewers will peer-review your paper', 'text', 4),
('LANDING', 'call_for_papers', 'step_3', 'चरण 3', 'Step 3', 'स्वीकृति के बाद आपका शोधपत्र प्रकाशित किया जाएगा', 'Upon acceptance, your paper will be published digitally', 'text', 5),
('LANDING', 'call_for_papers', 'highlight_1', 'हाइलाइट 1', 'Highlight 1', 'सहकर्मी समीक्षित', 'Peer-reviewed', 'text', 6),
('LANDING', 'call_for_papers', 'highlight_2', 'हाइलाइट 2', 'Highlight 2', 'AI मौलिकता जाँच', 'AI plagiarism check', 'text', 7),
('LANDING', 'call_for_papers', 'highlight_3', 'हाइलाइट 3', 'Highlight 3', 'DOI प्रदान', 'DOI assigned', 'text', 8),
('LANDING', 'call_for_papers', 'highlight_4', 'हाइलाइट 4', 'Highlight 4', 'खुली पहुँच', 'Open access', 'text', 9),
('LANDING', 'call_for_papers', 'cta_submit', 'जमा बटन', 'Submit Button', 'अभी जमा करें', 'Submit Now', 'button_text', 10),

-- LANDING > latest_papers
('LANDING', 'latest_papers', 'heading', 'शीर्षक', 'Heading', 'नवीनतम प्रकाशित शोधपत्र', 'Latest Published Papers', 'heading', 1),
('LANDING', 'latest_papers', 'view_all', 'सभी देखें बटन', 'View All Button', 'सभी देखें', 'View All', 'button_text', 2),
('LANDING', 'latest_papers', 'no_papers', 'कोई शोधपत्र नहीं', 'No Papers', 'अभी तक कोई शोधपत्र प्रकाशित नहीं हुआ है', 'No papers published yet', 'text', 3),
('LANDING', 'latest_papers', 'published_label', 'प्रकाशित लेबल', 'Published Label', 'प्रकाशित:', 'Published:', 'text', 4),

-- NAVBAR
('NAVBAR', 'nav', 'brand_name', 'ब्रांड नाम', 'Brand Name', 'शोध संचयन', 'शोध संचयन', 'heading', 1),
('NAVBAR', 'nav', 'home', 'होम लिंक', 'Home Link', 'होम', 'Home', 'text', 2),
('NAVBAR', 'nav', 'journals', 'जर्नल्स लिंक', 'Journals Link', 'जर्नल्स', 'Journals', 'text', 3),
('NAVBAR', 'nav', 'logout', 'लॉगआउट बटन', 'Logout Button', 'लॉगआउट', 'Logout', 'button_text', 4),
('NAVBAR', 'nav', 'login', 'लॉगिन बटन', 'Login Button', 'लॉगिन', 'Login', 'button_text', 5),

-- FOOTER
('FOOTER', 'footer', 'copyright', 'कॉपीराइट', 'Copyright', '© 2026 शोध संचयन — Academic Press', '© 2026 शोध संचयन — Academic Press', 'text', 1),
('FOOTER', 'footer', 'link_about', 'अबाउट लिंक', 'About Link', 'हमारे बारे में', 'About', 'text', 2),
('FOOTER', 'footer', 'link_contact', 'संपर्क लिंक', 'Contact Link', 'संपर्क', 'Contact', 'text', 3),
('FOOTER', 'footer', 'link_privacy', 'गोपनीयता लिंक', 'Privacy Link', 'गोपनीयता नीति', 'Privacy Policy', 'text', 4),

-- LOGIN (auth page)
('LOGIN', 'auth_header', 'title', 'शीर्षक', 'Title', 'शोध संचयन', 'शोध संचयन', 'heading', 1),
('LOGIN', 'auth_header', 'subtitle', 'उपशीर्षक', 'Subtitle', 'Shodh Sanchayan — शैक्षणिक शोधपत्र मंच', 'Shodh Sanchayan — Academic Paper Platform', 'text', 2),
('LOGIN', 'auth_tabs', 'login_tab', 'लॉगिन टैब', 'Login Tab', 'लॉगिन / Login', 'लॉगिन / Login', 'text', 1),
('LOGIN', 'auth_tabs', 'register_tab', 'पंजीकरण टैब', 'Register Tab', 'पंजीकरण / Register', 'पंजीकरण / Register', 'text', 2),
('LOGIN', 'auth_tabs', 'password_mode', 'पासवर्ड मोड', 'Password Mode', 'ईमेल + पासवर्ड', 'ईमेल + पासवर्ड', 'text', 3),
('LOGIN', 'auth_tabs', 'otp_mode', 'OTP मोड', 'OTP Mode', 'OTP लॉगिन', 'OTP लॉगिन', 'text', 4),
('LOGIN', 'auth_labels', 'email_label', 'ईमेल लेबल', 'Email Label', 'ईमेल / Email', 'ईमेल / Email', 'text', 1),
('LOGIN', 'auth_labels', 'password_label', 'पासवर्ड लेबल', 'Password Label', 'पासवर्ड / Password', 'पासवर्ड / Password', 'text', 2),
('LOGIN', 'auth_labels', 'login_button', 'लॉगिन बटन', 'Login Button', 'लॉगिन / Login', 'लॉगिन / Login', 'button_text', 3),
('LOGIN', 'auth_labels', 'loading_text', 'लोडिंग टेक्स्ट', 'Loading Text', 'कृपया प्रतीक्षा करें...', 'Please wait...', 'text', 4),
('LOGIN', 'auth_labels', 'email_or_phone_label', 'ईमेल/फ़ोन लेबल', 'Email or Phone Label', 'ईमेल या फ़ोन / Email or Phone', 'ईमेल या फ़ोन / Email or Phone', 'text', 5),
('LOGIN', 'auth_labels', 'send_otp_button', 'OTP भेजें बटन', 'Send OTP Button', 'OTP भेजें / Send OTP', 'OTP भेजें / Send OTP', 'button_text', 6),
('LOGIN', 'auth_labels', 'otp_label', 'OTP लेबल', 'OTP Label', 'OTP (6 अंक / 6 digits)', 'OTP (6 अंक / 6 digits)', 'text', 7),
('LOGIN', 'auth_labels', 'verify_button', 'सत्यापन बटन', 'Verify Button', 'सत्यापित करें / Verify', 'सत्यापित करें / Verify', 'button_text', 8),
('LOGIN', 'auth_labels', 'go_back', 'वापस जाएं', 'Go Back', 'वापस जाएं / Go back', 'वापस जाएं / Go back', 'text', 9),
('LOGIN', 'auth_register', 'name_hi_label', 'हिन्दी नाम लेबल', 'Hindi Name Label', 'नाम (हिन्दी)', 'नाम (हिन्दी)', 'text', 1),
('LOGIN', 'auth_register', 'name_en_label', 'अंग्रेज़ी नाम लेबल', 'English Name Label', 'Name (English)', 'Name (English)', 'text', 2),
('LOGIN', 'auth_register', 'phone_label', 'फ़ोन लेबल', 'Phone Label', 'फ़ोन / Phone', 'फ़ोन / Phone', 'text', 3),
('LOGIN', 'auth_register', 'designation_label', 'पदनाम लेबल', 'Designation Label', 'पदनाम / Designation', 'पदनाम / Designation', 'text', 4),
('LOGIN', 'auth_register', 'institution_label', 'संस्थान लेबल', 'Institution Label', 'संस्थान / Institution', 'संस्थान / Institution', 'text', 5),
('LOGIN', 'auth_register', 'register_button', 'पंजीकरण बटन', 'Register Button', 'पंजीकरण / Register', 'पंजीकरण / Register', 'button_text', 6),

-- SUBMIT
('SUBMIT', 'submit_header', 'title', 'शीर्षक', 'Title', 'शोधपत्र जमा करें', 'Submit Paper', 'heading', 1),
('SUBMIT', 'submit_header', 'subtitle', 'उपशीर्षक', 'Subtitle', 'समीक्षा हेतु अपनी पांडुलिपि प्रस्तुत करने के लिए सभी चरण पूरे करें', 'Complete all steps to submit your manuscript for review', 'text', 2),
('SUBMIT', 'submit_steps', 'step_1', 'चरण 1', 'Step 1', 'विवरण', 'Metadata', 'text', 1),
('SUBMIT', 'submit_steps', 'step_2', 'चरण 2', 'Step 2', 'सह-लेखक', 'Co-Authors', 'text', 2),
('SUBMIT', 'submit_steps', 'step_3', 'चरण 3', 'Step 3', 'अपलोड', 'Upload', 'text', 3),
('SUBMIT', 'submit_steps', 'step_4', 'चरण 4', 'Step 4', 'समीक्षा', 'Review', 'text', 4),
('SUBMIT', 'submit_metadata', 'section_title', 'अनुभाग शीर्षक', 'Section Title', 'शोधपत्र विवरण', 'Paper Details', 'heading', 1),
('SUBMIT', 'submit_metadata', 'title_label', 'शीर्षक लेबल', 'Title Label', 'शीर्षक', 'Title', 'text', 2),
('SUBMIT', 'submit_metadata', 'abstract_label', 'सारांश लेबल', 'Abstract Label', 'सारांश', 'Abstract', 'text', 3),
('SUBMIT', 'submit_metadata', 'keywords_label', 'कीवर्ड लेबल', 'Keywords Label', 'मुख्य शब्द', 'Keywords', 'text', 4),
('SUBMIT', 'submit_metadata', 'keywords_hint', 'कीवर्ड संकेत', 'Keywords Hint', 'अल्पविराम से अलग करें', 'Separate with commas', 'text', 5),
('SUBMIT', 'submit_metadata', 'ai_process_button', 'AI प्रोसेस बटन', 'AI Process Button', 'AI प्रोसेस', 'AI Process', 'button_text', 6),
('SUBMIT', 'submit_coauthors', 'category_label', 'श्रेणी लेबल', 'Category Label', 'श्रेणी', 'Category', 'text', 1),
('SUBMIT', 'submit_coauthors', 'coauthors_label', 'सह-लेखक लेबल', 'Co-Authors Label', 'सह-लेखक', 'Co-Authors', 'text', 2),
('SUBMIT', 'submit_coauthors', 'add_coauthor', 'सह-लेखक जोड़ें बटन', 'Add Co-Author Button', 'सह-लेखक जोड़ें', 'Add Co-Author', 'button_text', 3),
('SUBMIT', 'submit_coauthors', 'no_coauthors', 'कोई सह-लेखक नहीं', 'No Co-Authors', 'कोई सह-लेखक नहीं जोड़े गए', 'No co-authors added', 'text', 4),
('SUBMIT', 'submit_coauthors', 'corresponding_author', 'पत्राचार लेखक', 'Corresponding Author', 'पत्राचार लेखक', 'Corresponding author', 'text', 5),
('SUBMIT', 'submit_upload', 'section_title', 'अनुभाग शीर्षक', 'Section Title', 'पांडुलिपि अपलोड', 'Upload Manuscript', 'heading', 1),
('SUBMIT', 'submit_upload', 'drag_text', 'ड्रैग टेक्स्ट', 'Drag Text', 'क्लिक करें या फ़ाइल खींचें', 'Click or drag file', 'text', 2),
('SUBMIT', 'submit_upload', 'file_formats', 'फ़ाइल फ़ॉर्मेट', 'File Formats', 'PDF, DOCX, LaTeX — अधिकतम 25MB', 'PDF, DOCX, LaTeX — max 25MB', 'text', 3),
('SUBMIT', 'submit_upload', 'remove_file', 'हटाएं बटन', 'Remove Button', 'हटाएं', 'Remove', 'button_text', 4),
('SUBMIT', 'submit_review', 'section_title', 'अनुभाग शीर्षक', 'Section Title', 'समीक्षा एवं जमा', 'Review & Submit', 'heading', 1),
('SUBMIT', 'submit_review', 'payment_notice', 'भुगतान सूचना', 'Payment Notice', 'समीक्षा शुल्क ₹700 + 18% GST = ₹826 देय होगा', 'Review fee ₹700 + 18% GST = ₹826 payable', 'text', 2),
('SUBMIT', 'submit_review', 'back_button', 'पीछे बटन', 'Back Button', 'पीछे', 'Back', 'button_text', 3),
('SUBMIT', 'submit_review', 'next_button', 'आगे बटन', 'Next Button', 'आगे बढ़ें', 'Next', 'button_text', 4),
('SUBMIT', 'submit_review', 'pay_submit_button', 'भुगतान बटन', 'Pay Button', 'भुगतान करें और जमा करें', 'Pay & Submit', 'button_text', 5),

-- AUTHOR
('AUTHOR', 'author_header', 'greeting', 'अभिवादन', 'Greeting', 'नमस्ते', 'Hello', 'text', 1),
('AUTHOR', 'author_header', 'subtitle', 'उपशीर्षक', 'Subtitle', 'लेखक डैशबोर्ड', 'Author Dashboard', 'text', 2),
('AUTHOR', 'author_header', 'submit_new', 'नया जमा बटन', 'Submit New Button', 'नया शोधपत्र', 'Submit New Paper', 'button_text', 3),
('AUTHOR', 'author_stats', 'total_papers', 'कुल शोधपत्र', 'Total Papers', 'कुल शोधपत्र', 'Total Papers', 'text', 1),
('AUTHOR', 'author_stats', 'under_review', 'समीक्षाधीन', 'Under Review', 'समीक्षाधीन', 'Under Review', 'text', 2),
('AUTHOR', 'author_stats', 'published', 'प्रकाशित', 'Published', 'प्रकाशित', 'Published', 'text', 3),
('AUTHOR', 'author_table', 'table_title', 'तालिका शीर्षक', 'Table Title', 'मेरे शोधपत्र', 'My Papers', 'heading', 1),
('AUTHOR', 'author_table', 'col_title', 'शीर्षक कॉलम', 'Title Column', 'शीर्षक', 'Title', 'text', 2),
('AUTHOR', 'author_table', 'col_status', 'स्थिति कॉलम', 'Status Column', 'स्थिति', 'Status', 'text', 3),
('AUTHOR', 'author_table', 'col_submitted', 'जमा तिथि कॉलम', 'Submitted Column', 'जमा तिथि', 'Submitted', 'text', 4),
('AUTHOR', 'author_table', 'no_papers', 'कोई शोधपत्र नहीं', 'No Papers', 'कोई शोधपत्र नहीं मिला', 'No papers found', 'text', 5),
('AUTHOR', 'author_table', 'submit_first', 'पहला जमा करें', 'Submit First', 'अपना पहला शोधपत्र जमा करें', 'Submit your first paper', 'text', 6),

-- REVIEWER
('REVIEWER', 'reviewer_header', 'greeting', 'अभिवादन', 'Greeting', 'नमस्ते', 'Hello', 'text', 1),
('REVIEWER', 'reviewer_header', 'subtitle', 'उपशीर्षक', 'Subtitle', 'समीक्षक डैशबोर्ड', 'Reviewer Dashboard', 'text', 2),
('REVIEWER', 'reviewer_tabs', 'pending_tab', 'लंबित टैब', 'Pending Tab', 'लंबित समीक्षाएं', 'Pending Reviews', 'text', 1),
('REVIEWER', 'reviewer_tabs', 'completed_tab', 'पूर्ण टैब', 'Completed Tab', 'पूर्ण समीक्षाएं', 'Completed Reviews', 'text', 2),
('REVIEWER', 'reviewer_actions', 'deadline_label', 'समय सीमा लेबल', 'Deadline Label', 'समय सीमा', 'Deadline', 'text', 1),
('REVIEWER', 'reviewer_actions', 'review_button', 'समीक्षा बटन', 'Review Button', 'समीक्षा', 'Review', 'button_text', 2),
('REVIEWER', 'reviewer_actions', 'decline_button', 'अस्वीकार बटन', 'Decline Button', 'अस्वीकार', 'Decline', 'button_text', 3),
('REVIEWER', 'reviewer_actions', 'no_pending', 'कोई लंबित नहीं', 'No Pending', 'कोई लंबित समीक्षा नहीं', 'No pending reviews', 'text', 4),
('REVIEWER', 'reviewer_actions', 'no_completed', 'कोई पूर्ण नहीं', 'No Completed', 'कोई पूर्ण समीक्षा नहीं', 'No completed reviews', 'text', 5),

-- ADMIN
('ADMIN', 'admin_header', 'title', 'शीर्षक', 'Title', 'प्रशासन डैशबोर्ड', 'Admin Dashboard', 'heading', 1),
('ADMIN', 'admin_header', 'subtitle', 'उपशीर्षक', 'Subtitle', 'प्लेटफ़ॉर्म अवलोकन', 'Platform overview', 'text', 2),
('ADMIN', 'admin_stats', 'total_papers', 'कुल शोधपत्र', 'Total Papers', 'कुल शोधपत्र', 'Total Papers', 'text', 1),
('ADMIN', 'admin_stats', 'pending_papers', 'लंबित शोधपत्र', 'Pending Papers', 'लंबित शोधपत्र', 'Pending Papers', 'text', 2),
('ADMIN', 'admin_stats', 'under_review', 'समीक्षाधीन', 'Under Review', 'समीक्षाधीन', 'Under Review', 'text', 3),
('ADMIN', 'admin_stats', 'published', 'प्रकाशित', 'Published', 'प्रकाशित', 'Published', 'text', 4),
('ADMIN', 'admin_stats', 'total_users', 'कुल उपयोगकर्ता', 'Total Users', 'कुल उपयोगकर्ता', 'Total Users', 'text', 5),
('ADMIN', 'admin_stats', 'authors', 'लेखक', 'Authors', 'लेखक', 'Authors', 'text', 6),
('ADMIN', 'admin_stats', 'reviewers', 'समीक्षक', 'Reviewers', 'समीक्षक', 'Reviewers', 'text', 7),
('ADMIN', 'admin_stats', 'active_categories', 'सक्रिय श्रेणियां', 'Active Categories', 'सक्रिय श्रेणियां', 'Active Categories', 'text', 8),

-- ADMIN_PAPERS
('ADMIN_PAPERS', 'papers_header', 'title', 'शीर्षक', 'Title', 'शोधपत्र प्रबंधन', 'Paper Management', 'heading', 1),
('ADMIN_PAPERS', 'papers_header', 'subtitle', 'उपशीर्षक', 'Subtitle', 'सभी शोधपत्र देखें और प्रबंधित करें', 'View & manage all papers', 'text', 2),
('ADMIN_PAPERS', 'papers_table', 'col_ref', 'संदर्भ कॉलम', 'Ref Column', 'संदर्भ सं.', 'Ref No.', 'text', 1),
('ADMIN_PAPERS', 'papers_table', 'col_title', 'शीर्षक कॉलम', 'Title Column', 'शीर्षक', 'Title', 'text', 2),
('ADMIN_PAPERS', 'papers_table', 'col_status', 'स्थिति कॉलम', 'Status Column', 'स्थिति', 'Status', 'text', 3),
('ADMIN_PAPERS', 'papers_table', 'col_date', 'तिथि कॉलम', 'Date Column', 'तिथि', 'Date', 'text', 4),
('ADMIN_PAPERS', 'papers_table', 'col_actions', 'कार्यवाही कॉलम', 'Actions Column', 'कार्यवाही', 'Actions', 'text', 5),
('ADMIN_PAPERS', 'papers_table', 'no_papers', 'कोई शोधपत्र नहीं', 'No Papers', 'कोई शोधपत्र नहीं', 'No papers found', 'text', 6),

-- SIDEBAR
('SIDEBAR', 'sidebar_author', 'dashboard', 'डैशबोर्ड', 'Dashboard', 'डैशबोर्ड', 'Dashboard', 'text', 1),
('SIDEBAR', 'sidebar_author', 'submit_paper', 'शोधपत्र जमा करें', 'Submit Paper', 'शोधपत्र जमा करें', 'Submit Paper', 'text', 2),
('SIDEBAR', 'sidebar_author', 'my_papers', 'मेरे शोधपत्र', 'My Papers', 'मेरे शोधपत्र', 'My Papers', 'text', 3),
('SIDEBAR', 'sidebar_reviewer', 'dashboard', 'डैशबोर्ड', 'Dashboard', 'डैशबोर्ड', 'Dashboard', 'text', 1),
('SIDEBAR', 'sidebar_reviewer', 'pending_reviews', 'लंबित समीक्षा', 'Pending Reviews', 'लंबित समीक्षा', 'Pending Reviews', 'text', 2),
('SIDEBAR', 'sidebar_reviewer', 'completed_reviews', 'पूर्ण समीक्षा', 'Completed Reviews', 'पूर्ण समीक्षा', 'Completed Reviews', 'text', 3),
('SIDEBAR', 'sidebar_admin', 'dashboard', 'डैशबोर्ड', 'Dashboard', 'डैशबोर्ड', 'Dashboard', 'text', 1),
('SIDEBAR', 'sidebar_admin', 'papers', 'शोधपत्र', 'Papers', 'शोधपत्र', 'Papers', 'text', 2),
('SIDEBAR', 'sidebar_admin', 'users', 'उपयोगकर्ता', 'Users', 'उपयोगकर्ता', 'Users', 'text', 3),
('SIDEBAR', 'sidebar_admin', 'categories', 'श्रेणियाँ', 'Categories', 'श्रेणियाँ', 'Categories', 'text', 4),
('SIDEBAR', 'sidebar_admin', 'page_content', 'पृष्ठ सामग्री', 'Page Content', 'पृष्ठ सामग्री', 'Page Content', 'text', 5);
