feat: 支持 ONLYOFFICE 持久化配置管理
- 添加 SettingsRenderForm schema 和 renderForm 字段 - 实现数据库 schema 自动迁移(onlyoffice_enabled, onlyoffice_public_url, onlyoffice_jwt_secret_encrypted) - 新增 resolve_onlyoffice_settings() 函数支持运行时配置解析 - 知识库服务改用数据库配置替代运行时配置 - 前端添加文件渲染配置页面,支持 JWT 密钥管理 - 完善相关测试覆盖
This commit is contained in:
@@ -401,10 +401,57 @@
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template v-else-if="activeSection === 'logs'">
|
||||
<section class="settings-card">
|
||||
</template>
|
||||
|
||||
<template v-else-if="activeSection === 'rendering'">
|
||||
<section class="settings-card">
|
||||
<div class="card-head">
|
||||
<div>
|
||||
<h4>ONLYOFFICE 服务配置</h4>
|
||||
<p>维护文件渲染开关、文档服务对外地址和 JWT 密钥。后端回调地址继续由部署配置管理。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="switch-group">
|
||||
<button class="switch-row" type="button" @click="toggleBoolean('renderForm', 'enabled')">
|
||||
<span class="switch-copy">
|
||||
<strong>启用 ONLYOFFICE 文件渲染</strong>
|
||||
<small>启用后,知识库中的 Office 文件将优先走 ONLYOFFICE 在线预览。</small>
|
||||
</span>
|
||||
<span class="switch" :class="{ active: pageState.renderForm.enabled }"><i></i></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="form-grid">
|
||||
<label class="field field-full">
|
||||
<span><em>*</em> ONLYOFFICE 服务地址</span>
|
||||
<input
|
||||
v-model="pageState.renderForm.publicUrl"
|
||||
type="text"
|
||||
placeholder="例如 http://10.10.10.122:8082"
|
||||
/>
|
||||
</label>
|
||||
|
||||
<label class="field field-full">
|
||||
<span><em>*</em> JWT 密钥</span>
|
||||
<input
|
||||
v-model="pageState.renderForm.jwtSecret"
|
||||
type="password"
|
||||
autocomplete="off"
|
||||
@focus="clearRenderSecretMask"
|
||||
:placeholder="pageState.renderForm.jwtSecretConfigured ? '已配置,如需修改请重新输入' : '保存后不会保留在草稿中'"
|
||||
/>
|
||||
<small v-if="pageState.renderForm.jwtSecretConfigured" class="secret-bound-state">
|
||||
<i class="mdi mdi-database-lock"></i>
|
||||
<span>已从数据库加密加载,预览签名会使用已保存密钥。</span>
|
||||
</small>
|
||||
</label>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<template v-else-if="activeSection === 'logs'">
|
||||
<section class="settings-card">
|
||||
<div class="card-head">
|
||||
<div>
|
||||
<h4>日志级别与留存</h4>
|
||||
|
||||
Reference in New Issue
Block a user