["), 'qwen profile exists'); analysisConfigExpect(str_contains($configSource, "'openai' => ["), 'openai profile exists'); analysisConfigExpect( str_contains($configSource, "'prescription_ai.QWEN_API_KEY'") && str_contains($configSource, "'prescription_ai.OPENAI_API_KEY'"), 'both credentials come from server environment' ); analysisConfigExpect( !preg_match('/(?:sk-|app-)[A-Za-z0-9_-]{16,}/', $configSource), 'config source does not hard-code an API credential' ); $example = file_get_contents(dirname(__DIR__) . '/.env.prescription-ai.example'); analysisConfigExpect(is_string($example), 'safe environment example is readable'); analysisConfigExpect(str_contains($example, 'QWEN_API_KEY = "replace-on-server"'), 'qwen example is a placeholder'); analysisConfigExpect(str_contains($example, 'OPENAI_API_KEY = "replace-on-server"'), 'openai example is a placeholder'); analysisConfigExpect(!str_contains($example, 'chat2.zhenyangtang.com.cn'), 'example does not expose a real upstream host'); echo "Diagnosis AI analysis config: OK\n";