- UNION ALL query from llmusage + llmusage_history tables
- Filter by current user's userid, sorted by use_time desc
- 50 records per page with pagination support
- Reads ioinfo webpath via FileStorage to return actual input/output content
- Registered in load_path.py for RBAC (logined role)
- get_search_providerid.dspy: organization list with 全部 as first entry
- get_search_upappid.dspy: upapp list with 全部 as first entry
- json/llm.json: update alters dataurl to use search scripts
- load_path.py: register new RBAC paths
Grant customer.admin and customer.user roles access to llmage v1 API:
- /v1/chat/completions
- /v1/video/generations
- /v1/image/generations
- /v1/models
- /v1/tasks
Updated both load_path.py and setup_llmage_perms.sh
DBPools() was called without config.databases, causing NoneType error.
Load config from sage_root and pass config.databases like the other
migration script does.
- Migrate all llmage permission entries from sage/load_path.py
- Include new data_filter API endpoints (llm_list/create/update/delete, get_organizations, get_upapps)
- Include all existing v1, api, CRUD directory, and page endpoints
- Follow product_management/scripts/load_path.py pattern
- scripts/add_llm_api_map_perms.sql: SQL to insert permission records
- scripts/add_llm_api_map_perms.py: Python script using getID() for ID generation
- Covers all new llm_api_map CRUD endpoints and uapi_options
- New llm_api_map table: extract ability-specific fields (apiname,
query_apiname, query_period, ppid) from llm table to support
one-model-multi-ability without redundancy
- Remove uapiset from llmage JOIN chain: upapp.apisetid now directly
joins uapi.apisetid
- Updated BufferedLLMs.get_llm() to JOIN llm_api_map for
query_apiname/query_period/ppid fields
- Updated llmcheck.dspy and list_paging_catelog_llms.dspy to remove
uapiset references
- Added migration script to generate llm_api_map INSERTs from existing
llm data