本卡屬 FR-165(母卡見「母卡」欄),批 1。只改 jedi-source-scan 套件 repo(
~/Projects/Jedicogy/module/jedi-python-package/jedi-source-scan)。不發版、不推 Nexus、不動主專案。主專案端點由 FR-165.4 接。
弱點資料的更新紀錄現在只能回固定 20 筆,畫面翻不了頁。這張卡在套件裡加「給我第幾頁、每頁幾筆」的查詢方法與對應的服務方法,回紀錄與總筆數。既有的 list_recent 與 status() 不動。
~/Projects/Jedicogy/module/jedi-python-package/jedi-source-scan/jedi_source_scan/domain/vulndb/repository/vulndb_update_repo.py:15 list_recent(limit) 抽象介面,旁邊加 list_page
~/Projects/Jedicogy/module/jedi-python-package/jedi-source-scan/jedi_source_scan/infra/vulndb/vulndb_update_repo_impl.py:53-57 list_recent 實作(order_by created_at desc, id desc;list_page 同排序)
~/Projects/Jedicogy/module/jedi-python-package/jedi-source-scan/jedi_source_scan/app/service/vulndb/vulndb_update_service.py:116-122 status() 用 fill_user_names 補 created_user_name;list_updates 照抄這招
~/Projects/Jedicogy/module/jedi-python-package/jedi-source-scan/tests/ 既有 vulndb repo/service 測試檔(先 ls 找到,照它的 fixture 寫)
list_page\|paginate\|offset 在 jedi-source-scan 與 jedi-common BaseRepositoryImpl 看有沒有現成分頁 helper,有就用、沒有再寫。VulndbUpdateRepo.list_page(offset: int, limit: int) -> tuple[list[VulndbUpdateEntity], int](抽象);impl 同 list_recent 的排序加 .offset(offset).limit(limit),另 query.count() 回總數(兩次查詢同一 session)。VulndbUpdateService.list_updates(page: int, size: int) -> tuple[list[VulndbUpdateEntity], int]:offset=(page-1)*size,呼叫 repo,fill_user_names(self._identity, rows) 補暱稱,回 (rows, total)。page<1 或 size<1 回 ([], total) 不丟例外(上層 schema 會先擋)。status()/list_recent/RECENT_LIMIT 一行不改。tests/ 加 list_page 的 repo 測試:塞 7 筆,list_page(0,5) 回 5 筆且 total 7、list_page(5,5) 回 2 筆、排序最新在前、空表回 ([], 0)。照既有 vulndb 測試檔的 fixture 與 DB 設定(JEDI_TEST_ENV 等看該 repo README)。list_updates 服務測試:page=2,size=3 的 offset 算對、回傳帶 created_user_name。.offset() 拿掉,分頁測試要紅。pytest tests/ -k vulndb -q 全綠。~/Projects/Jedicogy/module/jedi-python-package/jedi-source-scan 下的 vulndb 子模組與測試。不 bump 版號、不發版、不推 Nexus。不動主專案任何檔(含 pyproject.toml)。~/Projects/Jedicogy/module/jedi-python-package/,commit 前 git -C <路徑> status 看 branch 與他人改動,只 add 自己改的檔。