T29: Bílá kniha course catalogue (fit.catalog.*) #28
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "t29-bila-kniha"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
T29: Bílá kniha (course catalogue)
Stacked on #27 (the part 2 plan lives there).
New MCP functions over the public faculty catalogue bk.fit.cvut.cz:
fit.catalog.course { code, lang? }returns credits, completion (Z/ZK/KZ), extent (e.g. 2P+1R+1C), semester, instructors and other facts, the course website, study-plan roles, and the text sections (annotation, lecture and seminar syllabus, literature, requirements), each capped at 4,000 chars. Codes may omit the plan suffix (BI-LA1→BI-LA1.21, the newest suffix wins).fit.catalog.search { query, lang?, limit? }matches course codes by prefix and course names word by word, accent-insensitively, with light stemming for Czech./en/,/cz/). The index (6 h) and up to 200 course pages are cached per isolate.00/…/p123.html) are fetched, onbk.fit.cvut.czonly;src/lib/html-text.ts: entity decoding, HTML → text (keeping line structure),innerBlocks,stripTagsandclip. It runs in linear time on malformed input, and T28 (FIT Wiki) reuses it.Verified live against bk.fit.cvut.cz: BI-PA1 → 7 credits, Z,ZK, 2P+2R+2C, 5 sections, 23 study plans. The Czech BI-LA1 page has Czech section titles, and searching "databáze" finds the database courses.
Review (Astra)
<without>) could exhaust the Worker's CPU budget. Every parser now uses linearindexOfscanners and bounded quantifiers, with timing tests for pathological pages.Checks
lint, typecheck and test: 332 passing.
🤖 Generated with Claude Code
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.