Skip to content

fix: address peqy review of v1.2.0 (v1.2.1) - #9

Merged
jschfflr merged 2 commits into
mainfrom
fix/peqy-review-followups
Jul 8, 2026
Merged

fix: address peqy review of v1.2.0 (v1.2.1)#9
jschfflr merged 2 commits into
mainfrom
fix/peqy-review-followups

Conversation

@jschfflr

@jschfflr jschfflr commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Follow-ups from the automated review of #8 (v1.2.0).

Correctness

  • deals set-role never sends an explicit null role type (review Q on deals.py:151). Adding a contact without --role-type now omits opportunity_contact_role_type_id entirely instead of posting null (which Apollo may reject). Existing roles stored without a type are likewise sent without the key.
  • people search no longer drops results (people.py:56). When Apollo returns both people and contacts, both are shown — previously only the first non-empty list survived.

Robustness / polish

  • Conversation detail view handles raw dicts (conversations.py:49). Participants/deals/summary/transcript now read via a dict-or-model helper, so they render whether conversations get yields models or dicts.
  • Bounded --stage-name errors (util.py:23). Unknown names list at most 15 available names (… (+N more)).

Documented, not changed

  • conversations --queryq_keywords (review Q on conversations.py:20). The conversations/search endpoint is undocumented and I couldn't confirm keyword filtering server-side (the transcripts only ever paginated it). q_keywords is Apollo's universal keyword param, so it's the best default; added a code comment + CHANGELOG note flagging it as unverified. Needs a live smoke test with a real key to confirm.

Verification

ruff check ✓ · ruff format --check ✓ · mypy ✓ · pytest 78 passed ✓

Depends only on the already-released qodev-apollo-api>=0.3.0; CI here is independent of apollo-api#12.

🤖 Generated with Claude Code

- deals set-role: never POST an explicit null role type — omit
  opportunity_contact_role_type_id when unset (Apollo may reject null).
- people search: merge `people` + `contacts` result lists instead of
  keeping only the first non-empty one (no silent drop).
- conversations detail formatter: read fields via a dict-or-model helper
  so the rich sections render for raw dicts too, not only models.
- resolve_stage_id: cap the "Available:" list at 15 names (+N more) so a
  large stage list can't produce a huge error message.
- Document that conversations `--query` -> q_keywords is unverified for
  the (undocumented) conversations/search endpoint.

Tests added for each. Bumps to 1.2.1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
peqy[bot]
peqy Bot approved these changes Jul 8, 2026

@peqy peqy Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. The follow-ups address the prior review concerns cleanly (omit opportunity_contact_role_type_id instead of sending null, merge people + contacts results, and make conversation detail rendering robust to dicts), with solid test coverage. Ship it.

apollo-api 0.3.1 typed update_opportunity_roles' payload as
list[RoleAssignment]; set-role builds entries dynamically (conditional
keys + pop) so they're plain dicts — cast at the boundary and require
qodev-apollo-api>=0.3.1. (Local mypy had missed this against a 0.3.0 venv.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jschfflr
jschfflr merged commit ee7fa6a into main Jul 8, 2026
4 checks passed
@jschfflr
jschfflr deleted the fix/peqy-review-followups branch July 8, 2026 13:02
peqy[bot]
peqy Bot approved these changes Jul 8, 2026

@peqy peqy Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. The follow-ups match the description (no explicit null role type, merged people/contacts, conversation detail robust to dicts, bounded stage-name errors) and the added tests cover the regressions. Ship it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant