'use strict';

/**
 * LLM 전용 PCODE 캐싱 유틸.
 * llm_accesskey 우선, 없으면 accesskey, 둘 다 실패 시 SecurityMaster.PCODE fallback.
 * 한 프로세스에서 1회만 파싱 후 캐싱 (PCODE는 license에 종속되어 변하지 않음).
 */

const conf = require('../conf/configure');
const License = require('../conf/license');
const SecurityMaster = require('../net/security-master');

let _cached = null;

function getLlmPcode() {
    if (_cached != null) return _cached;
    const lic = conf.getProperty('llm_accesskey', '') || conf.getProperty('accesskey', '');
    if (lic) {
        try {
            const key = License.getKey(lic);
            if (key && key.pcode) {
                _cached = key.pcode;
                return _cached;
            }
        } catch (e) {}
    }
    return SecurityMaster.PCODE || 0;
}

/** test/디버그용 reset */
function _reset() { _cached = null; }

module.exports = { getLlmPcode, _reset };
