SolidUI AI genera visualización, división del módulo de la versión 0.1.0 y explicación del código fuente

1. Antecedentes

Con el auge de los modelos de lenguaje para generar imágenes a partir de texto, SolidUI quiere ayudar a las personas a crear rápidamente herramientas de visualización. El contenido de visualización incluye escenas 2D, 3D y 3D, para construir rápidamente escenas de presentación de datos 3D. SolidUI es un proyecto innovador que tiene como objetivo combinar el procesamiento del lenguaje natural (NLP) con gráficos por computadora para realizar la función del diagrama de Vincent. Al construir un modelo de lenguaje gráfico Wensheng de desarrollo propio, SolidUI utiliza el proceso RLHF (retroalimentación humana de aprendizaje de refuerzo) para realizar el proceso desde la descripción del texto hasta la generación del gráfico.

2. Descripción general de la arquitectura

inserte la descripción de la imagen aquí

Entrada: capa de interfaz API, principalmente responsable de la solicitud de la capa de interfaz de usuario frontal, el servicio proporciona uniformemente API RESTful para proporcionar servicios de solicitud al exterior

3. Función del módulo

  • solidui-bom: BOM (Bill of Materials) generalmente se usa para administrar las versiones de dependencia en un proyecto para garantizar que todos los módulos usen la misma versión de dependencias.

  • solidui-common: este módulo contiene código y herramientas comunes utilizados en todo el proyecto.

  • solidui-dao: El módulo DAO (Data Access Object) contiene todos los códigos que interactúan con la base de datos.

  • solidui-datasource-plugin: este módulo proporciona una forma de ampliar las fuentes de datos para que los datos se puedan obtener de muchos tipos diferentes de fuentes de datos.

  • solidui-dist: Este módulo se encarga de construir y distribuir el proyecto.

  • solidui-entrance: este módulo es el principal punto de entrada del proyecto y contiene el código para iniciar e inicializar la aplicación.

  • solidui-service: este módulo contiene código de lógica empresarial.

  • solidui-spi: el módulo SPI (Interfaz de proveedor de servicios) proporciona una forma de ampliar la funcionalidad del proyecto.

  • solidui-web: este módulo contiene el código frontal para mostrar la interfaz de usuario, la interfaz de chat.

  • soliduimodelui: esta capa de proxy de modelo de módulo se utiliza para la conversión de modelos de datos de la capa de interfaz de usuario de front-end.

4. Explicación del código fuente

4.1 solidui-bom

Este es un archivo de modelo de objeto de proyecto (POM) de Maven, que es un archivo de configuración de proyecto basado en XML que se utiliza para describir información sobre proyectos de construcción, como dependencias de proyectos, complementos de construcción, propiedades de proyectos y más.

Este archivo POM define un proyecto llamado solidui-bom cuyo proyecto principal es solidui.

En este archivo POM, hay tres partes principales:

  • Propiedades: define los números de versión de varias bibliotecas dependientes. Esta es una forma común de administrar versiones de todas las bibliotecas dependientes en un proyecto, definiendo y actualizando todas las versiones dependientes en un solo lugar.

  • Padre: Define el proyecto padre de este proyecto. En Maven, puede heredar algunas configuraciones comunes, como la gestión de dependencias, la gestión de complementos, etc., definiendo un proyecto principal.

  • Gestión de dependencias: esta sección define las bibliotecas dependientes del proyecto y sus versiones. Todas las dependencias definidas aquí se pueden usar directamente en submódulos sin especificar un número de versión. Si una dependencia en un submódulo entra en conflicto con una dependencia aquí, la versión definida aquí tendrá prioridad.

De acuerdo con este archivo POM, puede saber de qué bibliotecas depende este proyecto y las versiones de estas bibliotecas. Además, si necesita agregar una nueva biblioteca de dependencias o actualizar la versión de una biblioteca de dependencias existente, también puede hacerlo en este archivo.

4.2 solidui-común

Constantes: esta clase define algunas constantes globales que pueden usarse a lo largo del proyecto. Por ejemplo, el nombre de clave del encabezado HTTP, la clave de cifrado, etc.

DateConstants: esta clase define constantes de cadena formateadas para fechas y horas.

ByteTimeUtils: esta clase actualmente parece vacía, puede ser una clase de utilidad para manejar bytes y tiempo.

DESUtil: esta clase proporciona métodos de cifrado y descifrado basados ​​en el algoritmo DES para la transmisión segura de datos.

EncryptionUtils: esta clase proporciona un método para calcular el valor MD5 de una cadena.

JSONUtils: esta clase proporciona una serie de métodos de procesamiento de JSON, incluida la serialización de objeto a JSON, la deserialización de JSON a objeto, la conversión de JSON a lista o mapa, etc.

LoginUtils: esta clase proporciona algunos métodos para manejar usuarios de inicio de sesión, como configurar usuarios de inicio de sesión, eliminar usuarios de inicio de sesión y obtener usuarios de inicio de sesión.

Utils: esta clase proporciona algunos métodos de utilidad comunes, como la creación de una fábrica de subprocesos con un nombre de subproceso personalizado y un estado de daemon, y la creación de un ejecutor de tareas programadas predeterminado.

4.3 solidui-dao

Este módulo se llama solidui-dao, que incluye principalmente la configuración y el modelo de objetos relacionados con la capa de acceso a datos.

SpringConnectionFactory: Esta clase de configuración se utiliza principalmente para configurar ajustes relacionados con MyBatisPlus, como complementos de paginación, administradores de transacciones, SqlSessionFactory, etc.

DataSource, DataSourceType, DataSourceTypeKey, JobElement, JobElementPage, JobPage, ModelType, Project, User: estas clases son clases de entidad que representan la estructura de datos de cada tabla en la base de datos.

DataSourceMapper, DataSourceParamKeyMapper, DataSourceTypeMapper, JobElementMapper, JobElementPageMapper, JobPageMapper, ModelTypeMapper, ProjectMapper, UserMapper: estas interfaces son interfaces Mapper de MyBatis, que se utilizan para definir operaciones CRUD para las tablas correspondientes.

PageListingResult: esta es una clase contenedora para envolver los resultados de las consultas de paginación.

DaoConfiguration: esta es una clase de configuración de Spring utilizada para iniciar la configuración automática de Spring Boot y escanear la interfaz de Mapper.

A través de este módulo, puede operar fácilmente la base de datos. Por ejemplo, puede consultar a un usuario dado un nombre de usuario y contraseña a través del método queryUserByNamePassword de UserMapper. Todas las interfaces de Mapper heredan de la interfaz BaseMapper de MyBatisPlus, por lo que todas tienen operaciones CRUD básicas.

4.4 solidui-datasource-complemento

Este módulo se llama solidui-datasource-plugin y contiene la configuración y el modelo de objetos relacionados con el complemento de fuente de datos.

DorisClient: esta clase hereda de BaseJdbcClient e implementa métodos específicos para interactuar con la base de datos de Doris, incluida la obtención de todas las bases de datos, la obtención de todas las tablas de la base de datos y la ejecución de declaraciones de consulta y la obtención de resultados.

DorisClientFactory: esta clase hereda de BaseJdbcClientFactory e implementa el método de fábrica para crear DorisClient.

DorisConnectionFactory: esta clase implementa la interfaz ConnectionFactory y proporciona un método para crear una conexión con la base de datos de Doris.

MysqlClient: esta clase hereda de BaseJdbcClient e implementa métodos específicos para interactuar con la base de datos MySQL, incluida la obtención de todas las bases de datos, la obtención de todas las tablas de la base de datos y la ejecución de declaraciones de consulta y la obtención de resultados.

MysqlClientFactory: esta clase hereda de BaseJdbcClientFactory e implementa el método de fábrica para crear MysqlClient.

MysqlConnectionFactory: esta clase implementa la interfaz ConnectionFactory y proporciona métodos para crear conexiones a bases de datos MySQL.

JdbcClientManager: esta clase se utiliza para cargar el ConnectionFactory configurado.

ConnectDTO: esta clase es un objeto de transferencia de datos simple que contiene la información necesaria para conectarse a la base de datos, como el nombre de host, el puerto, el nombre de usuario, la contraseña, el nombre de la base de datos y parámetros adicionales.

Otras interfaces como JdbcClient, JdbcClientFactory, ConnectionFactory, etc. definen algunos métodos comunes y clases de implementación específicas como DorisClient, DorisClientFactory, DorisConnectionFactory, etc. proporcionan la implementación específica de estos métodos.

Además, el archivo pom.xml de este módulo configura el submódulo solidui-datasource-all, que depende de dos módulos, solidui-datasource-mysql y solidui-datasource-doris, que definen cómo comunicarse con la interacción MySQL y Doris Database.

4.5 solidui-distancia

Este módulo se llama solidui-dist, que es el principal responsable del lanzamiento y despliegue del proyecto.

docker-compose.yml: este es un archivo de configuración de Docker Compose para definir y ejecutar aplicaciones Docker de varios contenedores. En este archivo se definen varios servicios: solidui-entrance, solidui-web, mysql y soliduimodelui. Docker ejecutará estos servicios como contenedores.

release-docs: esta carpeta puede contener algunos documentos de publicación, como LICENCIA y AVISO.

assembly.xml: este es el archivo de configuración para el complemento Maven Assembly, que define cómo crear el paquete de lanzamiento del proyecto. En este archivo, se define qué archivos y carpetas deben incluirse.

La función de este módulo es principalmente definir cómo empaquetar el proyecto y cómo implementar el proyecto. Con Docker Compose, es muy conveniente implementar y ejecutar este proyecto en cualquier máquina con Docker instalado. A través del complemento Maven Assembly, es muy conveniente crear el paquete de lanzamiento del proyecto, que contiene todos los archivos necesarios para ejecutar el proyecto.

4.6 entrada solidui

Este módulo se denomina solidui-entrance y, como punto de entrada de la aplicación, proporciona varios controladores (Controller) para procesar las solicitudes de los usuarios.

BaseController: proporciona algunos métodos comunes para devolver resultados, incluidos resultados exitosos y resultados de error.

DataSourceController: proporciona una serie de API relacionadas con las fuentes de datos, como obtener todos los tipos de fuentes de datos, obtener claves de parámetros según tipos, consultar bases de datos según nombres y tipos de fuentes de datos, etc.

JobController: proporciona algunas API relacionadas con el trabajo, como guardar páginas, actualizar trabajos, consultar trabajos por ID de proyecto, etc.

JobPageController: proporciona algunas API relacionadas con las páginas de trabajo, como la creación de páginas de trabajo, la actualización de páginas de trabajo, la consulta de páginas de trabajo por ID de proyecto, etc.

LoginController: proporciona API de inicio y cierre de sesión.

MetadataQueryController: proporciona algunas API relacionadas con la consulta de metadatos, como consultar la base de datos por el nombre de la fuente de datos, consultar la tabla por el nombre de la fuente de datos, consultar por SQL, etc.

ModelController: proporciona una API para obtener una lista de modelos.

ProjectController: proporciona algunas API relacionadas con proyectos, como la creación de proyectos, la actualización de proyectos, la consulta de proyectos por nombre de proyecto, la eliminación de proyectos, etc.

Cada Controlador depende del Servicio correspondiente, y la lógica comercial correspondiente se define en el Servicio. Por ejemplo, DataSourceController depende de DataSourceService y DataSourceService define la lógica comercial, como consultar todos los tipos de fuentes de datos y obtener claves de parámetros según los tipos.

Además, se proporcionan algunas clases de implementación de servicios, como DataSourceServiceImpl, DataSourceTypeServiceImpl, JobPageServiceImpl, JobServiceImpl, MetadataQueryServiceImpl, ModelServiceImpl, ProjectServiceImpl y UserServiceImpl. Estas clases implementan la interfaz de servicio correspondiente y proporcionan una lógica comercial específica.

En general, este módulo procesa principalmente las solicitudes de los usuarios, ejecuta la lógica comercial correspondiente y devuelve resultados.

4.7 servicio solidui

Contiene algún código de capa de servicio.

4.8 solidui-spi

ConnectDTO: este es un objeto de transferencia de datos simple que contiene la información necesaria para conectarse a la base de datos.

ConstantsSPI: esta clase define algunas constantes que se pueden usar en SPI (Interfaz de proveedor de servicios).

4.9 solidui-web

Este es un proyecto front-end basado en React y Ant Design. Los principales contenidos del proyecto incluyen:

  • La entrada principal de la aplicación index.tsx , utilizada para inicializar y renderizar toda la aplicación.
  • App Los componentes son los componentes principales de la aplicación, que se utilizan para definir rutas y representar los componentes correspondientes.
  • routes Todas las rutas de la aplicación están definidas, incluida la página de inicio, la página de inicio de sesión, la página de lista de proyectos, la página de lista de fuentes de datos, la página del tablero, la página de vista previa, etc.
  • DefaultLayout Los componentes definen el diseño principal de la aplicación, incluido el encabezado, la barra lateral y el área de contenido principal.
  • ProjectList y DataSourceList se utilizan dos componentes para mostrar la lista de elementos y la lista de fuentes de datos, respectivamente.
  • Dashboard Los componentes se utilizan para mostrar tableros y mostrar resultados de visualización de datos.
  • Login Los componentes se utilizan para manejar la lógica de inicio de sesión del usuario.
  • Home Los componentes definen el contenido de la página de inicio de la aplicación.
  • useProject Y useDataSource dos Hooks personalizados para manejar la lógica empresarial relacionada con proyectos y fuentes de datos.
  • ModelManager Clase utilizada para gestionar el estado de la aplicación.
  • ViewFactory Clase para crear vistas.
  • SolidView class, que define una clase base de vista abstracta, y todos los componentes de vista deben heredar de esta clase base.

Además, el proyecto también incluye algunos módulos auxiliares, como ApiServiceencapsular solicitudes de API, themedefinir estilos de temas solidui-entrancey solidui-weblos módulos principales del backend y frontend respectivamente, apiy servicedefinir algunas interfaces y servicios de API, componentsincluidos algunos componentes públicos.

El proyecto utiliza algunas bibliotecas de terceros, como axiospara procesar solicitudes HTTP y lodash-esproporcionar algunas funciones prácticas de utilidad. antdEs una biblioteca de componentes de interfaz de usuario basada en React echartspara visualización de datos, react-router-domenrutamiento y react-windowoptimización de la representación de listas largas. Rendimiento, etc.

Las herramientas de compilación del proyecto se webpackutilizan babelpara transpilar el código JavaScript eslinty prettierpara la especificación y el formato del código, jestpara las pruebas unitarias. Además, el proyecto también usa huskyy lint-stagedpara verificar y corregir automáticamente los problemas de código antes de confirmar el código.

4.10 modelo de sólidos

Este es un proyecto de backend basado en Flask y MySQL, que se utiliza principalmente para procesar solicitudes desde el frontend y realizar las operaciones correspondientes. Los principales módulos funcionales incluyen:

  • kernel_manager: este módulo es principalmente responsable de administrar y operar el kernel de Python y procesar las solicitudes de ejecución de código desde el front-end. El administrador del kernel realiza la comunicación con el kernel de Python, recibe y procesa los resultados de salida del kernel y maneja varios estados del kernel. Además, también proporciona una cola de mensajes para recibir y enviar mensajes del núcleo.

  • kernel_program: este módulo se encarga principalmente de iniciar y administrar los subprocesos del kernel de Python. Inicia el kernel de Python a través de un subproceso y luego se comunica con el kernel a través de la cola de mensajes de SnakeMQ.

  • utils: este módulo proporciona algunas funciones de utilidad útiles, como enviar mensajes JSON, inicializar colas de mensajes de SnakeMQ, etc.

  • webapp: esta es una aplicación web basada en Flask que proporciona una serie de API para llamadas front-end, como ejecutar código, obtener resultados de ejecución y administrar el kernel de Python. Esta aplicación utiliza el middleware CORS para manejar solicitudes de origen cruzado.

  • web_utils: este módulo proporciona algunas funciones de utilidad comunes en las aplicaciones web, como dar formato a los datos de respuesta, consultar la base de datos, etc.

  • .env: este es un archivo de configuración de variables de entorno, que contiene información de configuración, como la información de conexión de la base de datos y el número de puerto de la aplicación.

El proceso de operación del proyecto es más o menos el siguiente:

  1. Inicie la aplicación web Flask y proporcione una interfaz API para llamadas front-end;
  2. El front-end inicia una solicitud, como ejecutar código, etc.;
  3. La aplicación web recibe la solicitud y llama al administrador del kernel para realizar las operaciones correspondientes;
  4. El administrador del kernel se comunica con el kernel de Python a través de la cola de mensajes de SnakeMQ, ejecuta el código y obtiene el resultado;
  5. La aplicación web devuelve el resultado de la ejecución al front-end.

Además, el proyecto también proporciona algunas funciones auxiliares, como salida de registro, manejo de errores, etc.

5. Conviértete en colaborador

  • Aportación de documentación oficial. Participe en las contribuciones de la comunidad al descubrir deficiencias en la documentación, optimizar la documentación y actualizar continuamente la documentación. A través de la contribución de documentos, permita que los desarrolladores se familiaricen con la forma de enviar relaciones públicas y participen verdaderamente en la construcción de la comunidad. Estrategia de referencia: https://github.com/CloudOrc/SolidUI/discussions/54
  • Contribución del código. Hemos resuelto las tareas simples y fáciles de iniciar en la comunidad, que son muy adecuadas para que los recién llegados contribuyan con código. Consulte la lista de tareas para principiantes: https://github.com/CloudOrc/SolidUI/issues/12
  • Contribución de contenido: publique contenido relacionado con los componentes de código abierto de SolidUI, incluidos, entre otros, tutoriales de instalación e implementación, experiencia de uso, prácticas de casos, etc., en cualquier forma, contribuya al asistente. Por ejemplo: https://github.com/CloudOrc/SolidUI/issues/10
  • Preguntas y respuestas de la comunidad: responda activamente las preguntas de la comunidad, comparta tecnología, ayude a los desarrolladores a resolver problemas, etc.;
  • Otros: participar activamente en las actividades de la comunidad, convertirse en voluntarios de la comunidad, ayudar en la publicidad de la comunidad, brindar sugerencias efectivas para el desarrollo de la comunidad, etc.;

Supongo que te gusta

Origin blog.csdn.net/qq_19968255/article/details/131748216
Recomendado
Clasificación