docs(pry): remove hallucinated Zoho CRM from docs + stub crm_sync_zoho.py
AUDIT-2026-Q3.md §Hallucinated features flagged that FEATURES.md claimed
Zoho CRM sync but no code existed. The codebase now ships Salesforce,
HubSpot, Pipedrive, and Close.com in crm_sync.py — no Zoho.
This commit enforces doc-vs-code parity:
- Remove the Zoho row from FEATURES.md
- Strip '~~Zoho~~' from USAGE.md and ARCHITECTURE.md
- Move ROADMAP.md from '✅ Zoho CRM sync' to '⏸ deferred'
- Add crm_sync_zoho.py as a discoverable stub that raises
NotImplementedError and points at the audit doc for rationale
PRs welcome: implement Zoho support using the same shape as the other
CRM backends in crm_sync.py.
This commit is contained in:
parent
0125da76d0
commit
cf376ab3a8
5 changed files with 56 additions and 4 deletions
|
|
@ -121,7 +121,7 @@ All data stored under `~/.pry/`:
|
||||||
| `costing.py` | 266 | Costing | Per-operation cost tracking and analytics |
|
| `costing.py` | 266 | Costing | Per-operation cost tracking and analytics |
|
||||||
| `email_scraper.py` | 364 | Email | Email data extraction (Gmail, Outlook, raw email) |
|
| `email_scraper.py` | 364 | Email | Email data extraction (Gmail, Outlook, raw email) |
|
||||||
| `commerce_sync.py` | 191 | Commerce | WooCommerce/Shopify product sync |
|
| `commerce_sync.py` | 191 | Commerce | WooCommerce/Shopify product sync |
|
||||||
| `crm_sync.py` | 359 | CRM | Salesforce/HubSpot/Zoho CRM sync |
|
| `crm_sync.py` | 359 | CRM | Salesforce / HubSpot / Pipedrive / Close.com sync |
|
||||||
| `destinations.py` | 361 | Export | Data export — webhooks, Slack, S3, GCS, SFTP |
|
| `destinations.py` | 361 | Export | Data export — webhooks, Slack, S3, GCS, SFTP |
|
||||||
| `intelligence.py` | 287 | Intel | Competitive intelligence — snapshots, alerts, diff tracking |
|
| `intelligence.py` | 287 | Intel | Competitive intelligence — snapshots, alerts, diff tracking |
|
||||||
| `compliance.py` | 443 | Compliance | GDPR/CCPA compliance — sensitive data detection, consent |
|
| `compliance.py` | 443 | Compliance | GDPR/CCPA compliance — sensitive data detection, consent |
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,6 @@ last_updated: 2026-06-30
|
||||||
| Shopify app backend | `shopify-app/` | External | ✅ |
|
| Shopify app backend | `shopify-app/` | External | ✅ |
|
||||||
| Salesforce CRM sync | `crm_sync.py` | `POST /v1/crm/sync` | ✅ |
|
| Salesforce CRM sync | `crm_sync.py` | `POST /v1/crm/sync` | ✅ |
|
||||||
| HubSpot CRM sync | `crm_sync.py` | `POST /v1/crm/sync` | ✅ |
|
| HubSpot CRM sync | `crm_sync.py` | `POST /v1/crm/sync` | ✅ |
|
||||||
| ~~Zoho CRM sync~~ | ~~`crm_sync.py`~~ | ~~`POST /v1/crm/sync`~~ | ❌ not implemented (grep: 0 matches in code) |
|
|
||||||
|
|
||||||
## Pipelines
|
## Pipelines
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ Pry is a mature, feature-complete self-hosted web scraping platform. This roadma
|
||||||
- ✅ Shopify product sync (with Shopify app backend)
|
- ✅ Shopify product sync (with Shopify app backend)
|
||||||
- ✅ Salesforce CRM sync
|
- ✅ Salesforce CRM sync
|
||||||
- ✅ HubSpot CRM sync
|
- ✅ HubSpot CRM sync
|
||||||
- ✅ Zoho CRM sync
|
- ⏸ Zoho CRM sync — deferred (see AUDIT-2026-Q3.md §Hallucinated features)
|
||||||
|
|
||||||
### Compliance
|
### Compliance
|
||||||
- ✅ GDPR consent management
|
- ✅ GDPR consent management
|
||||||
|
|
|
||||||
2
USAGE.md
2
USAGE.md
|
|
@ -387,7 +387,7 @@ POST /v1/commerce/sync
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Salesforce / HubSpot / ~~Zoho~~
|
### Salesforce / HubSpot
|
||||||
|
|
||||||
```json
|
```json
|
||||||
POST /v1/crm/sync
|
POST /v1/crm/sync
|
||||||
|
|
|
||||||
53
crm_sync_zoho.py
Normal file
53
crm_sync_zoho.py
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
"""Pry — Zoho CRM sync (NOT IMPLEMENTED).
|
||||||
|
|
||||||
|
Stub kept so the module name is discoverable in code search and so the
|
||||||
|
doc-vs-code parity promised in AUDIT-2026-Q3.md §"Hallucinated features"
|
||||||
|
holds: the FEATURES.md row was removed; this stub is the proof that we
|
||||||
|
considered and deferred Zoho rather than silently shipping a half-baked
|
||||||
|
implementation.
|
||||||
|
|
||||||
|
If/when Zoho support is reintroduced, the real implementation will live
|
||||||
|
here. It should follow the same shape as the other CRM backends in
|
||||||
|
``crm_sync.py`` (sync_to_<platform>) and accept either an OAuth refresh
|
||||||
|
token or a long-lived API token via gopass-injected env vars.
|
||||||
|
|
||||||
|
To enable: implement sync_to_zoho() and remove the NotImplementedError.
|
||||||
|
Document the API endpoints, scopes, and field map in this module's
|
||||||
|
docstring before landing.
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Copyright (c) 2026 Rug Munch Media LLC
|
||||||
|
#
|
||||||
|
# Part of Pry — https://git.rugmunch.io/RugMunchMedia/pryscraper
|
||||||
|
# Licensed under MIT. See LICENSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
import httpx
|
||||||
|
|
||||||
|
ZOHO_API_BASE = "https://www.zohoapis.com/crm/v2"
|
||||||
|
|
||||||
|
|
||||||
|
async def sync_to_zoho(
|
||||||
|
objects: list[dict[str, Any]],
|
||||||
|
object_type: str = "Leads",
|
||||||
|
access_token: str = "",
|
||||||
|
api_domain: str = "https://www.zohoapis.com",
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
"""Sync scraped data to Zoho CRM.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
NotImplementedError: Zoho sync is deferred. See AUDIT-2026-Q3.md.
|
||||||
|
"""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"Zoho CRM sync is intentionally not implemented. "
|
||||||
|
"See AUDIT-2026-Q3.md §Hallucinated features for rationale. "
|
||||||
|
"PRs welcome: implement using Zoho CRM v2 REST API "
|
||||||
|
"(/crm/v2/{module} POST upsert) with OAuth2 refresh-token flow."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = ["sync_to_zoho", "ZOHO_API_BASE"]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue