后端(Odoo addons): - game_base: 迁入 关于 功能(game.page/game.page.item/yusen.asset 模型、page_views/asset_views、6条权限、menu_website_about 左侧应用入口),新增 chat 模块(AI世界聊天: chat.py/chat_api.py/chat_data.xml/chat_views.xml) - yt_world: 合并 game_ai_npc(npc 模型/数据/controller),修复菜单 NotNullViolation - yusen_website: 移除已迁出的 page/asset,背景菜单改挂 game_base.action_game_page - 新增 game_asset_backup 纯数据模块: 备份前端素材到 addons(game_assets/),预置 图鉴(game.codex.entry)9条(过场CG/动物) + 素材管理(yusen.asset)120条(地形/建筑/瓦片/幻灯片/背景/路/UI),按类分 tags 前端(assets + HTML): - 新增 chat.js / game-api.js、chat.html / buildings_default_demo.html - 清理旧 slides/website 冗余文件,更新 GENERATION_RULES.md 与动物九宫格素材
36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import models, fields
|
|
|
|
|
|
class GamePage(models.Model):
|
|
"""页面板块:官网单页(特色 / 背景 / 致玩家等)的容器。"""
|
|
_name = 'game.page'
|
|
_description = '页面板块'
|
|
_order = 'sequence asc'
|
|
_rec_name = 'title'
|
|
|
|
key = fields.Char(string='标识', required=True, index=True,
|
|
help='前端按 key 取板块,如 features / background / letter')
|
|
title = fields.Char(string='标题', required=True)
|
|
subtitle = fields.Char(string='副标题')
|
|
body_text = fields.Text(string='正文')
|
|
sequence = fields.Integer(string='排序', default=10)
|
|
body_html = fields.Html(string='正文', sanitize=True)
|
|
active = fields.Boolean(string='生效', default=True)
|
|
item_ids = fields.One2many('game.page.item', 'page_id', string='条目')
|
|
|
|
|
|
class GamePageItem(models.Model):
|
|
"""页面板块下的条目(卡片)。"""
|
|
_name = 'game.page.item'
|
|
_description = '页面条目'
|
|
_order = 'sequence asc'
|
|
_rec_name = 'title'
|
|
|
|
page_id = fields.Many2one('game.page', string='所属板块',
|
|
required=True, ondelete='cascade', index=True)
|
|
sequence = fields.Integer(string='排序', default=10)
|
|
icon = fields.Char(string='图标', help='emoji 或符号,如 🌐 / ✦')
|
|
title = fields.Char(string='标题', required=True)
|
|
desc = fields.Text(string='描述')
|