-- Jalankan SEKALI, setelah kantor_ai_schema.sql dan migrasi_status.sql.
-- Tujuan: biaya panggilan AI yang tidak menempel ke satu tugas (misalnya biaya perencana)
-- tetap tercatat di log, dan tetap masuk laporan biaya per klien.

ALTER TABLE log_aktivitas DROP FOREIGN KEY fk_log_tugas;

ALTER TABLE log_aktivitas
  MODIFY tugas_id INT UNSIGNED NULL,
  ADD COLUMN klien_id INT UNSIGNED NULL AFTER tugas_id,
  ADD KEY idx_log_klien (klien_id);

ALTER TABLE log_aktivitas
  ADD CONSTRAINT fk_log_tugas FOREIGN KEY (tugas_id) REFERENCES tugas(id),
  ADD CONSTRAINT fk_log_klien FOREIGN KEY (klien_id) REFERENCES klien(id);

CREATE OR REPLACE VIEW v_biaya_bulanan AS
SELECT
  DATE_FORMAT(l.dibuat, '%Y-%m') AS bulan,
  k.nama AS klien,
  COUNT(DISTINCT t.id) AS jumlah_tugas,
  SUM(l.token_input) AS total_token_input,
  SUM(l.token_output) AS total_token_output,
  SUM(l.biaya_usd) AS total_biaya_usd
FROM log_aktivitas l
LEFT JOIN tugas t ON t.id = l.tugas_id
JOIN klien k ON k.id = COALESCE(t.klien_id, l.klien_id)
GROUP BY bulan, k.id, k.nama;
