
{"status":"success","data":"Berikut ini terjemahan kode api_programmer.php ke dalam teks deskriptif yang terstruktur, supaya bisa kamu simpan sebagai dokumen markdown pelatihan AI:\r\n\r\n\r\n---\r\n\r\nPenjelasan Kode api_programmer.php\r\n\r\nFungsi Umum\r\n\r\nFile api_programmer.php ini adalah API backend untuk layanan Chat AI Programmer. Fungsinya menerima pesan dari pengguna, memprosesnya dengan OpenAI Chat API, dan mengembalikan respons AI yang relevan.\r\n\r\nAlur Kerja Kode\r\n\r\nInisialisasi dan Header\r\n\r\nMemulai sesi PHP dengan session_start().\r\n\r\nMengatur header HTTP ke JSON UTF-8 untuk komunikasi data.\r\n\r\nMematikan laporan error PHP supaya output bersih.\r\n\r\n\r\n\r\nPemeriksaan Login\r\n\r\nMengambil user_id dari sesi.\r\n\r\nJika pengguna belum login (user_id kosong), API mengembalikan pesan error \"Anda belum login\".\r\n\r\n\r\n\r\nMembaca Input Pesan\r\n\r\nMembaca data JSON POST yang dikirim dari frontend.\r\n\r\nMengambil nilai pesan (message).\r\n\r\nJika pesan kosong, API mengembalikan error \"Pesan kosong\".\r\n\r\n\r\n\r\nFilter Konten Ilegal\r\n\r\nFungsi containsIllegalContent() memeriksa apakah pesan mengandung konten terlarang seperti pornografi, hacking, narkoba.\r\n\r\nJika ada konten terlarang, API mengembalikan error dan menolak permintaan.\r\n\r\n\r\n\r\nCek Saldo Token\r\n\r\nMengecek saldo token pengguna di database (ai_balance).\r\n\r\nMenghitung estimasi biaya berdasarkan panjang pesan (token).\r\n\r\nJika saldo tidak cukup, API mengembalikan error \"Saldo token Anda tidak cukup. Silakan top up.\"\r\n\r\n\r\n\r\nMembaca File Training Markdown\r\n\r\nMembaca isi file markdown pelatihan dari path ..\/..\/training_programmer\/programming.md.\r\n\r\nJika file tidak ditemukan, mengembalikan error \"File training programming tidak ditemukan\".\r\n\r\nJika gagal baca file, mengembalikan error \"Gagal membaca file training programming.\"\r\n\r\n\r\n\r\nMempersiapkan Prompt untuk AI\r\n\r\nMembuat system_prompt yang menginstruksikan AI agar menjawab dengan detail dan sesuai panduan dari isi markdown pelatihan.\r\n\r\n\r\n\r\nMemanggil OpenAI Chat API\r\n\r\nMengirimkan pesan sistem dan pesan user ke fungsi callOpenAIChat().\r\n\r\nMenangani error jika API gagal merespons.\r\n\r\n\r\n\r\nMenghitung Biaya Akhir dan Update Saldo\r\n\r\nMenghitung total token yang dipakai (input + output).\r\n\r\nMenghitung biaya akhir dan mengecek saldo.\r\n\r\nJika saldo kurang, kembalikan error.\r\n\r\nJika cukup, kurangi saldo token di database.\r\n\r\n\r\n\r\nMenyimpan Riwayat Chat\r\n\r\nMenyimpan pesan user dan respons AI ke tabel ai_chat_history untuk sesi saat ini.\r\n\r\n\r\n\r\nMengirimkan Respons JSON\r\n\r\nMengirimkan status sukses, respons AI, jumlah token yang dipakai, biaya, dan saldo tersisa ke frontend."}