Package Exports
- sakti-parser-fa
- sakti-parser-fa/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sakti-parser-fa) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Sakti Parser FA
Library TypeScript untuk memproses data Laporan Ketersediaan Dana (FA) dari aplikasi Sakti Kementerian Keuangan Republik Indonesia. Mengkonversi file Excel yang tidak terstruktur menjadi data JSON atau CSV yang terorganisir dengan struktur hierarki anggaran yang tepat.
๐ฏ Deskripsi
Library ini dirancang khusus untuk mem-parsing file Excel laporan FA (Financial Availability) dari sistem Sakti (Sistem Aplikasi Keuangan Tingkat Instansi) Kementerian Keuangan RI. Sistem Sakti menggunakan struktur hierarki anggaran 11 level yang kompleks, dan library ini secara otomatis mengekstrak, memvalidasi, dan mengorganisir data tersebut.
๐๏ธ Struktur Hierarki Anggaran Sakti
Level 1: Kementerian (145 - KEMENTERIAN KEUANGAN)
โโโ Level 2: Unit (06 - SEKRETARIAT JENDERAL)
โ โโโ Level 3: Satuan Kerja (123456 - BIRO KEUANGAN)
โ โ โโโ Level 4: Program (GM - PROGRAM DUKUNGAN MANAJEMEN)
โ โ โ โโโ Level 5: Kegiatan (7717 - DUKUNGAN MANAJEMEN KEMENTERIAN)
โ โ โ โ โโโ Level 6: Output (CBJ - LAYANAN DUKUNGAN MANAJEMEN)
โ โ โ โ โ โโโ Level 7: Sub Output (001 - KOORDINASI DAN SINKRONISASI)
โ โ โ โ โ โ โโโ Level 8: Komponen (101 - GAJI DAN TUNJANGAN)
โ โ โ โ โ โ โ โโโ Level 9: Sub Komponen (0D - BELANJA PEGAWAI)
โ โ โ โ โ โ โ โ โโโ Level 10: Akun (536111 - GAJI POKOK PNS)
โ โ โ โ โ โ โ โ โ โโโ Level 11: Detail (000052 - BELANJA GAJI POKOK)โจ Fitur Utama
- ๐ Parsing Otomatis - Ekstraksi metadata dan data anggaran dari Excel FA
- ๐๏ธ Struktur Hierarki - Membangun hierarki anggaran 11 level sesuai standar Sakti
- ๐ Multi Format Output - Mendukung Object, JSON, dan CSV
- โ Validasi Data - Otomatis validasi dan cleaning data
- ๐งฎ Agregasi Anggaran - Perhitungan agregasi nilai anggaran secara hierarki
- ๐ Type Safety - Full TypeScript support dengan type definitions
- ๐ Bahasa Indonesia - Mendukung parsing tanggal dan teks Indonesia
- โก Performance - Optimized untuk file Excel besar
๐ฆ Instalasi
npm install sakti-parser-fa๐ Penggunaan Cepat
Parsing Dasar
import { SaktiParser } from 'sakti-parser-fa';
// Buat instance parser
const parser = new SaktiParser();
// Parse file Excel FA dengan struktur hierarki lengkap
const result = await parser.parseStructuredData('laporan-fa-juli-2025.xlsx');
// Akses metadata
console.log('Kementerian:', result.metadata.kementerian_nama);
console.log('Periode:', result.metadata.periode_text);
console.log('Satuan Kerja:', result.metadata.satuan_kerja_nama);
// Akses data anggaran
result.data.forEach(item => {
console.log(`Level ${item._level}: ${item.uraian}`);
console.log(`Pagu: Rp ${item.pagu.toLocaleString('id-ID')}`);
console.log(`Realisasi: ${(item.realisasi_persen * 100).toFixed(2)}%`);
});Export ke Format Lain
// Export ke CSV
const parser = new SaktiParser({
outputFormat: 'csv',
csvOptions: {
delimiter: ';',
header: true
}
});
const csvResult = await parser.parseAndFormat('laporan-fa.xlsx');
console.log(csvResult.content.data); // String CSV
// Export ke JSON
const jsonParser = new SaktiParser({ outputFormat: 'json' });
const jsonResult = await jsonParser.parseAndFormat('laporan-fa.xlsx');
console.log(jsonResult.content); // JSON stringAnalisis Data
const result = await parser.parseStructuredData('laporan-fa.xlsx');
// Filter program utama (level 4)
const programs = result.data.filter(item => item._level === 4);
// Hitung total anggaran
const totalBudget = result.data
.filter(item => item._level === 11) // Level detail
.reduce((sum, item) => sum + item.pagu, 0);
// Analisis realisasi
const lowRealization = result.data.filter(item =>
item._level === 11 &&
item.pagu > 100000000 && // > 100 juta
item.realisasi_persen < 0.2 // < 20%
);
console.log(`Total Anggaran: Rp ${totalBudget.toLocaleString('id-ID')}`);
console.log(`Program dengan realisasi rendah: ${lowRealization.length}`);๐ Format Data
Input: File Excel FA
Library mengharapkan file Excel dengan struktur:
- Baris 1: Judul laporan
- Baris 3: Periode (contoh: "Periode Juli 2025")
- Baris 4-6: Metadata kementerian, unit, satuan kerja
- Baris 10+: Data anggaran hierarki
Output: Data Terstruktur
interface ParseResult {
metadata: {
judul: string;
periode_text: string;
periode_bulan: number;
periode_tahun: number;
kementerian_kode: string;
kementerian_nama: string;
unit_kode: string;
unit_nama: string;
satuan_kerja_kode: string;
satuan_kerja_nama: string;
};
data: Array<{
_level: number; // Level hierarki (1-11)
_parent: string; // Mata anggaran parent
mata_anggaran: string; // Kode mata anggaran lengkap
kode: string; // Kode item
uraian: string; // Deskripsi
pagu: number; // Anggaran (Rupiah)
pagu_terkunci: number; // Anggaran terkunci
realisasi_sebelum: number; // Realisasi periode sebelumnya
realisasi_periode: number; // Realisasi periode ini
realisasi_kumulatif: number; // Total realisasi
realisasi_persen: number; // Persentase realisasi (0.0-1.0)
sisa_anggaran: number; // Sisa anggaran
}>;
}๐ง Konfigurasi
const parser = new SaktiParser({
outputFormat: 'csv', // 'object' | 'json' | 'csv'
csvOptions: {
delimiter: ';', // Pemisah kolom
header: true, // Include header
quoted: true // Quote semua field
},
jsonOptions: {
flat: true // Array flat vs nested object
}
});๐ Dokumentasi
- ๐ Panduan Cepat - Tutorial step-by-step
- ๐ API Reference - Dokumentasi lengkap API
- ๐ก Contoh Penggunaan - 12+ contoh real-world
- ๐ Format Data - Struktur input dan output
- ๐ง Troubleshooting - Pemecahan masalah
- ๐ค Contributing - Panduan kontribusi
๐งช Testing
# Jalankan semua test
npm test
# Test dengan coverage
npm run test:coverage
# Watch mode untuk development
npm run test:watchCoverage: 85%+ dengan 28 test cases mencakup edge cases dan error handling.
๐ ๏ธ Development
# Clone repository
git clone https://github.com/username/sakti-parser-fa.git
cd sakti-parser-fa
# Install dependencies
npm ci
# Build library
npm run build
# Format code
npm run format
# Lint code
npm run lint
# Check semua (lint + build)
npm run checkโ๏ธ Requirements
- Node.js >= 18.0.0
- npm >= 8.0.0
๐ Changelog
Lihat CHANGELOG.md untuk riwayat perubahan lengkap.
Versi Terbaru: 0.6.1
- โ Dokumentasi lengkap dalam Bahasa Indonesia
- โ README.md professional dengan visual hierarki Sakti
- โ 12+ contoh penggunaan real-world
- โ API reference dan troubleshooting guide
- โ Panduan kontribusi untuk developer
๐ค Contributing
Kami sangat menghargai kontribusi! Silakan baca panduan kontribusi untuk detail lengkap.
Quick Start Contributing:
- Fork repository
- Buat branch:
git checkout -b feature/nama-fitur - Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/nama-fitur - Submit pull request
๐ License
MIT License - lihat LICENSE untuk detail lengkap.
๐ท๏ธ Keywords
sakti kementerian-keuangan anggaran excel-parser typescript indonesia government budget financial-data hierarchical-data
๐ Support
Butuh bantuan?
- ๐ Cek dokumentasi di folder docs
- ๐ Search issues di GitHub Issues
- ๐ฌ Diskusi di GitHub Discussions
- ๐ Laporkan bug dengan template yang disediakan
๐ Stats
- โญ GitHub Stars:
- ๐ฆ NPM Downloads:
- ๐ง TypeScript: 100%
- ๐งช Test Coverage: 85%+
- ๐ Documentation: Bahasa Indonesia
Dibuat dengan โค๏ธ untuk komunitas developer Indonesia
Website โข Documentation โข Examples โข API Reference