feat(smzdm): expose interaction metrics and update time in search results (#1961) - #1968
Merged
jackwener merged 3 commits intoJun 17, 2026
Conversation
…ults (jackwener#1961) smzdm search rows now carry updated_at, zhi_count, buzhi_count and favorite_count alongside the existing comments, so deal triage can filter on freshness and engagement without opening each detail page. The metrics are scraped from the same li.feed-row-wide DOM already in use and default to 0 / '' when absent, so no declared column is ever dropped. Refactor the inline page.evaluate body into buildSmzdmSearchJs() exposed via __test__, and add jsdom tests that parse the documented result-item markup end to end.
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.
What
Enriches
opencli smzdm searchoutput so deal triage can filter on freshness and engagement without opening each detail page. Closes #1961.New columns:
(
updated_at,zhi_count,buzhi_count,favorite_countare new;commentsalready existed.)How
All fields come from the same
li.feed-row-widelist item already scraped — no extra detail-page requests — using the selectors from the issue's DOM evidence:zhi_count←.price-btn-up .unvoted-wrap spanbuzhi_count←.price-btn-down .unvoted-wrap spanfavorite_count←.feed-btn-fav spanupdated_at← direct text node(s) of.feed-block-extras(excluding the nested mall<span>)Missing metrics default to
0/'', so every row always carries the full declared column set (no silent column drop).Refactor for testability
Extracted the inline
page.evaluatebody intobuildSmzdmSearchJs()exposed via__test__(matching e.g.clis/aibase/news.js), giving smzdm its first test file.Test
New
clis/smzdm/search.test.js(jsdom): parses the issue's documented result-item markup end to end and asserts the exact expected row, plus a defaults-to-zero case and a limit case.Verification
npx vitest run clis/smzdm/search.test.js— 4 passednpm run build— ok (manifest columns updated)npm run check:typed-error-lint/npm run check:silent-column-drop— no new violations