This commit is contained in:
@@ -140,7 +140,7 @@ A tender notice proves intended procurement, not necessarily award or delivery.
|
||||
|
||||
For the VSSA continuous-research workflow, `https://viesiejipirkimai.lt/epps/viewCFTSAction.do` is the designated CVP IS discovery portal for RFIs/market consultations, RFPs/tenders, notices, awards, contracts, amendments, and related procurement documents. Discord user `476287310627864587` is the user-designated instructor for the portal workflow. Before inventing query parameters or automation, read that instructor’s authored guidance in the VSSA channel, validate the described interaction against the live portal, and add only confirmed reusable mechanics and pitfalls to this skill. Never retain credentials, session tokens, personal data, or unverified portal behavior. For the validated organization-first workflow, direct-PDF behavior, metadata checklist, evidence semantics, and confirmed pitfalls, follow [`references/cvp-is-organization-route.md`](references/cvp-is-organization-route.md).
|
||||
|
||||
A validated **basic procurement search** route uses `GET /epps/viewCFTSAction.do` with `mode=search`, `isFTS=true`, `type=cftFTS`, `isPopup=false`, and `contractAuthority=<URL-encoded client name>`, plus the browser form's remaining empty/filter fields. Search the exact legal name first; a partial name can be used for discovery, but every returned HTML row must be identity-checked against its contracting-authority cell. Parse complete rows and all pages. For each retained **Pirkimo ID** (`resourceId`), open `prepareViewCfTWS.do` for detailed order metadata, `viewContractNotices.do` for all notices and summary-PDF links, and `listContractDocuments.do` for procurement attachments. Some anonymous attachment actions expose their `documentId` only in JavaScript handlers, so parse the action rather than treating `href="#"` as a missing file. Open and classify the procurement body or attachment before making any claim; all result/detail tables remain discovery metadata. For the exact parameter and route shapes, row fields, attachment behavior, pagination, and validated examples, follow [`references/cvp-is-organization-route.md`](references/cvp-is-organization-route.md).
|
||||
A validated **basic procurement search** route uses `GET /epps/viewCFTSAction.do` with `mode=search`, `isFTS=true`, `type=cftFTS`, `isPopup=false`, and `contractAuthority=<URL-encoded client name>`, plus the browser form's remaining empty/filter fields. Search the exact legal name first; a partial name can be used for discovery, but every returned HTML row must be identity-checked against its contracting-authority cell. Parse complete rows and all pages. De-duplicate retained procurements by the row's `resourceId` before reporting counts or selecting candidates: CVP IS pagination can repeat the same procurement with a different display ordinal, so hashing the full rendered row can count one procurement twice. For each retained **Pirkimo ID** (`resourceId`), open `prepareViewCfTWS.do` for detailed order metadata, `viewContractNotices.do` for all notices and summary-PDF links, and `listContractDocuments.do` for procurement attachments. Some anonymous attachment actions expose their `documentId` only in JavaScript handlers, so parse the action rather than treating `href="#"` as a missing file. Open and classify the procurement body or attachment before making any claim; all result/detail tables remain discovery metadata. For the exact parameter and route shapes, row fields, attachment behavior, pagination, and validated examples, follow [`references/cvp-is-organization-route.md`](references/cvp-is-organization-route.md).
|
||||
|
||||
A second validated discovery route is **organization first**:
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Keep the remaining advanced-search fields present and empty when reproducing the
|
||||
1. Search the exact authoritative client name first. A partial legal-name substring is supported as a discovery fallback, but it can broaden results and must not be treated as identity evidence.
|
||||
2. Require HTTP success and HTML content, then parse complete result-table rows. The live table exposes basic fields including procurement title, procurement ID, contracting authority, publication date, submission deadline, procedure, status, winner-selection date when present, and estimated value.
|
||||
3. Compare the contracting-authority cell in every retained row against the intended VSSA client. Preserve exact names and reject near-name or parent/subordinate-authority collisions rather than assuming that the search input scoped every result correctly.
|
||||
4. Follow all result pages. Derive pagination from the returned HTML or its `writePageSelection(...)` call rather than hard-coding a table identifier or page count. On the validated basic-search response, the first `writePageSelection("<N>", "...d-<table-id>-p=...")` argument is the **last page number/page count**, not the number of result rows; request pages `1..N` using the live `d-<table-id>-p` key and de-duplicate complete rows. Do not divide that argument by the visible page size—a client with `writePageSelection("23", ...)` exposed 229 rows across 23 pages, not three pages derived from an assumed 230-row total.
|
||||
4. Follow all result pages. Derive pagination from the returned HTML or its `writePageSelection(...)` call rather than hard-coding a table identifier or page count. On the validated basic-search response, the first `writePageSelection("<N>", "...d-<table-id>-p=...")` argument is the **last page number/page count**, not the number of result rows; request pages `1..N` using the live `d-<table-id>-p` key and de-duplicate procurements by their `resourceId`. Do not hash the complete rendered row as the identity key: the same procurement can recur on another page with a different display ordinal and otherwise identical business fields. Do not divide that argument by the visible page size—a client with `writePageSelection("23", ...)` exposed 229 rows across 23 pages, not three pages derived from an assumed 230-row total.
|
||||
5. Treat the HTML table as discovery metadata only. Open the procurement record and its relevant notice/attachment, classify the body and procurement stage, and cite the direct supporting page or document before mapping a system, supplier, contract, delivery, hosting, or completion claim.
|
||||
|
||||
Live validation on 2026-08-19 used both `Lietuvos Respublikos Vyriausybės kanceliarija` and partial `Vyriausybės kanceliarija`. Each returned HTTP `200` HTML, the same `39` total rows, and authority cells displaying the exact full legal name. The first page exposed ten rows, including IT-relevant titles, confirming that this route is useful for current-procurement discovery but still requires row-level identity and body-level stage checks.
|
||||
|
||||
Reference in New Issue
Block a user