Commit ecb0476b by pangchong

docs(editor): 补充编辑器多环境配置规范说明

- 新增章节详细说明编辑器多环境配置管理要求
- 强制指定不同环境配置仅可写入对应环境目录文件
- 明确禁止在根目录 .env 文件中写入视图渲染相关配置
- 规范根目录 .env 文件仅保留基础环境区分变量和接口地址
- 删除了无用的 XML 文件内容
parent 80360b09
...@@ -299,3 +299,11 @@ export const COMPOSITE_CONTAINER_MAP: Record<string, string[]> = { ...@@ -299,3 +299,11 @@ export const COMPOSITE_CONTAINER_MAP: Record<string, string[]> = {
- 直接通过 `apiService` 向后端实体接口(例如 `/plugins/TD_JC_CEP_UPLOAD_IMG` 等)发起数据请求。对于上传等表单提交,**强制直接在 `apiService.postForm` 中传入含有 `file` 与参数的普通 JavaScript 对象**(底层服务已实现拦截自动转化为 `FormData` 包装),**严禁**在业务和桥接层手动进行 `new FormData()` 的实例化与 append 操作;同时,**禁止**在内部做任何针对外部宿主系统环境(例如 window、window.parent 等)的挂载检测与判断。 - 直接通过 `apiService` 向后端实体接口(例如 `/plugins/TD_JC_CEP_UPLOAD_IMG` 等)发起数据请求。对于上传等表单提交,**强制直接在 `apiService.postForm` 中传入含有 `file` 与参数的普通 JavaScript 对象**(底层服务已实现拦截自动转化为 `FormData` 包装),**严禁**在业务和桥接层手动进行 `new FormData()` 的实例化与 append 操作;同时,**禁止**在内部做任何针对外部宿主系统环境(例如 window、window.parent 等)的挂载检测与判断。
- **业务组件调用规范**:在任何 Vue 组件或 functionals 逻辑类中,**禁止**直接通过 `apiService` 或原生 ajax 方式编写特定的外部接口请求逻辑,**必须**`bridge.ts` 中导入对应的封装方法进行调用,实现视图层与接口传输层的彻底解耦。 - **业务组件调用规范**:在任何 Vue 组件或 functionals 逻辑类中,**禁止**直接通过 `apiService` 或原生 ajax 方式编写特定的外部接口请求逻辑,**必须**`bridge.ts` 中导入对应的封装方法进行调用,实现视图层与接口传输层的彻底解耦。
- **翻译相关接口例外情况**:智能翻译相关的接口(如单句翻译 `/translate`、双语库检索 `/search`、翻译词条维护 `/data/insert_single``/data/delete` 以及 XML 翻译对照提取 `/xml/extract/process`、批量翻译接口等)属于本编辑器纯业务或数据处理功能接口,**不属于外部宿主系统的桥接接口**,因此**不需要**存放在 `bridge.ts` 中,允许直接在各自模块的 `functionals` 逻辑类或业务代码中发起网络请求(应使用系统自带的 `service``serviceManage` 实例)。 - **翻译相关接口例外情况**:智能翻译相关的接口(如单句翻译 `/translate`、双语库检索 `/search`、翻译词条维护 `/data/insert_single``/data/delete` 以及 XML 翻译对照提取 `/xml/extract/process`、批量翻译接口等)属于本编辑器纯业务或数据处理功能接口,**不属于外部宿主系统的桥接接口**,因此**不需要**存放在 `bridge.ts` 中,允许直接在各自模块的 `functionals` 逻辑类或业务代码中发起网络请求(应使用系统自带的 `service``serviceManage` 实例)。
---
## 22. 编辑器多环境配置规范 (环境配置收拢)
- **配置位置约束(强制)**:针对不同环境(如 `bx``xm` 等)的编辑器渲染或行为参数配置,**必须且仅允许**统一写入各自环境目录下的配置文件中(例如 `src/bx/config/index.ts``src/xm/config/index.ts` 等),并在 `src/configs/index.ts` 中进行中转与兜底导出。
- **禁止在 `.env` 中编写渲染配置****绝对禁止**将任何与编辑器视图渲染、业务呈现逻辑或默认文件名/文件内容相关的配置项写入项目根目录下的各个 `.env.*`(环境变量)文件中。根目录下的 `.env` 配置文件应当只保留环境区分(如 `VITE_CUSTOM_CODE`)以及基础 API 接口服务地址等系统底层变量。
...@@ -4,3 +4,6 @@ ...@@ -4,3 +4,6 @@
// 列表中仅有一个子项时,不显示序号 // 列表中仅有一个子项时,不显示序号
export const SHOW_SINGLE_CHILD_INDEX = false export const SHOW_SINGLE_CHILD_INDEX = false
// 默认使用的本地 XML 模板文件名
export const DEFAULT_XML_FILE = 'default.xml'
...@@ -10,3 +10,10 @@ const customConfig = customPath ? customConfigs[customPath]?.default || customCo ...@@ -10,3 +10,10 @@ const customConfig = customPath ? customConfigs[customPath]?.default || customCo
*/ */
export const SHOW_SINGLE_CHILD_INDEX = export const SHOW_SINGLE_CHILD_INDEX =
customConfig && typeof customConfig.SHOW_SINGLE_CHILD_INDEX !== 'undefined' ? customConfig.SHOW_SINGLE_CHILD_INDEX : true customConfig && typeof customConfig.SHOW_SINGLE_CHILD_INDEX !== 'undefined' ? customConfig.SHOW_SINGLE_CHILD_INDEX : true
/**
* 默认使用的本地 XML 模板文件名。
*/
export const DEFAULT_XML_FILE =
customConfig && typeof customConfig.DEFAULT_XML_FILE !== 'undefined' ? customConfig.DEFAULT_XML_FILE : 'default.xml'
/** /**
* XML 编辑器静态常量定义 * XML 编辑器静态常量定义
*/ */
export const DEFAULT_FILE_NAME = 'AMEA-A282400-02-1_0_0_updated.xml'
import { useEditorStore } from '@/store/editor' import { useEditorStore } from '@/store/editor'
import type { XmlNode } from '@/types/xmlNode' import type { XmlNode } from '@/types/xmlNode'
import { DEFAULT_FILE_NAME } from '../constants'
// 静态导入 DTD JSON // 静态导入 DTD JSON
import dtdJson from '@/assets/json/dtd.json' import dtdJson from '@/assets/json/dtd.json'
// 导入原始 XML 文本 (?raw) import { DEFAULT_XML_FILE } from '@/configs'
import xmlText from '@/assets/file/AMEA-A282400-02-1_0_0.xml?raw' // 导入通用及定制环境目录下的本地默认模板 XML 文本
const xmlModules = import.meta.glob([
'../../../assets/file/*.xml',
'../../../*/assets/file/*.xml'
], { query: '?raw', import: 'default', eager: true }) as Record<string, string>
/** /**
* 工卡 XML 编辑器核心业务逻辑 Hook * 工卡 XML 编辑器核心业务逻辑 Hook
...@@ -21,7 +24,12 @@ export function useEditor() { ...@@ -21,7 +24,12 @@ export function useEditor() {
window.$loading?.show('加载数据中…') window.$loading?.show('加载数据中…')
try { try {
loadDtdSchema(dtdJson as any) loadDtdSchema(dtdJson as any)
let xmlContent = xmlText
const customCode = import.meta.env.VITE_CUSTOM_CODE
const customXmlKey = customCode ? `../../../${customCode}/assets/file/${DEFAULT_XML_FILE}` : ''
const commonXmlKey = `../../../assets/file/${DEFAULT_XML_FILE}`
let xmlContent = (customXmlKey && xmlModules[customXmlKey]) || xmlModules[commonXmlKey] || xmlModules['../../../assets/file/default.xml'] || ''
try { try {
const remoteXml = await getEditorData() const remoteXml = await getEditorData()
if (remoteXml) { if (remoteXml) {
...@@ -56,7 +64,7 @@ export function useEditor() { ...@@ -56,7 +64,7 @@ export function useEditor() {
const blob = new Blob([xml], { type: 'application/xml;charset=utf-8;' }) const blob = new Blob([xml], { type: 'application/xml;charset=utf-8;' })
openDownloadModal({ openDownloadModal({
fileName: DEFAULT_FILE_NAME, fileName: `WORK_CARD_${now('YYYYMMDDHHmmss')}.xml`,
title: '导出 XML', title: '导出 XML',
localBlob: blob localBlob: blob
}) })
...@@ -531,7 +539,7 @@ export function useEditor() { ...@@ -531,7 +539,7 @@ export function useEditor() {
const blob = new Blob([htmlContent], { type: 'text/html;charset=utf-8;' }) const blob = new Blob([htmlContent], { type: 'text/html;charset=utf-8;' })
openDownloadModal({ openDownloadModal({
fileName: 'jobcard_flow_preview.html', fileName: `WORK_CARD_${now('YYYYMMDDHHmmss')}.html`,
title: '下载 HTML 预览包', title: '下载 HTML 预览包',
localBlob: blob localBlob: blob
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment