Manual property enhancements: MLS status sync, agent clone, description formatting
- Manual properties linked to MLS now inherit status (Active/Pending/Closed) and days_on_market from the MLS listing dynamically - Properties not in MLS default to Closed status - Clone feature now auto-populates listing agent by matching MLS ID to Agent CPT - Description formatter detects embedded headers (unpunctuated text after sentences) and splits them into separate paragraphs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -191,24 +191,62 @@ class MLS_CLI {
|
||||
private function show_rate_limits() {
|
||||
$rate_limiter = $this->plugin->get_rate_limiter();
|
||||
$status = $rate_limiter->get_status();
|
||||
$summary = $rate_limiter->get_usage_summary();
|
||||
|
||||
WP_CLI::line('=== Rate Limits ===');
|
||||
WP_CLI::line('=== MLS Grid Rate Limits ===');
|
||||
WP_CLI::line('');
|
||||
|
||||
// Requests
|
||||
WP_CLI::line('Requests:');
|
||||
WP_CLI::line(sprintf(
|
||||
'Hourly: %d / %d requests (%d remaining)',
|
||||
$status['hourly']['used'],
|
||||
$status['hourly']['limit'],
|
||||
$status['hourly']['remaining']
|
||||
' Hourly: %s / %s (%s%%)',
|
||||
number_format($status['hourly']['used']),
|
||||
number_format($status['hourly']['limit']),
|
||||
$summary['requests_hourly_pct']
|
||||
));
|
||||
WP_CLI::line(sprintf(
|
||||
'Daily: %d / %d requests (%d remaining)',
|
||||
$status['daily']['used'],
|
||||
$status['daily']['limit'],
|
||||
$status['daily']['remaining']
|
||||
' Daily: %s / %s (%s%%)',
|
||||
number_format($status['daily']['used']),
|
||||
number_format($status['daily']['limit']),
|
||||
$summary['requests_daily_pct']
|
||||
));
|
||||
WP_CLI::line('');
|
||||
|
||||
// Data transfer
|
||||
WP_CLI::line('Data Transfer:');
|
||||
WP_CLI::line(sprintf(
|
||||
' Hourly: %s / %s (%s%%)',
|
||||
size_format($status['data_hourly']['used']),
|
||||
size_format($status['data_hourly']['limit']),
|
||||
$summary['data_hourly_pct']
|
||||
));
|
||||
WP_CLI::line(sprintf(
|
||||
'Data: %s / 4GB this hour',
|
||||
size_format($status['bytes_this_hour'])
|
||||
' Daily: %s / %s (%s%%)',
|
||||
size_format($status['data_daily']['used']),
|
||||
size_format($status['data_daily']['limit']),
|
||||
$summary['data_daily_pct']
|
||||
));
|
||||
WP_CLI::line(sprintf(
|
||||
' Remaining today: %s GB',
|
||||
$summary['data_daily_remaining_gb']
|
||||
));
|
||||
WP_CLI::line('');
|
||||
|
||||
// Warnings
|
||||
if ($rate_limiter->is_approaching_limit(0.7)) {
|
||||
WP_CLI::warning('Approaching rate limits (>70% used)');
|
||||
}
|
||||
if ($rate_limiter->is_approaching_limit(0.9)) {
|
||||
WP_CLI::error('Critical: Near rate limit threshold (>90% used)', false);
|
||||
}
|
||||
|
||||
// Sync pacing info
|
||||
WP_CLI::line('Sync Pacing:');
|
||||
WP_CLI::line(sprintf(
|
||||
' Min interval: %s seconds between API requests',
|
||||
number_format(MLS_Rate_Limiter::SYNC_MIN_INTERVAL_MS / 1000, 2)
|
||||
));
|
||||
WP_CLI::line(' (Ensures max 50%% of daily quota used even if sync runs 24h)');
|
||||
WP_CLI::line('');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user