根据项目输入 JSON 生成应用蓝图，只返回 JSON，不要 Markdown 围栏或解释。
输出结构：{"roles":[{"code":"reader","name":"读者","description":""}],"frontendMenus":[{"code":"book_catalog","name":"图书目录","path":"/books","pageCode":"book_catalog_page","requiresLogin":false,"visibleRoles":[],"dataScope":"PUBLIC"}],"frontendPages":[{"code":"book_catalog_page","name":"图书目录","menuCode":"book_catalog","path":"/books","pageType":"list","tableName":"book_info"}],"adminMenus":[{"code":"book_admin","name":"图书管理","path":"/admin/books","pageCode":"book_admin_page","tableName":"book_info","pageType":"list","requiresLogin":true,"visibleRoles":["admin"],"dataScope":"ROLE"}],"adminHomeDashboard":{"title":"运营总览","description":"核心业务数据","metrics":[],"charts":[]}}。
蓝图描述目标生成项目，而不是当前 EasyCode/RuoYi 平台。不要生成数据库表、菜单表、角色表、权限表或代码。
role.name 使用简体中文，role.code 使用小写 snake_case。只有 role.code=admin 是系统管理员；名称含“管理员”或“后台”的业务角色仍保持独立。
role.name must be Simplified Chinese. Only role.code=admin is the system administrator.
每个菜单必须包含 requiresLogin、visibleRoles、dataScope；dataScope 只能是 PUBLIC、CURRENT_USER 或 ROLE。
adminMenus 必须包含 pageCode、tableName、pageType；个人资料使用 form，普通管理使用 list。
adminMenus must include pageCode, tableName, and pageType.
frontendMenus 顶层菜单应指向 pageCode；详情页作为子页面，不创建顶层详情菜单。
不要为轮播图、banner、公告滚动条等首页装饰创建顶层菜单，可放在首页业务块或作为后台维护数据。
frontendPages.pageType 只能是 list、current_user_list、detail、form，tableName 必须是页面展示的业务表。
同一业务对象只使用一个稳定 tableName，后续数据库、闭环、页面、看板、动作必须复用，不能使用同义表名。
adminHomeDashboard 尽量包含 4 个业务指标和至少 2 张图表（趋势图与分布图）；所有表字段必须可由后续数据库步骤创建。semantic 只能使用 money、order、user、task、warning、inventory、content、default。
adminHomeDashboard.metrics 每项结构为 {"code":"total_books","title":"总图书数","tableName":"book_info","aggregate":"count","field":"book_id","semantic":"inventory"}。
adminHomeDashboard.charts 每项结构为 {"code":"borrow_trend","title":"借阅趋势","type":"line","tableName":"borrow_record","dimension":{"field":"borrow_date","timeUnit":"day"},"metrics":[{"field":"borrow_id","aggregate":"count","alias":"borrowCount","label":"借阅量"}],"semantic":"order"}。dimension 必须是对象，metrics 必须是数组；不要输出旧版 xField、yField、metric 或字符串 dimension。
每个非 admin 角色使用表名等于 role.code 的独立账号表，不得创建共享 user、user_info、member 或 account 表。
Never invent a shared user, user_info, member, or account table for role accounts.
需要个人资料页时，为每个非 admin 角色创建独立 form 页面和菜单，tableName 绑定 role.code，pageCode/path 带角色前缀，visibleRoles 只包含该角色。
Create one form page and one menu per non-admin role when profile pages are needed.
个人订单、借阅、资料、预约、支付等页面必须 requiresLogin=true 且 dataScope=CURRENT_USER。
项目输入 JSON：
{{input}}
