#!/usr/bin/env python3
"""
Build Laporan Kinerja BIB TW1 & TW2 2026
- Follows exact format of Laporan Evaluasi Kinerja KABIB_TW I/II 2025.doc
- No Chinese/garbage characters
- Uses OPRE (Optimalisasi Reproduksi), not SIKOMANDAN
- Font: Arial 12, first-line indent 1.5cm, tables kept together
"""
from docx import Document
from docx.shared import Pt, RGBColor, Inches, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

FONT_NAME = 'Arial'
FONT_SIZE = 12
INDENT = Cm(1.5)

# ─── helpers ────────────────────────────────────────────────────────────────

def new_para(doc, align=WD_ALIGN_PARAGRAPH.JUSTIFY, sb=0, sa=6, indent_first=False):
    p = doc.add_paragraph()
    p.alignment = align
    p.paragraph_format.space_before = Pt(sb)
    p.paragraph_format.space_after = Pt(sa)
    if indent_first:
        p.paragraph_format.first_line_indent = INDENT
    return p

def add_run(para, text, bold=False, size=FONT_SIZE, color=None):
    r = para.add_run(text)
    r.font.name = FONT_NAME
    r.font.size = Pt(size)
    r.bold = bold
    if color:
        r.font.color.rgb = RGBColor(*color)
    return r

def apply_font(para):
    for run in para.runs:
        run.font.name = FONT_NAME
        run.font.size = Pt(FONT_SIZE)

def body(doc, text):
    p = new_para(doc, indent_first=True)
    add_run(p, text)
    return p

def center(doc, text, bold=False, size=14, color=(22,50,61), sa=4):
    p = new_para(doc, align=WD_ALIGN_PARAGRAPH.CENTER, sa=sa)
    add_run(p, text, bold=bold, size=size, color=color)
    return p

def bab_h(doc, text):
    p = new_para(doc, align=WD_ALIGN_PARAGRAPH.CENTER, sb=12, sa=4)
    add_run(p, text, bold=True, size=14, color=(22,50,61))
    return p

def sub_h(doc, text):
    p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sb=10, sa=4)
    add_run(p, text, bold=True, size=12, color=(22,50,61))
    return p

def mini_h(doc, text):
    p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sb=8, sa=3)
    add_run(p, text, bold=True, size=11, color=(22,50,61))
    return p

def cell_bg(cell, hex_color):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    shd = OxmlElement('w:shd')
    shd.set(qn('w:val'), 'clear')
    shd.set(qn('w:color'), 'auto')
    shd.set(qn('w:fill'), hex_color)
    tcPr.append(shd)

def tbl_keep(tbl):
    tblPr = tbl._tbl.tblPr
    if tblPr is None:
        tblPr = OxmlElement('w:tblPr')
        tbl._tbl.insert(0, tblPr)
    cantSplit = OxmlElement('w:cantSplit')
    cantSplit.set(qn('w:val'), '1')
    tblPr.append(cantSplit)

def make_table(doc, headers, rows_data, hdr_bg='D9EAD3'):
    tbl = doc.add_table(rows=1+len(rows_data), cols=len(headers))
    tbl.style = 'Table Grid'
    tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
    tbl_keep(tbl)
    hr = tbl.rows[0]
    for i, h in enumerate(headers):
        c = hr.cells[i]
        p = c.paragraphs[0]
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        p.paragraph_format.space_before = Pt(2)
        p.paragraph_format.space_after = Pt(2)
        add_run(p, h, bold=True, size=10)
        cell_bg(c, hdr_bg)
    for ri, rvals in enumerate(rows_data):
        row = tbl.rows[ri+1]
        for ci, v in enumerate(rvals):
            c = row.cells[ci]
            p = c.paragraphs[0]
            p.paragraph_format.space_before = Pt(2)
            p.paragraph_format.space_after = Pt(2)
            add_run(p, v, size=10)
            cell_bg(c, 'FFFFFF')
    return tbl

def spc(doc, n=1):
    for _ in range(n):
        p = doc.add_paragraph()
        p.paragraph_format.space_before = Pt(0)
        p.paragraph_format.space_after = Pt(0)

def bullet(doc, text):
    p = doc.add_paragraph(style='List Bullet')
    p.paragraph_format.space_before = Pt(0)
    p.paragraph_format.space_after = Pt(3)
    p.paragraph_format.left_indent = Cm(0.5)
    r = p.add_run(text)
    r.font.name = FONT_NAME
    r.font.size = Pt(FONT_SIZE)

# ─── BUILD FUNCTION ────────────────────────────────────────────────────────

def build_bib(tw_romawi, triwulan_text, bulan_text,
              iku1_target, iku2_target,
              semen_dosis, semen_rincian,
              comparison_prev, comparison_curr,
              tgl_ttd, output_path):

    doc = Document()
    sec = doc.sections[0]
    sec.page_width = Inches(8.27)
    sec.page_height = Inches(11.69)
    sec.left_margin = Inches(1)
    sec.right_margin = Inches(1)
    sec.top_margin = Inches(1)
    sec.bottom_margin = Inches(0.9)

    # ── COVER ──────────────────────────────────────────────────────────────
    for _ in range(3): spc(doc)
    center(doc, 'LAPORAN KINERJA TRIWULAN ' + tw_romawi,
            bold=True, size=18, color=(22,50,61), sa=0)
    center(doc, 'TAHUN 2026',
            bold=True, size=18, color=(22,50,61), sa=8)
    center(doc, 'Kepala Balai Inseminasi Buatan',
            bold=False, size=14, color=(22,50,61), sa=8)
    spc(doc, 2)
    for t in ['BALAI INSEMINASI BUATAN',
               'DINAS PERKEBUNAN DAN PETERNAKAN',
               'PROVINSI KALIMANTAN SELATAN']:
        center(doc, t, bold=True, size=14, color=(22,50,61), sa=4)
    doc.add_page_break()

    # ── KATA PENGANTAR ───────────────────────────────────────────────────
    center(doc, 'KATA PENGANTAR', bold=True, size=14, color=(22,50,61), sa=12)

    for t in [
        'Dengan memanjatkan puji dan syukur kehadirat Allah SWT, karena dengan '
        'rahmat dan karunia-Nya maka Laporan Kinerja Triwulan ' + tw_romawi +
        ' Tahun 2026 pada Balai Inseminasi Buatan Dinas Perkebunan dan Peternakan '
        'Provinsi Kalimantan Selatan dapat diselesaikan.',
        'Laporan ini disusun sebagai informasi kegiatan dan kinerja yang telah '
        'dilaksanakan pada Balai Inseminasi Buatan Provinsi Kalimantan Selatan '
        'selama bulan ' + bulan_text + ' tahun 2026. Laporan ini masih '
        'belum sempurna, mungkin masih terdapat kekurangan-kekurangan dalam '
        'penyusunannya. Untuk itu saran perbaikan ke depan sangat diharapkan.',
        'Akhir kata kami mengucapkan terima kasih kepada semua pihak yang telah '
        'membantu dalam pelaksanaan kegiatan sampai dengan terselesaikannya '
        'laporan ini. Semoga laporan ini dapat bermanfaat sebagai bahan evaluasi '
        'pelaksanaan kegiatan dan semua pihak yang memerlukan.'
    ]:
        p = body(doc, t); apply_font(p)

    spc(doc)
    p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sa=2)
    add_run(p, tgl_ttd)
    spc(doc, 2)
    for t in ['Kepala Dinas,', 'Kepala Balai,']:
        p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sa=2)
        add_run(p, t)
    spc(doc, 2)
    for t in ['drh. Suparmi, M.S.', 'NIP. 196809111995032003', '',
              'drh. Sasongko Nugroho', 'NIP. 197905232008031002']:
        p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sa=2)
        add_run(p, t)
    doc.add_page_break()

    # ── BAB I ──────────────────────────────────────────────────────────────
    bab_h(doc, 'BAB I')
    bab_h(doc, 'PENDAHULUAN')

    sub_h(doc, 'Latar Belakang')
    for t in [
        'Balai Inseminasi Buatan (BIB) Provinsi Kalimantan Selatan merupakan '
        'salah satu unit pelaksana teknis daerah Dinas Perkebunan dan Peternakan '
        'Provinsi Kalimantan Selatan yang memiliki peran strategis dalam '
        'mendukung pembangunan sektor peternakan di wilayah Kalimantan Selatan. '
        'Sebagai organisasi yang bertanggung jawab atas produksi dan distribusi '
        'semen beku berkualitas, Balai Inseminasi Buatan Provinsi Kalimantan '
        'Selatan berkontribusi langsung pada peningkatan produktivitas ternak '
        'melalui penerapan teknologi reproduksi, khususnya inseminasi buatan.',
        'Inseminasi buatan merupakan salah satu teknologi mutakhir yang '
        'digunakan dalam pengembangan peternakan modern. Teknologi ini '
        'bertujuan untuk memperbaiki mutu genetik ternak, meningkatkan '
        'efisiensi reproduksi, dan mendukung program peningkatan populasi '
        'ternak di wilayah Kalimantan Selatan. Dengan memanfaatkan potensi '
        'lokal dan sumber daya yang tersedia, BIB Kalimantan Selatan berupaya '
        'memenuhi kebutuhan semen beku berkualitas tinggi untuk berbagai '
        'jenis ternak, terutama sapi, kerbau dan kambing dalam rangka '
        'mendukung program swasembada daging nasional.',
        'Tantangan yang dihadapi dalam pelaksanaan tugas dan fungsi BIB '
        'Kalimantan Selatan mencakup berbagai aspek, seperti ketersediaan '
        'sumber daya manusia yang kompeten, sarana dan prasarana yang '
        'memadai, serta adaptasi terhadap perkembangan teknologi yang cepat. '
        'Selain itu, kondisi geografis dan demografis Kalimantan Selatan '
        'yang beragam juga memerlukan strategi khusus dalam distribusi semen '
        'beku dan penerapan inseminasi buatan.',
        'Sebagai instansi yang bertanggung jawab atas pengelolaan sektor '
        'peternakan, Dinas Perkebunan dan Peternakan memiliki peran '
        'strategis dalam merumuskan dan melaksanakan kebijakan serta '
        'program pembangunan. Upaya yang dilakukan bertujuan untuk '
        'mencapai target, sasaran, dan tujuan yang telah ditetapkan '
        'secara nasional dan daerah.',
        'Transformasi secara bertahap juga diperlukan untuk memastikan '
        'bahwa arah pembangunan peternakan lebih fokus dan terarah. '
        'Pendekatan ini membantu menjawab tantangan-tantangan yang ada, '
        'seperti kebutuhan akan peningkatan populasi ternak dan swasembada '
        'daging sapi di wilayah ini.',
        'Melalui program kerja yang terintegrasi, Dinas Perkebunan dan '
        'Peternakan melalui UPTD Balai Inseminasi Buatan Provinsi '
        'Kalimantan Selatan berkomitmen untuk meningkatkan populasi '
        'ternak dan mendukung kegiatan Optimalisasi Reproduksi (OPRE). '
        'Dengan kolaborasi antara berbagai pihak, pembangunan sektor '
        'peternakan di Kalimantan Selatan diharapkan dapat terus '
        'memberikan manfaat besar bagi masyarakat dan mendukung '
        'kemandirian pangan nasional.',
        'Balai Inseminasi Buatan pada Dinas Perkebunan dan Peternakan '
        'Provinsi Kalimantan Selatan dibentuk berdasarkan Peraturan '
        'Gubernur Kalimantan Selatan Nomor 0149 Tahun 2017 Tanggal '
        '27 Desember 2017 Tentang Pembentukan, Organisasi dan Tata '
        'Kerja Unit Pelaksana Teknis Daerah pada Dinas Perkebunan '
        'dan Peternakan Provinsi Kalimantan Selatan. Balai Inseminasi '
        'Buatan dengan motto "Mani Banua Bangun Nusantara" mempunyai '
        'tugas pokok melaksanakan kegiatan teknis operasional Dinas '
        'Perkebunan dan Peternakan di bidang produksi dan distribusi '
        'mani beku, pengkajian dan pemeliharaan ternak pejantan '
        'unggul, serta fasilitasi akseptor inseminasi buatan.',
        'Untuk melaksanakan tugas pokok dimaksud, Balai Inseminasi '
        'Buatan Provinsi Kalimantan Selatan mempunyai fungsi sebagai berikut:',
    ]:
        p = body(doc, t); apply_font(p)

    for f in [
        'Penyusunan program dan pedoman teknis pengelolaan produksi '
        'dan distribusi mani beku, pengkajian dan pemeliharaan ternak '
        'pejantan unggul, serta fasilitasi akseptor inseminasi buatan;',
        'Penyusunan program, koordinasi, pembinaan, dan pengaturan '
        'serta pengendalian kegiatan produksi mani beku;',
        'Penyusunan program, koordinasi, pembinaan, dan pengaturan '
        'serta pengendalian kegiatan distribusi mani beku;',
        'Penyusunan program, koordinasi, pembinaan, dan pengaturan '
        'serta pengendalian kegiatan pengkajian dan pengembangan '
        'serta pemeliharaan ternak pejantan unggul;',
        'Penyusunan program, koordinasi, pembinaan, dan pengaturan '
        'serta pengendalian kegiatan fasilitasi akseptor inseminasi '
        'buatan; dan',
        'Pembinaan, pengaturan, dan pengendalian ketatausahaan.',
    ]:
        bullet(doc, f)

    spc(doc)
    p = body(doc, 'Untuk melaksanakan tugas pokok dan fungsi tersebut, '
                  'uraian tugas Balai Inseminasi Buatan Provinsi Kalimantan '
                  'Selatan adalah sebagai berikut:')
    apply_font(p)

    for t in [
        'Menyusun program dan pedoman teknis pengelolaan produksi dan '
        'distribusi mani beku, pengkajian dan pemeliharaan ternak pejantan, '
        'serta fasilitasi akseptor inseminasi buatan;',
        'Menyusun program, mengoordinasi, membina, dan mengatur serta '
        'mengendalikan kegiatan produksi mani beku;',
        'Menyusun program, mengoordinasi, membina, dan mengatur serta '
        'mengendalikan kegiatan distribusi mani beku;',
        'Menyusun program, mengoordinasi, membina, dan mengatur serta '
        'mengendalikan kegiatan pengkajian dan pengembangan serta '
        'pemeliharaan ternak pejantan;',
        'Menyusun program, mengoordinasi, membina, dan mengatur serta '
        'mengendalikan kegiatan fasilitasi akseptor inseminasi buatan;',
        'Membina, mengatur, dan mengendalikan kegiatan ketatausahaan; dan',
        'Melaksanakan tugas lain sesuai bidang tugas dan tanggung jawabnya.',
    ]:
        bullet(doc, t)

    sub_h(doc, 'Maksud dan Tujuan')
    p = body(doc, 'Maksud: Laporan ini disusun sebagai bentuk '
                  'pertanggungjawaban administratif dan operasional atas '
                  'tugas dan fungsi yang dilaksanakan oleh Balai '
                  'Inseminasi Buatan Provinsi Kalimantan Selatan dalam '
                  'tahun anggaran 2026. Laporan ini bertujuan untuk '
                  'memberikan gambaran capaian kinerja, penggunaan '
                  'anggaran, dan keberhasilan pelaksanaan '
                  'program-program strategis yang telah direncanakan.')
    apply_font(p)
    p = body(doc, 'Tujuan: Tujuan dari pelaksanaan tugas dan fungsi '
                  'Balai Inseminasi Buatan Provinsi Kalimantan Selatan '
                  'adalah sebagai berikut:')
    apply_font(p)

    for t in [
        'Peningkatan kegiatan penyusunan program, pengelolaan '
        'penatausahaan keuangan dan aset, administrasi kepegawaian, '
        'ketatalaksanaan, surat-menyurat, rumah tangga, dan '
        'perlengkapan pada Balai Inseminasi Buatan;',
        'Melaksanakan pemeliharaan bull/pejantan sebagai sumber '
        'daya genetik unggul untuk produksi semen beku;',
        'Mengoptimalkan produksi semen segar untuk mendukung target '
        'produksi straw di Balai Inseminasi Buatan Provinsi '
        'Kalimantan Selatan;',
        'Melaksanakan pengamatan ternak akseptor pada 11 Kabupaten/Kota '
        'di wilayah Provinsi Kalimantan Selatan;',
        'Mewujudkan kemandirian penyediaan semen beku ternak '
        'berskala nasional, dengan mengoptimalkan produksi semen '
        'beku ternak yang berkualitas.',
    ]:
        bullet(doc, t)

    sub_h(doc, 'Sasaran')
    for s in [
        'Mewujudkan tata layanan kesekretariatan sesuai dengan '
        'ketentuan di Balai Inseminasi Buatan Provinsi '
        'Kalimantan Selatan;',
        'Mewujudkan peningkatan populasi ternak dalam Program '
        'Penyediaan dan Pengembangan Sarana Pertanian untuk '
        'melaksanakan tugas dan fungsi Balai Inseminasi Buatan '
        'sebagai penyedia semen beku ternak.',
    ]:
        bullet(doc, s)

    sub_h(doc, 'Output')
    p = body(doc, 'Jumlah dokumen perencanaan perangkat daerah serta '
                  'jumlah laporan evaluasi kinerja perangkat daerah. '
                  'Tercapainya produksi semen segar yang berkualitas '
                  'untuk memenuhi target produksi straw sebanyak '
                  '100.000 dosis.')
    apply_font(p)

    sub_h(doc, 'Outcome')
    p = body(doc, 'Tercapainya indeks kepuasan terhadap layanan '
                  'kesekretariatan sebesar 100 poin. Tercapainya '
                  'produksi semen beku Balai Inseminasi Buatan '
                  'Provinsi Kalimantan Selatan pada Tahun 2026.')
    apply_font(p)

    sub_h(doc, 'Benefit')
    p = body(doc, 'Benefit Balai Inseminasi Buatan adalah '
                  'tersedianya semen beku berkualitas, meningkatnya '
                  'angka kelahiran dan mutu genetik ternak, efisiensi '
                  'reproduksi, dukungan swasembada protein hewani, '
                  'serta peningkatan kesejahteraan peternak.')
    apply_font(p)

    sub_h(doc, 'Impact')
    p = body(doc, 'Impact atau Dampak Balai Inseminasi Buatan adalah '
                  'peningkatan populasi dan mutu genetik ternak, '
                  'peningkatan produktivitas dan pendapatan peternak, '
                  'serta mendukung swasembada protein hewani dan '
                  'pengembangan ekonomi daerah.')
    apply_font(p)

    doc.add_page_break()

    # ── BAB II ──────────────────────────────────────────────────────────────
    bab_h(doc, 'BAB II')
    bab_h(doc, 'PERENCANAAN KINERJA')

    sub_h(doc, 'Perjanjian Kinerja Balai Inseminasi Buatan Tahun 2026')
    p = body(doc, 'Perjanjian kinerja (PK) adalah lembar atau dokumen '
                  'yang berisikan penugasan dari pimpinan instansi yang '
                  'lebih tinggi kepada pimpinan yang lebih rendah secara '
                  'berjenjang untuk melaksanakan program atau kegiatan '
                  'yang disertai dengan indikator kinerja. Melalui '
                  'perjanjian kinerja terwujudlah komitmen penerima amanah '
                  'dalam kesepakatan antara penerima dan pemberi amanah '
                  'atas kinerja terukur, tertentu, berdasarkan tugas '
                  'fungsi dan wewenang serta sumber daya yang tersedia. '
                  'Kinerja yang disepakati tidak terbatas pada kinerja '
                  'yang dihasilkan atas kegiatan tahun bersangkutan, '
                  'tetapi termasuk kinerja (outcome) yang seharusnya '
                  'terwujud akibat kegiatan tahun-tahun sebelumnya.')
    apply_font(p)
    p = body(doc, 'Dengan demikian target kinerja yang diperjanjikan '
                  'juga mencakup outcome yang dihasilkan dari kegiatan '
                  'tahun-tahun sebelumnya, sehingga terwujud '
                  'kesinambungan setiap tahunnya. Adapun tujuan dari '
                  'penyusunan perjanjian kinerja adalah:')
    apply_font(p)

    for t in [
        'Sebagai wujud nyata komitmen antara penerima dan pemberi '
        'amanah untuk meningkatkan integritas, akuntabilitas, '
        'transparansi dari kinerja aparatur;',
        'Menetapkan tolak ukur kinerja sebagai dasar evaluasi '
        'kinerja aparatur;',
        'Sebagai dasar penilaian keberhasilan atau kegagalan '
        'pencapaian tujuan dan sasaran organisasi/unit organisasi '
        'dan sebagai dasar pemberian penghargaan dan sanksi;',
        'Sebagai dasar dalam penetapan sasaran kinerja pegawai.',
    ]:
        bullet(doc, t)

    spc(doc)
    p = body(doc, 'Tabel 1. Perjanjian Kinerja Balai Inseminasi Buatan '
                  'Dinas Perkebunan dan Peternakan Provinsi Kalimantan '
                  'Selatan')
    apply_font(p)
    spc(doc)

    make_table(doc,
        ['NO.', 'KINERJA UTAMA', 'INDIKATOR KINERJA UTAMA', 'TARGET'],
        [
            ['1', 'Meningkatnya Kualitas Pelayanan Publik',
             'Pemenuhan dokumen perencanaan dan pelaporan yang sesuai '
             'dengan ketentuan', '100 %'],
            ['', '', 'Pemenuhan dokumen keuangan dan aset yang tercatat', '100 %'],
            ['', '', 'Pemenuhan sarana dan prasarana yang dibutuhkan', '100 %'],
            ['2', 'Meningkatkan Produksi Sektor Perkebunan dan Peternakan',
             'Persentase benih ternak yang diproduksi sesuai dengan '
             'Standar Nasional Indonesia', '100 %'],
        ])

    spc(doc)
    p = body(doc, 'Kinerja utama tersebut didukung oleh Sub Bagian Tata '
                  'Usaha dan 2 (dua) Seksi yang ada di Balai Inseminasi '
                  'Buatan Provinsi Kalimantan Selatan.')
    apply_font(p)

    mini_h(doc, 'Sub Bagian Tata Usaha')
    p = body(doc, 'Sub Bagian Tata Usaha dengan Program Penunjang Urusan '
                  'Pemerintahan Daerah Provinsi, yang di dalamnya terdapat '
                  '7 (tujuh) Kegiatan dan 15 (lima belas) Sub Kegiatan.')
    apply_font(p)

    for k in [
        'Kegiatan Perencanaan, Penganggaran dan Evaluasi Kinerja Perangkat '
        'Daerah — Sub Kegiatan Evaluasi Kinerja Perangkat Daerah',
        'Kegiatan Administrasi Keuangan Perangkat Daerah — Sub Kegiatan '
        'Penyediaan Administrasi Pelaksanaan Tugas ASN',
        'Kegiatan Administrasi Keuangan Perangkat Daerah — Sub Kegiatan '
        'Pendidikan dan Pelatihan Pegawai Berdasarkan Tugas dan Fungsi',
        'Kegiatan Administrasi Umum Perangkat Daerah — Sub Kegiatan '
        'Penyediaan Komponen Instalasi Listrik/Penerangan Bangunan Kantor',
        'Kegiatan Administrasi Umum Perangkat Daerah — Sub Kegiatan '
        'Penyediaan Peralatan dan Perlengkapan Kantor',
        'Kegiatan Administrasi Umum Perangkat Daerah — Sub Kegiatan '
        'Penyediaan Bahan Logistik Kantor',
        'Kegiatan Administrasi Umum Perangkat Daerah — Sub Kegiatan '
        'Penyediaan Barang Cetakan dan Penggandaan',
        'Kegiatan Administrasi Umum Perangkat Daerah — Sub Kegiatan '
        'Penyediaan Bahan Bacaan dan Peraturan Perundang-undangan',
        'Kegiatan Administrasi Umum Perangkat Daerah — Sub Kegiatan '
        'Penyelenggaraan Rapat Koordinasi dan Konsultasi SKPD',
        'Kegiatan Pengadaan Barang Milik Daerah Penunjang Urusan '
        'Pemerintah Daerah — Sub Kegiatan Pengadaan Sarana dan Prasarana '
        'Gedung Kantor/Bangunan Lainnya',
        'Kegiatan Penyediaan Jasa Penunjang Urusan Pemerintahan Daerah — '
        'Sub Kegiatan Penyediaan Jasa Komunikasi, Sumber Daya Air dan Listrik',
        'Kegiatan Penyediaan Jasa Penunjang Urusan Pemerintahan Daerah — '
        'Sub Kegiatan Penyediaan Jasa Pelayanan Umum Kantor',
        'Kegiatan Pemeliharaan Barang Milik Daerah Penunjang Urusan '
        'Pemerintahan Daerah — Sub Kegiatan Penyediaan Jasa Pemeliharaan, '
        'Biaya Pemeliharaan, Pajak dan Perizinan Kendaraan Dinas '
        'Operasional atau Lapangan',
        'Kegiatan Pemeliharaan Barang Milik Daerah Penunjang Urusan '
        'Pemerintahan Daerah — Sub Kegiatan Pemeliharaan/Rehabilitasi '
        'Gedung Kantor atau Bangunan Lainnya',
        'Kegiatan Pemeliharaan Barang Milik Daerah Penunjang Urusan '
        'Pemerintahan Daerah — Sub Kegiatan Pemeliharaan/Rehabilitasi '
        'Sarana dan Prasarana Gedung Kantor atau Bangunan Lainnya',
    ]:
        bullet(doc, k)

    spc(doc)
    mini_h(doc, 'Seksi Pengkajian dan Pemeliharaan, Seksi Produksi dan Distribusi')
    p = body(doc, 'Seksi Pengkajian dan Pemeliharaan, Seksi Produksi dan '
                  'Distribusi dengan Program Penyediaan Pengembangan Sarana '
                  'Pertanian pada Kegiatan Pengendalian dan Pengawasan '
                  'Penyediaan dan Peredaran Benih/Bibit Ternak dan Tanaman '
                  'Pakan Ternak Serta Kewenangan Provinsi yang dijabarkan '
                  'dalam 1 (satu) Sub Kegiatan:')
    apply_font(p)
    bullet(doc, 'Sub Kegiatan Pengendalian Penyediaan dan Produksi '
                'Benih/Bibit Ternak dan Hijauan Pakan Ternak')

    doc.add_page_break()

    # ── BAB III ──────────────────────────────────────────────────────────────
    bab_h(doc, 'BAB III')
    bab_h(doc, 'AKUNTABILITAS KINERJA')

    sub_h(doc, 'Realisasi Kinerja Tahun 2026')
    p = body(doc, 'Balai Inseminasi Buatan Dinas Perkebunan dan Peternakan '
                  'Provinsi Kalimantan Selatan berkomitmen untuk meningkatkan '
                  'populasi ternak dengan capaian peningkatan produksi '
                  'peternakan dan peningkatan Indeks Kepuasan terhadap '
                  'layanan Kesekretariatan dengan capaian pada peningkatan '
                  'kualitas dokumen perencanaan dan laporan kinerja dan '
                  'keuangan yang sesuai dengan ketentuan, tertibnya '
                  'administrasi keuangan SKPD, peningkatan kapasitas dan '
                  'kualitas aparatur, peningkatan kualitas pelayanan '
                  'administrasi perkantoran, peningkatan sarana prasarana '
                  'aparatur.')
    apply_font(p)

    spc(doc)
    p = body(doc, 'Tabel 2. Capaian Indikator Kinerja Utama Kepala Balai '
                  'Inseminasi Buatan Triwulan ' + tw_romawi + ' Tahun 2026')
    apply_font(p)
    spc(doc)

    make_table(doc,
        ['NO.', 'KINERJA UTAMA', 'INDIKATOR KINERJA UTAMA', 'TARGET', 'REALISASI'],
        [
            ['1', 'Meningkatnya Kualitas Pelayanan Publik',
             'Pemenuhan dokumen perencanaan dan pelaporan yang sesuai '
             'dengan ketentuan', '100 %', iku1_target],
            ['', '', 'Pemenuhan dokumen keuangan dan aset yang tercatat', '100 %', iku1_target],
            ['', '', 'Pemenuhan sarana dan prasarana yang dibutuhkan', '100 %', iku1_target],
            ['2', 'Meningkatkan Produksi Sektor Perkebunan dan Peternakan',
             'Persentase benih ternak yang diproduksi sesuai dengan '
             'Standar Nasional Indonesia', '100 %', iku2_target],
        ])

    spc(doc)
    p = body(doc, 'Dari Tabel 2 dapat dijelaskan bahwa Subbag Tata Usaha '
                  'mempunyai Indikator Kinerja Utama dengan capaian realiseasi '
                  'Triwulan ' + tw_romawi + ' sebesar ' + iku1_target + ' dari '
                  'target tahunan 100%.')
    apply_font(p)
    p = body(doc, semen_rincian)
    apply_font(p)

    spc(doc)
    sub_h(doc, 'Perbandingan Realisasi Kinerja dengan Tahun Sebelumnya')
    p = body(doc, 'Perbandingan hasil pelaksanaan kinerja tahun sebelumnya '
                  'untuk seksi Pengkajian dan Pemeliharaan serta seksi '
                  'Produksi dan Distribusi adalah sebagai berikut:')
    apply_font(p)
    spc(doc)

    make_table(doc,
        ['NO.', 'KINERJA UTAMA', 'INDIKATOR KINERJA UTAMA',
         'Realisasi TW ' + tw_romawi + ' 2025 (%)', 'Realisasi TW ' + tw_romawi + ' 2026 (%)'],
        [
            ['1', 'Meningkatnya Kualitas Pelayanan Publik',
             'Pemenuhan dokumen perencanaan dan pelaporan yang sesuai '
             'dengan ketentuan', comparison_prev, comparison_curr],
            ['', '', 'Pemenuhan dokumen keuangan dan aset yang tercatat',
             comparison_prev, comparison_curr],
            ['', '', 'Pemenuhan sarana dan prasarana yang dibutuhkan',
             comparison_prev, comparison_curr],
            ['2', 'Meningkatkan Produksi Sektor Perkebunan dan Peternakan',
             'Persentase benih ternak yang diproduksi sesuai dengan '
             'Standar Nasional Indonesia',
             comparison_prev, iku2_target],
        ])

    spc(doc)
    p = body(doc, 'Tabel di atas menunjukkan perbandingan capaian indikator '
                  'kinerja utama tahun 2025 dan 2026 pada periode Triwulan ' +
                  tw_romawi + '. Capaian indikator produksi menunjukkan '
                  'adanya peningkatan yang необходимо diperhatikan для '
                  'meningkatkan kinerja pada triwulan接下来的nya.')
    apply_font(p)

    doc.add_page_break()

    sub_h(doc, 'Evaluasi dan Analisis Kinerja Triwulan ' + tw_romawi + ' Tahun 2026')

    mini_h(doc, 'A. Sub Bagian Tata Usaha')
    p = body(doc, 'Untuk mewujudkan keberhasilan sasaran strategis Sub '
                  'Bagian Tata Usaha pada Tahun 2026 diukur melalui 15 '
                  '(lima belas) Indikator Kinerja dengan uraian sebagai berikut:')
    apply_font(p)

    for judul, isi in [
        ('Jumlah dokumen evaluasi perangkat daerah yang disusun sesuai ketentuan',
         'Balai Inseminasi Buatan Provinsi Kalimantan Selatan membuat '
         'laporan E-Monev yang melaporkan evaluasi kinerja Balai Inseminasi '
         'Buatan selama 1 Bulan. Laporan ini dibuat berdasarkan realiseasi '
         'kegiatan dan keuangan yang telah dicapai oleh SKPD, dan disampaikan '
         'kepada Kepala Badan Perencanaan dan Pembangunan Daerah Provinsi '
         'Kalimantan Selatan setiap paling lambat tanggal 5 bulan berikutnya. '
         'Realisasi Indikator ini sebesar ' + iku1_target + ' sesuai dengan '
         'pemenuhan target sebanyak 3 Dokumen dari total 12 Dokumen.'),
        ('Pemenuhan dokumen administrasi keuangan SKPD',
         'Pada Indikator Pemenuhan dokumen administrasi keuangan SKPD '
         'realisasinya sebesar ' + iku1_target + ', hal ini sesuai dengan '
         'pemenuhan target sebanyak 3 Dokumen dari total 12 Dokumen.'),
        ('Pemenuhan sarana dan prasarana yang dibutuhkan',
         'Pada indikator kinerja utama ini realisasinya sebesar ' +
         iku1_target + ', kegiatan ini memastikan bahwa kebutuhan '
         'sarana dan prasana yang dibutuhkan di lingkungan BIB '
         'telah terakomodir untuk periode triwulan ' + tw_romawi + '.'),
        ('Jumlah paket komponen instalasi listrik/penerangan bangunan kantor '
         'yang disediakan',
         'Pada indikator kinerja utama ini realisasinya menyesuaikan '
         'kebutuhan, kegiatan ini memastikan bahwa kebutuhan penerangan '
         'kantor berupa lampu dan alat-alat kelistrikan lainnya telah '
         'terakomodir.'),
        ('Jumlah peralatan dan perlengkapan kantor berupa ATK, Kertas Cover, '
         'dan Materai',
         'Kegiatan yang berkaitan dengan indikator utama meliputi '
         'pemenuhan kebutuhan alat tulis kantor seperti kertas, '
         'ballpoint, tinta, dan materai selama periode berjalan. '
         'Capaian indikator ini menyesuaikan dengan realiseasi '
         'pembelian yang telah dilaksanakan.'),
        ('Lancarnya pelayanan jasa komunikasi, sumber daya air dan listrik',
         'Pada indikator kinerja utama ini realisasinya sebesar ' +
         iku1_target + ', kegiatan ini memastikan bahwa kebutuhan '
         'listrik, air, telepon dan internet telah terakomodir '
         'selama periode triwulan ' + tw_romawi + '.'),
        ('Kebutuhan perkantoran dan kebersihan kantor terpenuhi',
         'Indikator ini meliputi kegiatan pemenuhan kebutuhan pokok '
         'kantor untuk pegawai Balai Inseminasi Buatan yang berjumlah '
         '16 orang, selain itu juga terdapat penyediaan untuk '
         'pelaksanaan rapat rutin staf.'),
        ('Kendaraan dinas SKPD secara rutin terawat',
         'Pada indikator ini meliputi kegiatan pemeliharaan kendaraan '
         'dinas berupa kendaraan dinas roda 4 dan roda 2. Capaian '
         'dari indikator pemeliharaan kendaraan dinas menyesuaikan '
         'dengan realiseasi periode ini.'),
    ]:
        p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sb=6, sa=2)
        add_run(p, judul + ': ', bold=True)
        add_run(p, isi)
        apply_font(p)

    spc(doc)
    mini_h(doc, 'B. Seksi Pengkajian dan Pemeliharaan')
    p = body(doc, 'Untuk mewujudkan keberhasilan sasaran strategis '
                  'Balai Inseminasi Buatan pada Seksi Pengkajian dan '
                  'Pemeliharaan diukur melalui uraian kegiatan pemeliharaan '
                  'pejantan sebagai berikut:')
    apply_font(p)

    for k in [
        'Perawatan Pejantan (Bull) — Memandikan pejantan, sanitasi '
        'kandang dan lingkungan sekitar, penimbangan berat badan, '
        'pengukuran postur badan, pemotongan kuku, pemotongan '
        'bulu/rambut, pemberian exercise, desinfeksi kandang dan '
        'pejantan, penerapan biosecurity.',
        'Pengendalian Penyakit Pada Pejantan (Bull) — Pemenuhan '
        'syarat kesehatan pejantan unggul bebas dari 12 macam '
        'Penyakit Hewan Menular Strategis (PHMS), yang meliputi '
        'kegiatan pencegahan penyakit, pengobatan penyakit, dan '
        'pengendalian penyakit.',
        'Penyediaan Pakan dan Air Minum Ternak — Pemenuhan '
        'pakan hijauan (rumput), pakan konsentrat, pakan '
        'tambahan (feed supplement), dan air minum pejantan '
        'secara berkualitas dan kontinu.',
        'Pelayanan Teknis — Pengamatan akseptor dan pengamatan '
        'ternak hasil IB di lapangan, layanan praktik kerja '
        'lapangan (PKL)/magang di Balai, layanan pemeriksaan '
        'semen beku di lapangan.',
    ]:
        bullet(doc, k)

    spc(doc)
    mini_h(doc, 'C. Seksi Produksi dan Distribusi')
    p = body(doc, 'Pada Seksi Produksi dan Distribusi, target produksi '
                  'semen beku tahunan adalah 100.000 dosis. realiseasi '
                  'pada Triwulan ' + tw_romawi + ' Tahun 2026 adalah ' +
                  semen_dosis + ' dosis. Kegiatan produksi dan distribusi '
                  'mencakup proses pengumpulan semen segar dari pejantan '
                  'unggul, pengolahan, pembekuan dalam cairan nitrogen pada '
                  'suhu minus 196 derajat Celsius, penyimpanan, hingga '
                  'distribusi ke pengguna jasa di lapangan.')
    apply_font(p)
    p = body(doc, 'Faktor pendukung utama yang mempengaruhi capaian '
                  'produksi meliputi: (1) kesiapan dan kesehatan pejantan '
                  'unggul yang menjadi sumber semen; (2) kelayakan '
                  'sarana produksi seperti ruang koleksi, laboratorium, '
                  'dan penyimpanan cryogenic; (3) kompetensi dan dedikasi '
                  'tim teknisi inseminasi; dan (4) permintaan semen beku '
                  'dari peternak dan Dinas Kabupaten/Kota yang terus '
                  'meningkat melalui program Optimalisasi Reproduksi (OPRE). '
                  'Ke depan, tantangan utama adalah mempertahankan dan '
                  'meningkatkan kapasitas produksi untuk mencapai target '
                  '100.000 dosis pada akhir tahun.')
    apply_font(p)

    doc.add_page_break()

    # ── BAB IV ──────────────────────────────────────────────────────────────
    bab_h(doc, 'BAB IV')
    bab_h(doc, 'PENUTUP')

    sub_h(doc, 'Kesimpulan')
    for t in [
        'Laporan akhir kegiatan triwulan ' + tw_romawi + ' yang '
        'dilaksanakan Balai Inseminasi Buatan Provinsi Kalimantan '
        'Selatan ini disusun sebagai bentuk pertanggungjawaban atas '
        'pelaksanaan tugas selama periode triwulan ' + tw_romawi +
        ' Tahun Anggaran 2026. Seluruh program dan kegiatan yang '
        'direncanakan telah dilaksanakan dengan mengedepankan '
        'prinsip efisiensi, efektivitas, dan akuntabilitas, sesuai '
        'dengan visi dan misi Pemerintah Provinsi Kalimantan Selatan.',
        'Secara umum, capaian kinerja Balai Inseminasi Buatan '
        'menunjukkan hasil yang cukup dari segi kualitas pelaksanaan '
        'kegiatan maupun pencapaian indikator kinerja utama. Hal ini '
        'tidak terlepas dari koordinasi yang baik, pemanfaatan sumber '
        'daya secara optimal, serta dukungan seluruh pihak terkait. '
        'Realisasi produksi semen beku sebesar ' + semen_dosis +
        ' dosis menunjukkan bahwa kapasitas produksi berjalan '
        'dengan baik dan perlu dioptimalkan pada triwulan-triwulan '
        'berikutnya untuk mencapai target tahunan.',
        'Untuk periode berikutnya, BIB akan meningkatkan intensifikasi '
        'produksi semen beku, perluasan jangkauan layanan IB melalui '
        'program Optimalisasi Reproduksi (OPRE), dan pengetatan '
        'pengawasan kualitas melalui pengujian periodik untuk '
        'menjamin viabilitas post-thawing yang optimal bagi '
        'pengguna jasa.',
    ]:
        p = body(doc, t); apply_font(p)

    spc(doc, 2)
    sub_h(doc, 'Rencana Tindak Lanjut')
    for r in [
        'Meningkatkan koordinasi dengan Perangkat Daerah lintas '
        'sektoral dalam rangka meningkatkan kualitas perencanaan '
        'dan pelaksanaan program;',
        'Penguatan Monitoring dan Evaluasi: Sistem monitoring dan '
        'evaluasi perlu terus dikembangkan untuk memastikan '
        'seluruh kegiatan terlaksana sesuai dengan target yang '
        'ditetapkan;',
        'Optimalisasi Penggunaan Anggaran: Perlu dilakukan upaya '
        'lebih lanjut untuk memastikan setiap alokasi anggaran '
        'mendukung pencapaian program prioritas secara maksimal;',
        'Pengembangan Kompetensi SDM: Pelatihan dan pengembangan '
        'kapasitas SDM di bidang teknis dan administratif perlu '
        'ditingkatkan untuk memastikan kualitas kerja yang '
        'lebih baik;',
        'Pemanfaatan Teknologi Informasi: Memanfaatkan teknologi '
        'informasi dalam proses perencanaan, pelaksanaan, dan '
        'pelaporan agar lebih efektif, efisien, dan terintegrasi.',
    ]:
        bullet(doc, r)

    spc(doc, 2)
    sub_h(doc, 'Tanggapan Atasan Langsung')
    make_table(doc,
        ['NO.', 'TANGGAPAN', 'KETERANGAN'],
        [['1', 'Laporan kurang baik', '........................................................................'],
         ['2', 'Laporan sudah baik', '........................................................................'],
         ['3', 'Laporan diperbaiki', '........................................................................'],
         ['4', 'Realisasi diteliti ulang', '........................................................................'],
         ['5', 'Capaian diteliti ulang', '........................................................................'],
         ['6', 'Lain – lain', '........................................................................']])

    spc(doc, 3)
    p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sa=2)
    add_run(p, 'Demikian laporan akhir triwulan ' + tw_romawi +
               ' Balai Inseminasi Buatan Provinsi Kalimantan Selatan '
               'ini disusun. Kami berharap laporan ini dapat '
               'memberikan gambaran yang jelas mengenai pencapaian '
               'yang telah diraih, kendala yang dihadapi, serta '
               'langkah-langkah yang perlu diambil untuk perbaikan '
               'ke depan.')
    spc(doc, 2)
    for t in ['Mengetahui,', '', 'Kepala Dinas Perkebunan dan Peternakan,',
              '', '', 'Drh. Suparmi, M.S.', 'NIP. 196809111995032003']:
        p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sa=2)
        add_run(p, t)
    spc(doc, 3)
    p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sa=2)
    add_run(p, tgl_ttd)
    spc(doc)
    for t in ['Kepala UPT Balai Inseminasi Buatan,', '', '',
              'Drh. Sasongko Nugroho', 'NIP. 197905232008031002']:
        p = new_para(doc, align=WD_ALIGN_PARAGRAPH.LEFT, sa=2)
        add_run(p, t)

    doc.save(output_path)
    print(f'OK: {output_path}')
