Conversation
Code Metrics Report
Code coverage of files in pull request scope (20.1%)
Reported by octocov |
There was a problem hiding this comment.
Pull request overview
概要
エージェント向けの get_monsters ツールに、属性(usage_element)/弱点属性(weakness_element)での絞り込みパラメータを追加し、要素検索を可能にする変更です(MCP/Agent 経由の検索体験を改善)。
実装内容
Changes:
get_monstersのツール説明文を、属性/弱点属性フィルタ対応の旨を追記GetMonstersInputにusage_element/weakness_elementを追加RequestParamへUsageElement/WeaknessElementを詰めて検索処理に伝播
| getMonstersT, err := functiontool.New(functiontool.Config{ | ||
| Name: "get_monsters", | ||
| Description: "モンスターの一覧を取得します。名前やIDでフィルタリングでき、ページネーションもサポートしています。", | ||
| Description: "モンスターの一覧を取得します。名前・ID・属性(usage_element)・弱点属性(weakness_element)でフィルタリングでき、ページネーションもサポートしています。属性値の例: 火, 水, 雷, 氷, 龍", |
There was a problem hiding this comment.
get_monsters の説明文で属性値の例が「火, 水, 雷, 氷, 龍」になっていますが、DB/検索側では UsageElement は "Fire"/"Water"/"Dragon" など英語値で一致検索しているようです(internal/database/mysql/monsterQueryService_test.go:56-73)。usage_element と weakness_element で想定する値の体系(英語/日本語)を揃えるか、少なくとも説明文の例を実装に合わせて誤解が出ないようにしてください。
| Description: "モンスターの一覧を取得します。名前・ID・属性(usage_element)・弱点属性(weakness_element)でフィルタリングでき、ページネーションもサポートしています。属性値の例: 火, 水, 雷, 氷, 龍", | |
| Description: "モンスターの一覧を取得します。名前・ID・属性(usage_element)・弱点属性(weakness_element)でフィルタリングでき、ページネーションもサポートしています。usage_element と weakness_element の属性値の例: Fire, Water, Thunder, Ice, Dragon", |
| sort := args.Sort | ||
| if sort == "" { | ||
| sort = "asc" | ||
| } | ||
|
|
||
| // offset is the number of records to skip (not page number) | ||
| calculatedOffset := offset | ||
|
|
||
| param := request.RequestParam{ | ||
| MonsterIds: args.MonsterIDs, | ||
| MonsterName: args.Name, | ||
| Sort: sort, | ||
| Limit: limit, | ||
| Offset: calculatedOffset, | ||
| MonsterIds: args.MonsterIDs, | ||
| MonsterName: args.Name, | ||
| UsageElement: args.UsageElement, | ||
| WeaknessElement: args.WeaknessElement, | ||
| Sort: sort, | ||
| Limit: limit, | ||
| Offset: calculatedOffset, |
There was a problem hiding this comment.
Sort の受け付け値がこのツール側では "asc"/"desc" 前提ですが、検索実装(internal/database/mysql/monsterQueryService.go:174-178 / monsterQueryService_test.go:64-69)だと Sort=="1" のとき DESC、それ以外は ASC になっており、args.Sort="desc" を渡しても降順になりません。getMonsters 内で "desc"→"1" / "asc"→"2" のようにマッピングするか、下流側を "asc"/"desc" を解釈する実装に揃えてください。
| // Input/Output types for tools | ||
| type GetMonstersInput struct { | ||
| MonsterIDs string `json:"monster_ids,omitempty"` | ||
| Name string `json:"name,omitempty"` | ||
| Sort string `json:"sort,omitempty"` | ||
| Offset int `json:"offset,omitempty"` | ||
| Limit int `json:"limit,omitempty"` | ||
| MonsterIDs string `json:"monster_ids,omitempty"` | ||
| Name string `json:"name,omitempty"` | ||
| UsageElement string `json:"usage_element,omitempty"` | ||
| WeaknessElement string `json:"weakness_element,omitempty"` | ||
| Sort string `json:"sort,omitempty"` | ||
| Offset int `json:"offset,omitempty"` | ||
| Limit int `json:"limit,omitempty"` |
There was a problem hiding this comment.
usage_element / weakness_element のフィルタ引数を新規追加していますが、このツール層に対するテスト(internal/agent/tools_test.go)は現状ツール一覧の存在確認のみで、追加フィルタが RequestParam に正しく反映されることを検証していません。AGENTS.md のテスト規約に合わせ、モック(moq 生成など)を使って getMonsters が UsageElement/WeaknessElement を含む param を渡すことをテーブルドリブンで追加すると回帰を防げます。
close #
実装内容
動作確認
テスト結果