Repository navigation
feat(opportunity): the 立项 gate leaves Will Bid open — it holds only a stage change and a new won/lost request (#2004) - #2006
Merged
objectstack-fleet[bot] merged 1 commit intoOct 3, 2026
Conversation
…stage change and a new won/lost request REQ-0006 step 8 has the rep fill 是否投标 as input to 立项, for the approver to read. Holding Will Bid until approval had the approver decide without it. Step 11's 投标 is the act of bidding, which HotCRM does not model. - opportunity_lifecycle: the will_bid term leaves the 立项 branch; the comment says why, and the refusal sentence names only what was held. - The gate test: Will Bid is allowed while pending and while rejected; the matrix's bid-decision column reads ok in every row; every other row is unchanged. - Docs (qualification and automation pages, 3 locales), the flow's description, and the unreleased 1995 changeset say the same; a patch changeset. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ER8ntXZhYebyQ66aXWdjfT
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #2004
Clause-②: no. This is app metadata; it touches no published schema and no accept set.
The maintainer's ruling on this card (「决裁的三张同意」, option B): REQ-0006 step 8 has the rep fill 是否投标 (Will Bid) as input to 立项, which the approver reads. So the 立项 gate no longer holds
will_bid. While 立项 is pending or rejected, it still refuses exactly two user acts: a stage change (a direct close included) and a newrequested_status. This follows up the step-11 gate from #1995 / PR #1996.What changed
src/sales/objects/opportunity.hook.ts, the 立项 branch only.will_bidterm is gone.test/opportunity-qualification-approval-gate.test.ts.HELD_ACTSdrops its twowill_bidrows. The three remaining rows (stage move, direct close, won/lost request) are unchanged.RELEASED_ACTS: recording Will Bid as yes, as no, and changing it. Each is ALLOWED on a deal awaiting 立项 and on a deal refused 立项, so 6 cases.RECORD_LOCKED/ 409, and the sentence names Stage, not Will Bid.bid decisioncolumn flips from立项tookin the three rows where 立项 is pending or rejected. Every other cell and every other row is unchanged.src/sales/flows/opportunity-qualification-approval.flow.ts. The flow'sdescriptionis served to the admin automation list (checked on the boot below). It and the docstring no longer name the bid decision as held, and thelockRecordcomment counts two acts..changeset/2004-will-bid-before-qualification.md..changeset/1995-qualification-approval-gate.mdis still unreleased:CHANGELOG.mdtops out at 3.1.0. Two of its sentences said Will Bid is held, so they are edited. Without that edit, the release that ships the gate would describe it wrongly.Verification
pnpm verify.OS_VERIFY_LOCK_SLOT=hotcrm-issue-2004 bash scripts/pm/os-verify-lock.sh -c 'git rev-parse --short HEAD && pnpm verify'printed47809fbaandos-verify-lock: VERDICT command-exit 0.Validation passed· lint1 warning(s), 18 suggestion(s)(as on feat(opportunity): the 立项 (qualification) approval gate, off by default (REQ-0006 step 11) #1996) ·0 i18n/missing-* issues·source hygiene clean·source token ratchet clean·Build complete·Test Files 177 passed (177),Tests 3797 passed | 1 skipped (3798).Tests 50 passed (50).Ablations
ablation-replace.mjsin wrap mode. Each anchor went from x1 to x0, the blob changed, and the marker was counted on disk inside the run.c759d1de) andgit diff HEADis empty.src/directly, so no build ordist/leg applies.will_bidtermrejectedfrom the conditionRequested StatuspushThe first attempt at the re-insert ablation was refused by the tool before anything ran, because the replacement contained its own anchor. The anchor was re-spelled and the run above followed.
Boots (fresh 17.6.0, port 4822,
NODE_ENV=development, a fresh database each)47809fba.defaultValue, and the optiondefault) was flipped topendingthroughablation-replace --hold, then built to a scratch path.git diff HEADis empty.qualification_approval_status.defaultValuewaspending, all 43 fields were present, and the flowdescriptionwas the new text.pending.will_bidtrue → 200, then false → 200.RECORD_LOCKED: This deal needs qualification approval first: tick Request Qualification Approval. Stage can change once it is approved.requested_status→ 409 (… Requested Status can change once it is approved.). A direct close → 409.prospecting.flow:opportunity_qualification_approvalrequest.will_bidsaved 200 while it was open./api/v1/approvals/requests/{id}/approve, the verdict becameapproved.will_bid, a stage move,requested_statusand a direct close each answered 200./reject, the verdict becamerejectedand the request was unticked.will_bidsaved 200 (storedtrue). A stage move andrequested_statuseach got 409, and the stage stayedprospecting.main.not_required.main94668373was built and booted the same way.not_required. Will Bid, a stage move,requested_statusand a direct close each answer 200, and 0 approval requests exist. The last write is refused only by the closed-deal freeze, on both.Token ratchet (
src/sales)main9466837No ceiling was touched.
Outside the claim's file surface
The claim lists the hook, the gate test, the qualification page and one
2004changeset. This PR also touches the files below. Each one stated that Will Bid is held, and this change made that false. The dispatch names "any admin tip that names Will Bid as held" in scope.descriptionand comments.Acceptance notes
qualification_approval_statusinopportunity.object.tssays "a stage move, Will Bid and a direct close work exactly as they do without it" while the gate is off. That is still true, so it is not edited, being outside the claim.main: each of the three boots logged the same 23[SeedLoader]failures. Twocrm_campaignrows were refused with Campaign cannot move to in_progress without both start_date and end_date, though the seed carries both asceldates, and 21crm_campaign_memberrows then failed with Campaign is required. It is reported to the seat, not handled here.Generated by Claude Code