SISTEM

Changelog

Riwayat perubahan database, fitur, UI, dan pipeline — 20 entri terakhir

🐛 FIX#150 · 18 Apr 2026, 12.40
Fix 32 unit test drift (ISS-093/094/095)
tests/unit/python/test_schema_migration.pytests/unit/python/test_agent_db.pytests/unit/python/test_fakta_material_extractor.pytests/unit/python/test_tanggapan_bursa_extractor.pytests/unit/python/test_route_document.pytests/unit/python/test_manifest_parser.pytests/unit/python/test_rule_extractor.pyanalyzer/extractors/tanggapan_bursa.pyanalyzer/manifest_parser.pysrc/features/perubahan_kepemilikan/telegram.py
🐛 FIX#149 · 18 Apr 2026, 01.24
kepemilikan extractor capture klasifikasi saham non-Biasa (Saham dengan hak suara multiple / Preferen / Multiple Voting Shares)
analyzer/extractors/kepemilikan.py
🐛 FIX#148 · 17 Apr 2026, 14.27
SBN nama_seri di jatuh_tempo + pencatatan_awal (BEI & press-release) + ISS-085 Reksadana lampiran
analyzer/extractors/sbn.py
🐛 FIX#147 · 17 Apr 2026, 14.08
ISS-013 SBN BEI announcement pencatatan — parse tabel per-baris
Ganti return-skip di branch BEI announcement dengan _parse_bei_pencatatan_rows: anchor JENIS (REOPENING/PENCATATAN BARU), un-split kode lintas baris (SPNS0405202\\n6), un-wrap tanggal (15 November\\n2030), extract per-row: kode/jenis/emisi/total/tgl terbit/tgl jatuh tempo. Verified 2 doc fail sebelumnya sekarang ok (8+9 seri). Press-release + jatuh_tempo branch tidak kesentuh.
analyzer/extractors/sbn.py
↩ Cara revert
git checkout analyzer/extractors/sbn.py
🐛 FIX#146 · 17 Apr 2026, 13.55
ISS-013 SBN kupon + ISS-015 Reksadana doc_type + ISS-018 gap tool
SBN: tambah kupon_pct di seri+instruments (regex Tingkat Kupon). Reksadana: dual-write doc_type/doc_subtype (back-compat telegram+web), set ExtractionResult.doc_type. ISS-018: analyzer/scripts/registry_gap.py (CLI audit).
analyzer/extractors/sbn.pyanalyzer/extractors/reksadana.pyanalyzer/scripts/registry_gap.py
↩ Cara revert
git checkout analyzer/extractors/sbn.py analyzer/extractors/reksadana.py && rm analyzer/scripts/registry_gap.py
FITUR#145 · 17 Apr 2026, 10.39
Utils: extract_nilai_transaksi generik (Rp+unit, %saham, jumlah saham) — reusable lintas extractor
analyzer/extractors/utils.pyanalyzer/extractors/fakta_material.py
🐛 FIX#144 · 17 Apr 2026, 09.49
FM extractor: robust _extract_tanggal + form-empty success + kill bilingual merge
analyzer/extractors/fakta_material.pyanalyzer/extractors/utils.pyanalyzer/extractors/registry.py
🐛 FIX#143 · 17 Apr 2026, 06.33
Surat umum reflow numbered list (ISS-079)
Fix MMLP-like 2-kolom numbered Q&A render bosok di Telegram. _reflow_numbered_list merge nomor standalone, _join_wrapped_paragraphs join hard-wrap lines. Threshold ≥2 untuk avoid false positive. Capital-start preserved (letterhead safety).
analyzer/extractors/_mixins/general_surat.py
FITUR#142 · 17 Apr 2026, 00.34
GeneralSuratMixin fallback surat biasa (ISS-078)
Universal mixin fallback untuk PDF surat biasa (non-template). Capture isi surat mentah + render verbatim di Telegram. Compose ke TanggapanBursaExtractor sebagai path terakhir setelah FM cover gagal. Strip: PDF metadata, form header, letterhead, footer signature. Audit tag: SuratUmumFallback:<primary>.
analyzer/extractors/_mixins/general_surat.pyanalyzer/extractors/tanggapan_bursa.pyanalyzer/telegram_sender.pyanalyzer/extractors/registry.py
🐛 FIX#141 · 16 Apr 2026, 22.49
Flip quality_status Tanggapan Bursa → oke
UPDATE analyzer_extractor_registry SET quality_status='oke' WHERE kategori='Tanggapan Bursa' AND parent_kategori IS NULL. ISS-074 rescue test passed (APIC volatilitas recovery via downloads.title).
db/sharedbrain.db
🐛 FIX#140 · 16 Apr 2026, 22.49
Komite Audit + Manajemen output fix (ISS-076)
Drop skip-guard reappointment, capture semua baris tabel, tanggal efektif pindah ke header (structured_data.tanggal_efektif top-level). Multi-line name handler (PANR case: 'Agus Ariandy' + 'Sijoatmodjo' wrap). Status-driven renderer: Diangkat kembali / menggantikan / Pengangkatan / Pemberhentian.
analyzer/extractors/manajemen.pyanalyzer/telegram_sender.py
FITUR#139 · 16 Apr 2026, 17.59
TanggapanBursa rescue + KomiteAudit + FM cover prefer (ISS-074/075)
Pattern baru: TanggapanBursa lookup downloads.title kalau caller pass title tidak match whitelist (54% rescue potential). KomiteAuditExtractor untuk PANR/AVIA dengan label jabatan yang benar. ManajemenExtractor prefer FM cover untuk dokumen skeleton. Audit tag: TanggapanBursa:title_rescued / title_unresolvable / KomiteAuditExtractor.
analyzer/extractors/tanggapan_bursa.pyanalyzer/extractors/manajemen.pyanalyzer/extractors/registry.pyanalyzer/extractors/_mixins/fm_cover.py
FITUR#138 · 16 Apr 2026, 17.12
FMCoverMixin fallback (ISS-069/070/071)
Mixin fallback untuk cover Fakta Material skeleton. 3-marker detector + body<1800 gate + confidence=0.75 boundary. Risalah RUPS port byte-identical. Tanggapan Bursa + Perubahan Manajemen sekarang recover dari FM cover sebelum jatuh ke AI fallback.
analyzer/extractors/_mixins/fm_cover.pyanalyzer/extractors/risalah_rups.pyanalyzer/extractors/tanggapan_bursa.pyanalyzer/extractors/manajemen.pyanalyzer/extractors/registry.pyanalyzer/telegram_sender.py
FITUR#137 · 16 Apr 2026, 16.51
Backfill reviews.perihal dari PDF body (source of truth)
analyzer/extractors/_mixins/common_form.pyscripts/backfill/perihal.py
FITUR#136 · 16 Apr 2026, 15.31
RUPS/RUPSLB pemanggilan: tambah Tanggal DPS (Recording Date)
analyzer/extractors/rups.pyanalyzer/telegram_sender.py
🐛 FIX#135 · 16 Apr 2026, 15.24
Fix RUPS extractor + Bukti Iklan skip + Telegram sub-type + opt-in announce
5 fixes: (1) RUPS agenda stop-regex drop pemberian/penerima kuasa — kills valid 'Pemberian kuasa kepada Dewan Komisaris' agenda item. (2) Enable Panggilan RUPSLB di registry (sebelumnya tidak_jalan padahal RUPSLBExtractor inherits RUPSExtractor dan conf=1.0). (3) Exempt Bukti Iklan RUPS dari blanket _BUKTI_IKLAN_RE skip — di kategori itu bukti iklan adalah konten valid. (4) Tampilkan doc_type sebagai italic tag setelah jenis di Telegram header (·pemanggilan/·pengumuman/·koreksi/·bukti_iklan). (5) Tambah --announce flag, header+summary jadi opt-in (default off) supaya tracing teletest tidak ramai noise.
analyzer/extractors/rups.pyscripts/backfill/rule_based.pyanalyzer/telegram_sender.pydb/sharedbrain.db
🐛 FIX#134 · 16 Apr 2026, 14.59
Fix --doc-type filter fallback ke structured_data.doc_type
Beberapa extractor (RUPS, Buyback, Dividen, dll) hanya set structured_data['doc_type'] tanpa populate ExtractionResult.doc_type. Filter di scripts/backfill/rule_based.py hanya baca result.doc_type → semua group skip dengan label 'no file' (misleading). Fix: fallback baca dari structured_data.get('doc_type', '').
scripts/backfill/rule_based.py
🗃 SCHEMA#133 · 16 Apr 2026, 13.16
Add reviews.perihal (merged 2-source authoritative)
Migration 0015 adds perihal column + index. Populated via merge_perihal() dari downloads.title + filename segment. Auto-populate di upsert_reviews_batch. Backfill 5806 rows, 132 empty (non-standard filename).
orchestrator/db/shared/migrations/0015_add_reviews_perihal.sqlorchestrator/db/schema.pyorchestrator/db/shared/schema.sqlorchestrator/db/reviews.pyanalyzer/extractors/utils.pyscripts/backfill/rule_based.pyscripts/backfill/perihal.pyscripts/backfill/__main__.py
🐛 FIX#132 · 16 Apr 2026, 10.55
Fakta Material: skip _lamp* files + widen uraian stop-pattern (WSBP bleed fix)
analyzer/main.pyanalyzer/extractors/fakta_material.py
🗃 SCHEMA#131 · 16 Apr 2026, 10.46
extraction_log routing tracking (0013)
Tambah kolom folder_kategori, title, filename, extractor_used ke extraction_log untuk lacak routing gaps dan extractor fallback pattern
orchestrator/db/shared/migrations/0013_extraction_log_routing.sqlorchestrator/db/shared/schema.sqlorchestrator/db/agent.pyanalyzer/extractors/registry.pyanalyzer/main.pyanalyzer/scripts/teletest.py