--- name: showcase-module version: 1.0.0 description: "Sage展示平台模块 — 产品展示、社交互动、KTV付费下载的完整开发规范和部署指南。" trigger_conditions: - 用户要求开发或修改展示平台功能 - 涉及 showcase 模块的表结构、API、CRUD 修改 - 需要添加新的媒体类型或社交功能 tags: [sage, showcase, module, media, social] --- # Showcase 展示平台模块 ## 仓库 - 路径:`~/repos/showcase/` - 远端:`git@git.opencomputing.cn:yumoqing/showcase.git` ## 数据表(sage 数据库) | 表名 | 用途 | 关键字段 | |------|------|----------| | `showcase_posts` | 作品主表 (24字段) | media_type(music/mtv/short_video/long_video/ktv), price, like_count, view_count, comment_count | | `showcase_comments` | 评论 (12字段) | parent_id(嵌套), reply_to_user_id, reply_count | | `showcase_likes` | 点赞 (4字段) | UNIQUE(post_id, user_id) | | `showcase_downloads` | KTV下载 (8字段) | payment_status, UNIQUE(post_id, user_id) | ## API 端点(wwwroot/api/) | 文件 | 功能 | |------|------| | showcase_feed.dspy | Feed列表(分页+media_type筛选) | | showcase_post_detail.dspy | 详情(自动+view_count,返回is_liked/is_purchased) | | showcase_post_create.dspy | 创建(自动填充author_id=get_user()) | | showcase_post_update.dspy | 更新 | | showcase_post_delete.dspy | 删除 | | showcase_comment_create.dspy | 评论/回复(自动更新comment_count和reply_count) | | showcase_comment_update.dspy | 更新评论 | | showcase_comment_delete.dspy | 删除评论 | | showcase_comments_list.dspy | 获取作品全部评论 | | showcase_like_toggle.dspy | 切换点赞(返回liked:bool) | | showcase_download_purchase.dspy | KTV购买(检查重复,模拟支付) | ## CRUD 管理(json/) - showcase_posts_list — 作品管理(data_filter: title/media_type/status) - showcase_comments_list — 评论管理 - showcase_downloads_list — 下载记录 ## 前端 - index.ui — Feed主页(卡片瀑布流 + 5个类型筛选按钮) - detail.ui — 作品详情页 - showcase.css — 卡片样式、评论样式 - showcase.js — feed加载、卡片渲染、类型筛选 ## 核心设计决策 1. **计数冗余**:like_count/comment_count/view_count 冗余在posts表,Feed流不做COUNT 2. **点赞防刷**:UNIQUE(post_id, user_id) + toggle模式 3. **嵌套评论**:parent_id自引用,创建时自动更新父评论reply_count 4. **付费隔离**:price>0的作品需购买后is_purchased=True才返回content_url 5. **媒体类型**:5种固定类型,通过appcodes_kv编码管理 ## 部署检查清单 - [ ] pip install showcase - [ ] sage.py 添加 load_showcase() - [ ] build.sh 安装循环添加 showcase - [ ] wwwroot 软链接 - [ ] scripts/load_path.py 执行 - [ ] global_menu.ui 添加菜单项 - [ ] json2ddl 建表 - [ ] xls2crud 生成CRUD界面 ## 扩展指南 ### 添加新媒体类型 1. models/showcase_posts.json 的 codes 中添加新类型 2. init/data.json 的 appcodes 中添加新类型 3. wwwroot/showcase.js 的 MEDIA_LABELS/MEDIA_ICONS 中添加 4. wwwroot/index.ui 添加对应筛选按钮 ### 添加收藏功能 1. 新建 models/showcase_bookmarks.json(post_id + user_id + folder_id) 2. 新建 json/showcase_bookmarks_list.json 3. 新建 wwwroot/api/showcase_bookmark_toggle.dspy 4. 前端添加收藏按钮