This is an automated email from the ASF dual-hosted git repository.
wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git
The following commit(s) were added to refs/heads/main by this push:
new c068a5e BIGTOP-4236: Differentiate the API path of platform and auth
platform (#80)
c068a5e is described below
commit c068a5eeafaec5afab7bd39196c39d6e6366a7cb
Author: Zhiguo Wu <[email protected]>
AuthorDate: Fri Sep 27 16:36:40 2024 +0800
BIGTOP-4236: Differentiate the API path of platform and auth platform (#80)
---
...atformAuthorizedPO.java => AuthPlatformPO.java} | 4 +-
.../apache/bigtop/manager/dao/po/ChatThreadPO.java | 3 +
...formAuthorizedDao.java => AuthPlatformDao.java} | 12 +-
.../manager/dao/repository/ChatThreadDao.java | 5 +-
.../bigtop/manager/dao/sql/TableMetaData.java | 3 +-
...AuthorizedMapper.xml => AuthPlatformMapper.xml} | 16 +-
.../resources/mapper/mysql/ChatThreadMapper.xml | 15 +-
...AuthorizedMapper.xml => AuthPlatformMapper.xml} | 16 +-
.../mapper/postgresql/ChatThreadMapper.xml | 14 +-
.../server/controller/ChatbotController.java | 82 ++++----
...edConverter.java => AuthPlatformConverter.java} | 35 +++-
.../server/model/converter/PlatformConverter.java | 2 +
...formAuthorizedDTO.java => AuthPlatformDTO.java} | 14 +-
.../AuthPlatformReq.java} | 23 +--
...atformAuthorizedVO.java => AuthPlatformVO.java} | 8 +-
.../manager/server/model/vo/ChatThreadVO.java | 2 +
.../manager/server/service/ChatbotService.java | 18 +-
.../server/service/impl/ChatbotServiceImpl.java | 226 ++++++++++-----------
.../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 4 +-
.../main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 6 +-
.../server/controller/ChatbotControllerTest.java | 20 +-
21 files changed, 271 insertions(+), 257 deletions(-)
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformAuthorizedPO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java
similarity index 92%
rename from
bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformAuthorizedPO.java
rename to
bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java
index ecd943b..9fbc5b5 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformAuthorizedPO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java
@@ -29,8 +29,8 @@ import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = true)
-@Table(name = "llm_platform_authorized")
-public class PlatformAuthorizedPO extends BasePO implements Serializable {
+@Table(name = "llm_auth_platform")
+public class AuthPlatformPO extends BasePO implements Serializable {
@Id
@Column(name = "id")
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
index 08a9e4b..28e52ea 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
@@ -44,6 +44,9 @@ public class ChatThreadPO extends BasePO implements
Serializable {
@Column(name = "user_id", nullable = false)
private Long userId;
+ @Column(name = "auth_id", nullable = false)
+ private Long authId;
+
@Column(name = "platform_id", nullable = false)
private Long platformId;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformAuthorizedDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/AuthPlatformDao.java
similarity index 71%
rename from
bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformAuthorizedDao.java
rename to
bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/AuthPlatformDao.java
index 46da6ec..b3500e7 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformAuthorizedDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/AuthPlatformDao.java
@@ -18,16 +18,14 @@
*/
package org.apache.bigtop.manager.dao.repository;
-import org.apache.bigtop.manager.dao.po.PlatformAuthorizedPO;
+import org.apache.bigtop.manager.dao.po.AuthPlatformPO;
import org.apache.ibatis.annotations.Param;
-import java.util.List;
+public interface AuthPlatformDao extends BaseDao<AuthPlatformPO> {
+ AuthPlatformPO findByAuthId(@Param("authId") Long authId);
-public interface PlatformAuthorizedDao extends BaseDao<PlatformAuthorizedPO> {
- PlatformAuthorizedPO findByPlatformId(@Param("id") Long platformId);
+ AuthPlatformPO findByPlatformId(@Param("platformId") Long platformId);
- void saveWithCredentials(PlatformAuthorizedPO platformAuthorizedPO);
-
- List<PlatformAuthorizedPO> findAllPlatform();
+ void saveWithCredentials(AuthPlatformPO authPlatformPO);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
index 6c1e70b..f8abe55 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
@@ -29,10 +29,9 @@ public interface ChatThreadDao extends BaseDao<ChatThreadPO>
{
ChatThreadPO findByThreadId(@Param("id") Long id);
- List<ChatThreadPO> findAllByPlatformAuthorizedIdAndUserId(
- @Param("platformId") Long platformAuthorizedId, @Param("userId")
Long userId);
+ List<ChatThreadPO> findAllByAuthIdAndUserId(@Param("authId") Long authId,
@Param("userId") Long userId);
void saveWithThreadInfo(ChatThreadPO chatThreadPO);
- List<ChatThreadPO> findAllByPlatformId(@Param("platformId") Long
platformId);
+ List<ChatThreadPO> findAllByAuthId(@Param("authId") Long authId);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/TableMetaData.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/TableMetaData.java
index a464a81..2323f6f 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/TableMetaData.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/TableMetaData.java
@@ -107,10 +107,9 @@ public class TableMetaData {
? clazz.getAnnotation(Table.class).name()
: CaseUtils.toUnderScoreCase(clazz.getSimpleName());
- // 获取父类字段
+ // Get parents' fields
List<Field> fields = ClassUtils.getFields(clazz);
for (Field field : fields) {
-
if (Modifier.isStatic(field.getModifiers())
|| field.isAnnotationPresent(Transient.class)
|| !BeanUtils.isSimpleValueType(field.getType())) {
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformAuthorizedMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/AuthPlatformMapper.xml
similarity index 70%
rename from
bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformAuthorizedMapper.xml
rename to
bigtop-manager-dao/src/main/resources/mapper/mysql/AuthPlatformMapper.xml
index e9fa2bf..d8b978e 100644
---
a/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformAuthorizedMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/AuthPlatformMapper.xml
@@ -20,26 +20,26 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper
namespace="org.apache.bigtop.manager.dao.repository.PlatformAuthorizedDao">
+<mapper namespace="org.apache.bigtop.manager.dao.repository.AuthPlatformDao">
<sql id="baseColumns">
id, credentials, platfotrm_id
</sql>
- <resultMap id="PlatformAuthorizedResultMap"
type="org.apache.bigtop.manager.dao.po.PlatformAuthorizedPO">
+ <resultMap id="AuthPlatformResultMap"
type="org.apache.bigtop.manager.dao.po.AuthPlatformPO">
<result property="credentials" column="credentials"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
</resultMap>
- <select id="findByPlatformId" resultMap="PlatformAuthorizedResultMap">
- SELECT * FROM llm_platform_authorized WHERE id = #{id} AND is_deleted
= 0
+ <select id="findByAuthId" resultMap="AuthPlatformResultMap">
+ SELECT * FROM llm_auth_platform WHERE id = #{authId} AND is_deleted = 0
</select>
- <select id="findAllPlatform" resultMap="PlatformAuthorizedResultMap">
- SELECT * FROM llm_platform_authorized WHERE is_deleted = 0
+ <select id="findByPlatformId" resultMap="AuthPlatformResultMap">
+ SELECT * FROM llm_auth_platform WHERE platform_id = #{platformId} AND
is_deleted = 0
</select>
- <insert id="saveWithCredentials"
parameterType="org.apache.bigtop.manager.dao.po.PlatformAuthorizedPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_platform_authorized (platform_id, credentials)
+ <insert id="saveWithCredentials"
parameterType="org.apache.bigtop.manager.dao.po.AuthPlatformPO"
useGeneratedKeys="true" keyProperty="id">
+ INSERT INTO llm_auth_platform (platform_id, credentials)
VALUES (#{platformId}, #{credentials,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler})
ON DUPLICATE KEY UPDATE
platform_id = VALUES(platform_id),
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
index adecfc1..0622a6a 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
@@ -22,7 +22,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.apache.bigtop.manager.dao.repository.ChatThreadDao">
<sql id="baseColumns">
- id, user_id, platform_id, model
+ id, user_id, auth_id, platform_id, model
</sql>
<resultMap id="ChatThreadResultMap"
type="org.apache.bigtop.manager.dao.po.ChatThreadPO">
@@ -36,10 +36,10 @@
AND is_deleted = 0
</select>
- <select id="findAllByPlatformAuthorizedIdAndUserId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
+ <select id="findAllByAuthIdAndUserId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
- WHERE platform_id = #{platformId} AND user_id = #{userId} AND
is_deleted = 0
+ WHERE auth_id = #{authId} AND user_id = #{userId} AND is_deleted = 0
</select>
<select id="findByThreadId" resultMap="ChatThreadResultMap">
@@ -47,19 +47,20 @@
</select>
<insert id="saveWithThreadInfo"
parameterType="org.apache.bigtop.manager.dao.po.ChatThreadPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_chat_thread (platform_id, user_id, model, thread_info)
- VALUES (#{platformId}, #{userId}, #{model}, #{threadInfo,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler})
+ INSERT INTO llm_chat_thread (auth_id, platform_id, user_id, model,
thread_info)
+ VALUES (#{authId}, #{platformId}, #{userId}, #{model}, #{threadInfo,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler})
ON DUPLICATE KEY UPDATE
+ auth_id = VALUES(auth_id),
platform_id = VALUES(platform_id),
user_id = VALUES(user_id),
model = VALUES(model),
thread_info = VALUES(thread_info)
</insert>
- <select id="findAllByPlatformId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
+ <select id="findAllByAuthId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
- WHERE platform_id = #{platformId} AND is_deleted = 0
+ WHERE auth_id = #{authId} AND is_deleted = 0
</select>
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/PlatformAuthorizedMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/AuthPlatformMapper.xml
similarity index 68%
rename from
bigtop-manager-dao/src/main/resources/mapper/postgresql/PlatformAuthorizedMapper.xml
rename to
bigtop-manager-dao/src/main/resources/mapper/postgresql/AuthPlatformMapper.xml
index 518d295..4ead82d 100644
---
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/PlatformAuthorizedMapper.xml
+++
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/AuthPlatformMapper.xml
@@ -20,26 +20,26 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper
namespace="org.apache.bigtop.manager.dao.repository.PlatformAuthorizedDao">
+<mapper namespace="org.apache.bigtop.manager.dao.repository.AuthPlatformDao">
<sql id="baseColumns">
id, credentials, platfotrm_id
</sql>
- <resultMap id="PlatformAuthorizedResultMap"
type="org.apache.bigtop.manager.dao.po.PlatformAuthorizedPO">
+ <resultMap id="AuthPlatformResultMap"
type="org.apache.bigtop.manager.dao.po.AuthPlatformPO">
<result property="credentials" column="credentials"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
</resultMap>
- <select id="findByPlatformId" resultMap="PlatformAuthorizedResultMap">
- SELECT * FROM llm_platform_authorized WHERE id = #{id} AND is_deleted
= false
+ <select id="findByAuthId" resultMap="AuthPlatformResultMap">
+ SELECT * FROM llm_auth_platform WHERE id = #{authId} AND is_deleted =
false
</select>
- <select id="findAllPlatform" resultMap="PlatformAuthorizedResultMap">
- SELECT * FROM llm_platform_authorized WHERE is_deleted = false
+ <select id="findByPlatformId" resultMap="AuthPlatformResultMap">
+ SELECT * FROM llm_auth_platform WHERE platform_id = #{platformId} AND
is_deleted = false
</select>
- <insert id="saveWithCredentials"
parameterType="org.apache.bigtop.manager.dao.po.PlatformAuthorizedPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_platform_authorized (platform_id, credentials)
+ <insert id="saveWithCredentials"
parameterType="org.apache.bigtop.manager.dao.po.AuthPlatformPO"
useGeneratedKeys="true" keyProperty="id">
+ INSERT INTO llm_auth_platform (platform_id, credentials)
VALUES (#{platformId}, #{credentials,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler}::json)
</insert>
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
index a742bed..2aa96da 100644
---
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
+++
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
@@ -22,7 +22,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.apache.bigtop.manager.dao.repository.ChatThreadDao">
<sql id="baseColumns">
- id, user_id, platform_id, model
+ id, user_id, auth_id, platform_id, model
</sql>
<resultMap id="ChatThreadResultMap"
type="org.apache.bigtop.manager.dao.po.ChatThreadPO">
@@ -36,10 +36,10 @@
AND is_deleted = false
</select>
- <select id="findAllByPlatformAuthorizedIdAndUserId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
+ <select id="findAllByAuthIdAndUserId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
- WHERE platform_id = #{platformId} AND user_id = #{userId} AND
is_deleted = false
+ WHERE auth_id = #{authId} AND user_id = #{userId} AND is_deleted =
false
</select>
<select id="findByThreadId" resultMap="ChatThreadResultMap">
@@ -47,14 +47,14 @@
</select>
<insert id="saveWithThreadInfo"
parameterType="org.apache.bigtop.manager.dao.po.ChatThreadPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_chat_thread (platform_id, user_id, model, thread_info)
- VALUES (#{platformId}, #{userId}, #{model}, #{threadInfo,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler}::json)
+ INSERT INTO llm_chat_thread (auth_id, platform_id, user_id, model,
thread_info)
+ VALUES (#{authId}, #{platformId}, #{userId}, #{model}, #{threadInfo,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler}::json)
</insert>
- <select id="findAllByPlatformId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
+ <select id="findAllByAuthId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
- WHERE platform_id = #{platformId} AND is_deleted = false
+ WHERE auth_id = #{authId} AND is_deleted = false
</select>
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java
index c09680a..6d42d7e 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java
@@ -18,14 +18,14 @@
*/
package org.apache.bigtop.manager.server.controller;
-import org.apache.bigtop.manager.server.model.converter.PlatformConverter;
-import org.apache.bigtop.manager.server.model.dto.PlatformDTO;
+import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter;
+import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO;
+import org.apache.bigtop.manager.server.model.req.AuthPlatformReq;
import org.apache.bigtop.manager.server.model.req.ChatbotMessageReq;
-import org.apache.bigtop.manager.server.model.req.PlatformReq;
+import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO;
import org.apache.bigtop.manager.server.model.vo.ChatMessageVO;
import org.apache.bigtop.manager.server.model.vo.ChatThreadVO;
import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO;
-import org.apache.bigtop.manager.server.model.vo.PlatformAuthorizedVO;
import org.apache.bigtop.manager.server.model.vo.PlatformVO;
import org.apache.bigtop.manager.server.service.ChatbotService;
import org.apache.bigtop.manager.server.utils.ResponseEntity;
@@ -34,7 +34,6 @@ import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -55,66 +54,65 @@ public class ChatbotController {
@Resource
private ChatbotService chatbotService;
- @Operation(summary = "platforms", description = "Get all platforms")
+ @Operation(summary = "get platforms", description = "Get all platforms")
@GetMapping("/platforms")
public ResponseEntity<List<PlatformVO>> platforms() {
return ResponseEntity.success(chatbotService.platforms());
}
- @Operation(summary = "platforms", description = "Get authorized platforms")
- @GetMapping("/platforms/authorized")
- public ResponseEntity<List<PlatformAuthorizedVO>> authorizedPlatforms() {
- return ResponseEntity.success(chatbotService.authorizedPlatforms());
+ @Operation(summary = "platform credentials", description = "Get platform
auth credentials")
+ @GetMapping("/platforms/{platformId}/auth-credentials")
+ public ResponseEntity<List<PlatformAuthCredentialVO>>
platformsAuthCredential(@PathVariable Long platformId) {
+ return
ResponseEntity.success(chatbotService.platformsAuthCredentials(platformId));
}
- @Operation(summary = "platforms", description = "Get platform auth
credentials")
- @GetMapping("/platforms/{platformId}/auth/credential")
- public ResponseEntity<List<PlatformAuthCredentialVO>>
platformsAuthCredential(@PathVariable Long platformId) {
- return
ResponseEntity.success(chatbotService.platformsAuthCredential(platformId));
+ @Operation(summary = "get auth platforms", description = "Get authorized
platforms")
+ @GetMapping("/auth-platforms")
+ public ResponseEntity<List<AuthPlatformVO>> authorizedPlatforms() {
+ return ResponseEntity.success(chatbotService.authorizedPlatforms());
}
- @Operation(summary = "platforms", description = "Add authorized platforms")
- @PutMapping("/platforms")
- public ResponseEntity<PlatformAuthorizedVO>
addAuthorizedPlatform(@RequestBody PlatformReq platformReq) {
- PlatformDTO platformDTO =
PlatformConverter.INSTANCE.fromReq2DTO(platformReq);
- return
ResponseEntity.success(chatbotService.addAuthorizedPlatform(platformDTO));
+ @Operation(summary = "auth platform", description = "Add authorized
platforms")
+ @PostMapping("/auth-platforms")
+ public ResponseEntity<AuthPlatformVO> addAuthorizedPlatform(@RequestBody
AuthPlatformReq authPlatformReq) {
+ AuthPlatformDTO authPlatformDTO =
AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq);
+ return
ResponseEntity.success(chatbotService.addAuthorizedPlatform(authPlatformDTO));
}
- @Operation(summary = "platforms", description = "Delete authorized
platforms")
- @DeleteMapping("/platforms/{platformId}")
- public ResponseEntity<Boolean> deleteAuthorizedPlatform(@PathVariable Long
platformId) {
- return
ResponseEntity.success(chatbotService.deleteAuthorizedPlatform(platformId));
+ @Operation(summary = "delete auth platform", description = "Delete
authorized platforms")
+ @DeleteMapping("/auth-platforms/{authId}")
+ public ResponseEntity<Boolean> deleteAuthorizedPlatform(@PathVariable Long
authId) {
+ return
ResponseEntity.success(chatbotService.deleteAuthorizedPlatform(authId));
}
- @Operation(summary = "new threads", description = "Create a chat threads")
- @PutMapping("/platforms/{platformId}/threads")
- public ResponseEntity<ChatThreadVO> createChatThreads(@PathVariable Long
platformId, @RequestParam String model) {
- return
ResponseEntity.success(chatbotService.createChatThreads(platformId, model));
+ @Operation(summary = "new thread", description = "Create a chat threads")
+ @PostMapping("/auth-platforms/{authId}/threads")
+ public ResponseEntity<ChatThreadVO> createChatThreads(@PathVariable Long
authId, @RequestParam String model) {
+ return ResponseEntity.success(chatbotService.createChatThreads(authId,
model));
}
- @Operation(summary = "delete threads", description = "Delete a chat
threads")
- @DeleteMapping("platforms/{platformId}/threads/{threadId}")
- public ResponseEntity<Boolean> deleteChatThreads(@PathVariable Long
platformId, @PathVariable Long threadId) {
- return
ResponseEntity.success(chatbotService.deleteChatThreads(platformId, threadId));
+ @Operation(summary = "delete thread", description = "Delete a chat
threads")
+ @DeleteMapping("/auth-platforms/{authId}/threads/{threadId}")
+ public ResponseEntity<Boolean> deleteChatThreads(@PathVariable Long
authId, @PathVariable Long threadId) {
+ return ResponseEntity.success(chatbotService.deleteChatThreads(authId,
threadId));
}
- @Operation(summary = "get", description = "Get all threads of a platform")
- @GetMapping("platforms/{platformId}/threads")
- public ResponseEntity<List<ChatThreadVO>> getAllChatThreads(
- @PathVariable Long platformId, @RequestParam String model) {
- return
ResponseEntity.success(chatbotService.getAllChatThreads(platformId, model));
+ @Operation(summary = "get threads", description = "Get all threads of a
auth platform")
+ @GetMapping("/auth-platforms/{authId}/threads")
+ public ResponseEntity<List<ChatThreadVO>> getAllChatThreads(@PathVariable
Long authId, @RequestParam String model) {
+ return ResponseEntity.success(chatbotService.getAllChatThreads(authId,
model));
}
@Operation(summary = "talk", description = "Talk with Chatbot")
- @PostMapping("platforms/{platformId}/threads/{threadId}/talk")
+ @PostMapping("/auth-platforms/{authId}/threads/{threadId}/talk")
public SseEmitter talk(
- @PathVariable Long platformId, @PathVariable Long threadId,
@RequestBody ChatbotMessageReq messageReq) {
- return chatbotService.talk(platformId, threadId,
messageReq.getMessage());
+ @PathVariable Long authId, @PathVariable Long threadId,
@RequestBody ChatbotMessageReq messageReq) {
+ return chatbotService.talk(authId, threadId, messageReq.getMessage());
}
@Operation(summary = "history", description = "Get chat records")
- @GetMapping("platforms/{platformId}/threads/{threadId}/history")
- public ResponseEntity<List<ChatMessageVO>> history(@PathVariable Long
platformId, @PathVariable Long threadId) {
- return ResponseEntity.success(chatbotService.history(platformId,
threadId));
+ @GetMapping("/auth-platforms/{authId}/threads/{threadId}/history")
+ public ResponseEntity<List<ChatMessageVO>> history(@PathVariable Long
authId, @PathVariable Long threadId) {
+ return ResponseEntity.success(chatbotService.history(authId,
threadId));
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformAuthorizedConverter.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java
similarity index 50%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformAuthorizedConverter.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java
index 2e3c87a..a6ea344 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformAuthorizedConverter.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java
@@ -18,22 +18,45 @@
*/
package org.apache.bigtop.manager.server.model.converter;
-import org.apache.bigtop.manager.dao.po.PlatformAuthorizedPO;
+import org.apache.bigtop.manager.dao.po.AuthPlatformPO;
import org.apache.bigtop.manager.dao.po.PlatformPO;
import org.apache.bigtop.manager.server.config.MapStructSharedConfig;
-import org.apache.bigtop.manager.server.model.vo.PlatformAuthorizedVO;
+import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO;
+import org.apache.bigtop.manager.server.model.req.AuthCredentialReq;
+import org.apache.bigtop.manager.server.model.req.AuthPlatformReq;
+import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO;
+import org.mapstruct.AfterMapping;
import org.mapstruct.Context;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
+import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
@Mapper(config = MapStructSharedConfig.class)
-public interface PlatformAuthorizedConverter {
- PlatformAuthorizedConverter INSTANCE =
Mappers.getMapper(PlatformAuthorizedConverter.class);
+public interface AuthPlatformConverter {
+ AuthPlatformConverter INSTANCE =
Mappers.getMapper(AuthPlatformConverter.class);
- @Mapping(target = "platformId", source = "id")
@Mapping(target = "supportModels", expression =
"java(platformPO.getSupportModels())")
@Mapping(target = "platformName", expression =
"java(platformPO.getName())")
- PlatformAuthorizedVO fromPO2VO(PlatformAuthorizedPO platformAuthorizedPO,
@Context PlatformPO platformPO);
+ AuthPlatformVO fromPO2VO(AuthPlatformPO authPlatformPO, @Context
PlatformPO platformPO);
+
+ AuthPlatformDTO fromReq2DTO(AuthPlatformReq authPlatformReq);
+
+ default Map<String, String> mapAuthCredentials(List<AuthCredentialReq>
authCredentials) {
+ if (authCredentials == null) {
+ return null;
+ }
+ return authCredentials.stream()
+ .collect(Collectors.toMap(AuthCredentialReq::getKey,
AuthCredentialReq::getValue));
+ }
+
+ @AfterMapping
+ default void afterMapping(@MappingTarget AuthPlatformDTO authPlatformDTO,
AuthPlatformReq authPlatformReq) {
+
authPlatformDTO.setAuthCredentials(mapAuthCredentials(authPlatformReq.getAuthCredentials()));
+ }
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
index 85b6e15..0ee4285 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
@@ -42,6 +42,8 @@ public interface PlatformConverter {
PlatformVO fromPO2VO(PlatformPO platformPO);
+ List<PlatformVO> fromPO2VO(List<PlatformPO> platformPOList);
+
default Map<String, String> mapAuthCredentials(List<AuthCredentialReq>
authCredentials) {
if (authCredentials == null) {
return null;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PlatformAuthorizedDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java
similarity index 72%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PlatformAuthorizedDTO.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java
index da6cb1f..4706385 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PlatformAuthorizedDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java
@@ -23,14 +23,10 @@ import lombok.Data;
import java.util.Map;
@Data
-public class PlatformAuthorizedDTO {
- private String platformName;
- private String model;
- private Map<String, String> credentials;
+public class AuthPlatformDTO {
+ private Long id;
- public PlatformAuthorizedDTO(String name, Map<String, String>
credentialSet, String model) {
- this.platformName = name;
- this.credentials = credentialSet;
- this.model = model;
- }
+ private Long platformId;
+
+ private Map<String, String> authCredentials;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthorizedVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java
similarity index 69%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthorizedVO.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java
index 3532cf6..77047bf 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthorizedVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java
@@ -16,23 +16,20 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.model.vo;
+package org.apache.bigtop.manager.server.model.req;
import lombok.Data;
-@Data
-public class PlatformAuthorizedVO {
- private Long platformId;
-
- private String platformName;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
- private String supportModels;
+@Data
+public class AuthPlatformReq {
+ private Long id;
- public PlatformAuthorizedVO(long platformId, String name, String models) {
- this.platformId = platformId;
- this.platformName = name;
- this.supportModels = models;
- }
+ @NotEmpty
+ private Long platformId;
- public PlatformAuthorizedVO() {}
+ @NotEmpty
+ private List<AuthCredentialReq> authCredentials;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthorizedVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java
similarity index 87%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthorizedVO.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java
index 3532cf6..a1a4c36 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthorizedVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java
@@ -21,18 +21,20 @@ package org.apache.bigtop.manager.server.model.vo;
import lombok.Data;
@Data
-public class PlatformAuthorizedVO {
+public class AuthPlatformVO {
+ private Long id;
+
private Long platformId;
private String platformName;
private String supportModels;
- public PlatformAuthorizedVO(long platformId, String name, String models) {
+ public AuthPlatformVO(long platformId, String name, String models) {
this.platformId = platformId;
this.platformName = name;
this.supportModels = models;
}
- public PlatformAuthorizedVO() {}
+ public AuthPlatformVO() {}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ChatThreadVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ChatThreadVO.java
index c5f84a9..9232b01 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ChatThreadVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ChatThreadVO.java
@@ -24,6 +24,8 @@ import lombok.Data;
public class ChatThreadVO {
private Long threadId;
+ private Long authId;
+
private Long platformId;
private String model;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java
index 19a9994..8d65c97 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java
@@ -18,11 +18,11 @@
*/
package org.apache.bigtop.manager.server.service;
-import org.apache.bigtop.manager.server.model.dto.PlatformDTO;
+import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO;
+import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO;
import org.apache.bigtop.manager.server.model.vo.ChatMessageVO;
import org.apache.bigtop.manager.server.model.vo.ChatThreadVO;
import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO;
-import org.apache.bigtop.manager.server.model.vo.PlatformAuthorizedVO;
import org.apache.bigtop.manager.server.model.vo.PlatformVO;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
@@ -33,21 +33,21 @@ public interface ChatbotService {
List<PlatformVO> platforms();
- List<PlatformAuthorizedVO> authorizedPlatforms();
+ List<PlatformAuthCredentialVO> platformsAuthCredentials(Long platformId);
- PlatformAuthorizedVO addAuthorizedPlatform(PlatformDTO platformDTO);
+ List<AuthPlatformVO> authorizedPlatforms();
- List<PlatformAuthCredentialVO> platformsAuthCredential(Long platformId);
+ AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO);
- boolean deleteAuthorizedPlatform(Long platformId);
+ boolean deleteAuthorizedPlatform(Long authId);
- ChatThreadVO createChatThreads(Long platformId, String model);
+ ChatThreadVO createChatThreads(Long authId, String model);
- boolean deleteChatThreads(Long platformId, Long threadId);
+ boolean deleteChatThreads(Long authId, Long threadId);
List<ChatThreadVO> getAllChatThreads(Long platformId, String model);
- SseEmitter talk(Long platformId, Long threadId, String message);
+ SseEmitter talk(Long authId, Long threadId, String message);
List<ChatMessageVO> history(Long platformId, Long threadId);
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
index 0c49abc..ee8ea0d 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
@@ -25,27 +25,26 @@ import org.apache.bigtop.manager.ai.core.enums.MessageType;
import org.apache.bigtop.manager.ai.core.enums.PlatformType;
import org.apache.bigtop.manager.ai.core.factory.AIAssistant;
import org.apache.bigtop.manager.ai.core.factory.AIAssistantFactory;
+import org.apache.bigtop.manager.dao.po.AuthPlatformPO;
import org.apache.bigtop.manager.dao.po.ChatMessagePO;
import org.apache.bigtop.manager.dao.po.ChatThreadPO;
-import org.apache.bigtop.manager.dao.po.PlatformAuthorizedPO;
import org.apache.bigtop.manager.dao.po.PlatformPO;
+import org.apache.bigtop.manager.dao.repository.AuthPlatformDao;
import org.apache.bigtop.manager.dao.repository.ChatMessageDao;
import org.apache.bigtop.manager.dao.repository.ChatThreadDao;
-import org.apache.bigtop.manager.dao.repository.PlatformAuthorizedDao;
import org.apache.bigtop.manager.dao.repository.PlatformDao;
import org.apache.bigtop.manager.server.enums.ApiExceptionEnum;
import org.apache.bigtop.manager.server.exception.ApiException;
import org.apache.bigtop.manager.server.holder.SessionUserHolder;
+import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter;
import org.apache.bigtop.manager.server.model.converter.ChatMessageConverter;
import org.apache.bigtop.manager.server.model.converter.ChatThreadConverter;
-import
org.apache.bigtop.manager.server.model.converter.PlatformAuthorizedConverter;
import org.apache.bigtop.manager.server.model.converter.PlatformConverter;
-import org.apache.bigtop.manager.server.model.dto.PlatformAuthorizedDTO;
-import org.apache.bigtop.manager.server.model.dto.PlatformDTO;
+import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO;
+import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO;
import org.apache.bigtop.manager.server.model.vo.ChatMessageVO;
import org.apache.bigtop.manager.server.model.vo.ChatThreadVO;
import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO;
-import org.apache.bigtop.manager.server.model.vo.PlatformAuthorizedVO;
import org.apache.bigtop.manager.server.model.vo.PlatformVO;
import org.apache.bigtop.manager.server.service.ChatbotService;
@@ -71,7 +70,7 @@ public class ChatbotServiceImpl implements ChatbotService {
private PlatformDao platformDao;
@Resource
- private PlatformAuthorizedDao platformAuthorizedDao;
+ private AuthPlatformDao authPlatformDao;
@Resource
private ChatThreadDao chatThreadDao;
@@ -90,11 +89,11 @@ public class ChatbotServiceImpl implements ChatbotService {
}
private AIAssistantConfig getAIAssistantConfig(
- PlatformAuthorizedDTO platformAuthorizedDTO, Map<String, String>
configs) {
+ String model, Map<String, String> credentials, Map<String, String>
configs) {
return AIAssistantConfig.builder()
- .setModel(platformAuthorizedDTO.getModel())
+ .setModel(model)
.setLanguage(LocaleContextHolder.getLocale().toString())
- .addCredentials(platformAuthorizedDTO.getCredentials())
+ .addCredentials(credentials)
.addConfigs(configs)
.build();
}
@@ -104,19 +103,18 @@ public class ChatbotServiceImpl implements ChatbotService
{
}
private AIAssistant buildAIAssistant(
- PlatformAuthorizedDTO platformAuthorizedDTO, Long threadId,
Map<String, String> configs) {
+ String platformName,
+ String model,
+ Map<String, String> credentials,
+ Long threadId,
+ Map<String, String> configs) {
return getAIAssistantFactory()
- .create(
-
getPlatformType(platformAuthorizedDTO.getPlatformName()),
- getAIAssistantConfig(platformAuthorizedDTO, configs),
- threadId);
+ .create(getPlatformType(platformName),
getAIAssistantConfig(model, credentials, configs), threadId);
}
- private Boolean testAuthorization(PlatformAuthorizedDTO
platformAuthorizedDTO) {
+ private Boolean testAuthorization(String platformName, String model,
Map<String, String> credentials) {
AIAssistant aiAssistant = getAIAssistantFactory()
- .create(
-
getPlatformType(platformAuthorizedDTO.getPlatformName()),
- getAIAssistantConfig(platformAuthorizedDTO, null));
+ .create(getPlatformType(platformName),
getAIAssistantConfig(model, credentials, null));
try {
return aiAssistant.test();
} catch (Exception e) {
@@ -127,61 +125,73 @@ public class ChatbotServiceImpl implements ChatbotService
{
@Override
public List<PlatformVO> platforms() {
List<PlatformPO> platformPOs = platformDao.findAll();
- List<PlatformVO> platforms = new ArrayList<>();
- for (PlatformPO platformPO : platformPOs) {
- platforms.add(PlatformConverter.INSTANCE.fromPO2VO(platformPO));
+ return PlatformConverter.INSTANCE.fromPO2VO(platformPOs);
+ }
+
+ @Override
+ public List<PlatformAuthCredentialVO> platformsAuthCredentials(Long
platformId) {
+ PlatformPO platformPO = platformDao.findByPlatformId(platformId);
+ if (platformPO == null) {
+ throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
- return platforms;
+ List<PlatformAuthCredentialVO> platformAuthCredentialVOs = new
ArrayList<>();
+ for (String key : platformPO.getCredential().keySet()) {
+ PlatformAuthCredentialVO platformAuthCredentialVO =
+ new PlatformAuthCredentialVO(key,
platformPO.getCredential().get(key));
+ platformAuthCredentialVOs.add(platformAuthCredentialVO);
+ }
+ return platformAuthCredentialVOs;
}
@Override
- public List<PlatformAuthorizedVO> authorizedPlatforms() {
- List<PlatformAuthorizedVO> authorizedPlatforms = new ArrayList<>();
- List<PlatformAuthorizedPO> authorizedPlatformPOs =
platformAuthorizedDao.findAllPlatform();
- for (PlatformAuthorizedPO authorizedPlatformPO :
authorizedPlatformPOs) {
- PlatformPO platformPO =
platformDao.findById(authorizedPlatformPO.getPlatformId());
-
authorizedPlatforms.add(PlatformAuthorizedConverter.INSTANCE.fromPO2VO(authorizedPlatformPO,
platformPO));
+ public List<AuthPlatformVO> authorizedPlatforms() {
+ List<AuthPlatformVO> authorizedPlatforms = new ArrayList<>();
+ List<AuthPlatformPO> authPlatformPOList = authPlatformDao.findAll();
+ for (AuthPlatformPO authPlatformPO : authPlatformPOList) {
+ if (authPlatformPO.getIsDeleted()) {
+ continue;
+ }
+
+ PlatformPO platformPO =
platformDao.findById(authPlatformPO.getPlatformId());
+
authorizedPlatforms.add(AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO,
platformPO));
}
return authorizedPlatforms;
}
@Override
- public PlatformAuthorizedVO addAuthorizedPlatform(PlatformDTO platformDTO)
{
- PlatformPO platformPO =
platformDao.findByPlatformId(platformDTO.getPlatformId());
+ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO
authPlatformDTO) {
+ PlatformPO platformPO =
platformDao.findByPlatformId(authPlatformDTO.getPlatformId());
if (platformPO == null) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
- Map<String, String> credentialSet = getStringMap(platformDTO,
platformPO);
+ Map<String, String> credentialSet = getStringMap(authPlatformDTO,
platformPO);
List<String> models =
List.of(platformPO.getSupportModels().split(","));
if (models.isEmpty()) {
throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED);
}
- PlatformAuthorizedDTO platformAuthorizedDTO =
- new PlatformAuthorizedDTO(platformPO.getName(), credentialSet,
models.get(0));
- if (!testAuthorization(platformAuthorizedDTO)) {
+ if (!testAuthorization(platformPO.getName(), models.get(0),
credentialSet)) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
- PlatformAuthorizedPO platformAuthorizedPO = new PlatformAuthorizedPO();
- platformAuthorizedPO.setCredentials(credentialSet);
- platformAuthorizedPO.setPlatformId(platformPO.getId());
+ AuthPlatformPO authPlatformPO = new AuthPlatformPO();
+ authPlatformPO.setCredentials(credentialSet);
+ authPlatformPO.setPlatformId(platformPO.getId());
- platformAuthorizedDao.saveWithCredentials(platformAuthorizedPO);
- PlatformAuthorizedVO platformAuthorizedVO =
-
PlatformAuthorizedConverter.INSTANCE.fromPO2VO(platformAuthorizedPO,
platformPO);
- platformAuthorizedVO.setSupportModels(platformPO.getSupportModels());
- platformAuthorizedVO.setPlatformName(platformPO.getName());
- return platformAuthorizedVO;
+ authPlatformDao.saveWithCredentials(authPlatformPO);
+ AuthPlatformVO authPlatformVO =
AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO);
+ authPlatformVO.setSupportModels(platformPO.getSupportModels());
+ authPlatformVO.setPlatformName(platformPO.getName());
+ return authPlatformVO;
}
- private static @NotNull Map<String, String> getStringMap(PlatformDTO
platformDTO, PlatformPO platformPO) {
+ private static @NotNull Map<String, String> getStringMap(AuthPlatformDTO
authPlatformDTO, PlatformPO platformPO) {
if (platformPO == null) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
Map<String, String> credentialNeed = platformPO.getCredential();
- Map<String, String> credentialGet = platformDTO.getAuthCredentials();
+ Map<String, String> credentialGet =
authPlatformDTO.getAuthCredentials();
Map<String, String> credentialSet = new HashMap<>();
for (String key : credentialNeed.keySet()) {
if (!credentialGet.containsKey(key)) {
@@ -193,56 +203,37 @@ public class ChatbotServiceImpl implements ChatbotService
{
}
@Override
- public List<PlatformAuthCredentialVO> platformsAuthCredential(Long
platformId) {
- PlatformPO platformPO = platformDao.findByPlatformId(platformId);
- if (platformPO == null) {
- throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
- }
- List<PlatformAuthCredentialVO> platformAuthCredentialVOs = new
ArrayList<>();
- for (String key : platformPO.getCredential().keySet()) {
- PlatformAuthCredentialVO platformAuthCredentialVO =
- new PlatformAuthCredentialVO(key,
platformPO.getCredential().get(key));
- platformAuthCredentialVOs.add(platformAuthCredentialVO);
+ public boolean deleteAuthorizedPlatform(Long authId) {
+ AuthPlatformPO authPlatformPO = authPlatformDao.findByAuthId(authId);
+ if (authPlatformPO == null) {
+ throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED);
}
- return platformAuthCredentialVOs;
- }
- @Override
- public boolean deleteAuthorizedPlatform(Long platformId) {
- List<PlatformAuthorizedPO> authorizedPlatformPOs =
platformAuthorizedDao.findAllPlatform();
- for (PlatformAuthorizedPO authorizedPlatformPO :
authorizedPlatformPOs) {
- if (authorizedPlatformPO.getId().equals(platformId)) {
- authorizedPlatformPO.setIsDeleted(true);
- platformAuthorizedDao.partialUpdateById(authorizedPlatformPO);
- List<ChatThreadPO> chatThreadPOS =
chatThreadDao.findAllByPlatformId(authorizedPlatformPO.getId());
- if (chatThreadPOS.isEmpty()) {
- return true;
- }
- chatThreadPOS.forEach(chatThread ->
chatThread.setIsDeleted(true));
- chatThreadDao.partialUpdateByIds(chatThreadPOS);
- for (ChatThreadPO chatThreadPO : chatThreadPOS) {
- List<ChatMessagePO> chatMessagePOS =
chatMessageDao.findAllByThreadId(chatThreadPO.getId());
- if (chatMessagePOS.isEmpty()) {
- return true;
- }
- chatMessagePOS.forEach(chatMessage ->
chatMessage.setIsDeleted(true));
- chatMessageDao.partialUpdateByIds(chatMessagePOS);
- }
- return true;
+ authPlatformPO.setIsDeleted(true);
+ authPlatformDao.partialUpdateById(authPlatformPO);
+
+ List<ChatThreadPO> chatThreadPOS =
chatThreadDao.findAllByAuthId(authPlatformPO.getId());
+ for (ChatThreadPO chatThreadPO : chatThreadPOS) {
+ chatThreadPO.setIsDeleted(true);
+ chatThreadDao.partialUpdateById(chatThreadPO);
+ List<ChatMessagePO> chatMessagePOS =
chatMessageDao.findAllByThreadId(chatThreadPO.getId());
+ for (ChatMessagePO chatMessagePO : chatMessagePOS) {
+ chatMessagePO.setIsDeleted(true);
+ chatMessageDao.partialUpdateById(chatMessagePO);
}
}
- throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
+ return true;
}
@Override
- public ChatThreadVO createChatThreads(Long platformId, String model) {
- PlatformAuthorizedPO platformAuthorizedPO =
platformAuthorizedDao.findByPlatformId(platformId);
- if (platformAuthorizedPO == null) {
- throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
+ public ChatThreadVO createChatThreads(Long authId, String model) {
+ AuthPlatformPO authPlatformPO = authPlatformDao.findByAuthId(authId);
+ if (authPlatformPO == null) {
+ throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED);
}
Long userId = SessionUserHolder.getUserId();
- PlatformPO platformPO =
platformDao.findByPlatformId(platformAuthorizedPO.getPlatformId());
+ PlatformPO platformPO =
platformDao.findByPlatformId(authPlatformPO.getPlatformId());
List<String> supportModels =
List.of(platformPO.getSupportModels().split(","));
if (!supportModels.contains(model)) {
throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED);
@@ -250,11 +241,11 @@ public class ChatbotServiceImpl implements ChatbotService
{
ChatThreadPO chatThreadPO = new ChatThreadPO();
chatThreadPO.setUserId(userId);
chatThreadPO.setModel(model);
- chatThreadPO.setPlatformId(platformAuthorizedPO.getId());
+ chatThreadPO.setAuthId(authPlatformPO.getId());
+ chatThreadPO.setPlatformId(authPlatformPO.getPlatformId());
- PlatformAuthorizedDTO platformAuthorizedDTO = new
PlatformAuthorizedDTO(
- platformPO.getName(), platformAuthorizedPO.getCredentials(),
chatThreadPO.getModel());
- AIAssistant aiAssistant = buildAIAssistant(platformAuthorizedDTO,
null, null);
+ AIAssistant aiAssistant = buildAIAssistant(
+ platformPO.getName(), chatThreadPO.getModel(),
authPlatformPO.getCredentials(), null, null);
Map<String, String> threadInfo = aiAssistant.createThread();
chatThreadPO.setThreadInfo(threadInfo);
chatThreadDao.saveWithThreadInfo(chatThreadPO);
@@ -262,30 +253,27 @@ public class ChatbotServiceImpl implements ChatbotService
{
}
@Override
- public boolean deleteChatThreads(Long platformId, Long threadId) {
- Long userId = SessionUserHolder.getUserId();
- List<ChatThreadPO> chatThreadPOS =
chatThreadDao.findAllByUserId(userId);
- for (ChatThreadPO chatThreadPO : chatThreadPOS) {
- if (chatThreadPO.getId().equals(threadId)
- && chatThreadPO.getPlatformId().equals(platformId)) {
- chatThreadPO.setIsDeleted(true);
- chatThreadDao.partialUpdateById(chatThreadPO);
- List<ChatMessagePO> chatMessagePOS =
chatMessageDao.findAllByThreadId(threadId);
- if (chatMessagePOS.isEmpty()) {
- return true;
- }
- chatMessagePOS.forEach(chatMessage ->
chatMessage.setIsDeleted(true));
- chatMessageDao.partialUpdateByIds(chatMessagePOS);
- return true;
- }
+ public boolean deleteChatThreads(Long authId, Long threadId) {
+ ChatThreadPO chatThreadPO = chatThreadDao.findById(threadId);
+ if (chatThreadPO == null) {
+ throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND);
}
- throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND);
+
+ chatThreadPO.setIsDeleted(true);
+ chatThreadDao.partialUpdateById(chatThreadPO);
+ List<ChatMessagePO> chatMessagePOS =
chatMessageDao.findAllByThreadId(threadId);
+ for (ChatMessagePO chatMessagePO : chatMessagePOS) {
+ chatMessagePO.setIsDeleted(true);
+ chatMessageDao.partialUpdateById(chatMessagePO);
+ }
+
+ return true;
}
@Override
- public List<ChatThreadVO> getAllChatThreads(Long platformId, String model)
{
+ public List<ChatThreadVO> getAllChatThreads(Long authId, String model) {
Long userId = SessionUserHolder.getUserId();
- List<ChatThreadPO> chatThreadPOS =
chatThreadDao.findAllByPlatformAuthorizedIdAndUserId(platformId, userId);
+ List<ChatThreadPO> chatThreadPOS =
chatThreadDao.findAllByAuthIdAndUserId(authId, userId);
List<ChatThreadVO> chatThreads = new ArrayList<>();
for (ChatThreadPO chatThreadPO : chatThreadPOS) {
ChatThreadVO chatThreadVO =
ChatThreadConverter.INSTANCE.fromPO2VO(chatThreadPO);
@@ -297,22 +285,24 @@ public class ChatbotServiceImpl implements ChatbotService
{
}
@Override
- public SseEmitter talk(Long platformId, Long threadId, String message) {
+ public SseEmitter talk(Long authId, Long threadId, String message) {
ChatThreadPO chatThreadPO = chatThreadDao.findByThreadId(threadId);
Long userId = SessionUserHolder.getUserId();
if (!Objects.equals(userId, chatThreadPO.getUserId())) {
throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND);
}
- PlatformAuthorizedPO platformAuthorizedPO =
platformAuthorizedDao.findByPlatformId(platformId);
- if (platformAuthorizedPO == null) {
+ AuthPlatformPO authPlatformPO = authPlatformDao.findByAuthId(authId);
+ if (authPlatformPO == null) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED);
}
- PlatformPO platformPO =
platformDao.findById(platformAuthorizedPO.getPlatformId());
- PlatformAuthorizedDTO platformAuthorizedDTO = new
PlatformAuthorizedDTO(
- platformPO.getName(), platformAuthorizedPO.getCredentials(),
chatThreadPO.getModel());
- AIAssistant aiAssistant =
- buildAIAssistant(platformAuthorizedDTO, chatThreadPO.getId(),
chatThreadPO.getThreadInfo());
+ PlatformPO platformPO =
platformDao.findById(authPlatformPO.getPlatformId());
+ AIAssistant aiAssistant = buildAIAssistant(
+ platformPO.getName(),
+ chatThreadPO.getModel(),
+ authPlatformPO.getCredentials(),
+ chatThreadPO.getId(),
+ chatThreadPO.getThreadInfo());
Flux<String> stringFlux = aiAssistant.streamAsk(message);
SseEmitter emitter = new SseEmitter();
@@ -332,7 +322,7 @@ public class ChatbotServiceImpl implements ChatbotService {
}
@Override
- public List<ChatMessageVO> history(Long platformId, Long threadId) {
+ public List<ChatMessageVO> history(Long authId, Long threadId) {
List<ChatMessageVO> chatMessages = new ArrayList<>();
ChatThreadPO chatThreadPO = chatThreadDao.findByThreadId(threadId);
if (chatThreadPO == null) {
diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
index dc67ea7..8a0bf67 100644
--- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
@@ -323,7 +323,7 @@ CREATE TABLE `llm_platform`
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE `llm_platform_authorized`
+CREATE TABLE `llm_auth_platform`
(
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`platform_id` BIGINT(20) UNSIGNED NOT NULL,
@@ -340,6 +340,7 @@ CREATE TABLE `llm_platform_authorized`
CREATE TABLE `llm_chat_thread`
(
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+ `auth_id` BIGINT(20) UNSIGNED NOT NULL,
`platform_id` BIGINT(20) UNSIGNED NOT NULL,
`user_id` BIGINT(20) UNSIGNED NOT NULL,
`model` VARCHAR(255) NOT NULL,
@@ -350,6 +351,7 @@ CREATE TABLE `llm_chat_thread`
`create_by` BIGINT DEFAULT NULL,
`update_by` BIGINT DEFAULT NULL,
PRIMARY KEY (`id`),
+ KEY `idx_auth_id` (`auth_id`),
KEY `idx_platform_id` (`platform_id`),
KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
diff --git
a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
index 8ae2493..61099d7 100644
--- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
@@ -333,7 +333,7 @@ CREATE TABLE llm_platform
PRIMARY KEY (id)
);
-CREATE TABLE llm_platform_authorized
+CREATE TABLE llm_auth_platform
(
id BIGINT CHECK (id > 0) NOT NULL GENERATED ALWAYS AS
IDENTITY,
platform_id BIGINT CHECK (platform_id > 0) NOT NULL,
@@ -346,11 +346,12 @@ CREATE TABLE llm_platform_authorized
PRIMARY KEY (id)
);
-CREATE INDEX idx_authorized_platform_id ON llm_platform_authorized
(platform_id);
+CREATE INDEX idx_authorized_platform_id ON llm_auth_platform (platform_id);
CREATE TABLE llm_chat_thread
(
id BIGINT CHECK (id > 0) NOT NULL GENERATED ALWAYS AS
IDENTITY,
+ auth_id BIGINT CHECK (auth_id > 0) NOT NULL,
platform_id BIGINT CHECK (platform_id > 0) NOT NULL,
user_id BIGINT CHECK (user_id > 0) NOT NULL,
model VARCHAR(255) NOT NULL,
@@ -363,6 +364,7 @@ CREATE TABLE llm_chat_thread
PRIMARY KEY (id)
);
+CREATE INDEX idx_chatthread_auth_id ON llm_chat_thread (auth_id);
CREATE INDEX idx_chatthread_platform_id ON llm_chat_thread (platform_id);
CREATE INDEX idx_chatthread_user_id ON llm_chat_thread (user_id);
diff --git
a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java
b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java
index 0414891..766053f 100644
---
a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java
+++
b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java
@@ -18,13 +18,13 @@
*/
package org.apache.bigtop.manager.server.controller;
-import org.apache.bigtop.manager.server.model.dto.PlatformDTO;
+import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO;
+import org.apache.bigtop.manager.server.model.req.AuthPlatformReq;
import org.apache.bigtop.manager.server.model.req.ChatbotMessageReq;
-import org.apache.bigtop.manager.server.model.req.PlatformReq;
+import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO;
import org.apache.bigtop.manager.server.model.vo.ChatMessageVO;
import org.apache.bigtop.manager.server.model.vo.ChatThreadVO;
import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO;
-import org.apache.bigtop.manager.server.model.vo.PlatformAuthorizedVO;
import org.apache.bigtop.manager.server.model.vo.PlatformVO;
import org.apache.bigtop.manager.server.service.ChatbotService;
import org.apache.bigtop.manager.server.utils.MessageSourceUtils;
@@ -85,10 +85,10 @@ class ChatbotControllerTest {
@Test
void getAuthorizedPlatforms() {
- List<PlatformAuthorizedVO> authorizedPlatforms = new ArrayList<>();
+ List<AuthPlatformVO> authorizedPlatforms = new ArrayList<>();
when(chatbotService.authorizedPlatforms()).thenReturn(authorizedPlatforms);
- ResponseEntity<List<PlatformAuthorizedVO>> response =
chatbotController.authorizedPlatforms();
+ ResponseEntity<List<AuthPlatformVO>> response =
chatbotController.authorizedPlatforms();
assertTrue(response.isSuccess());
assertEquals(authorizedPlatforms, response.getData());
@@ -98,7 +98,7 @@ class ChatbotControllerTest {
void platformsAuthCredential() {
Long platformId = 1L;
List<PlatformAuthCredentialVO> credentials = new ArrayList<>();
-
when(chatbotService.platformsAuthCredential(platformId)).thenReturn(credentials);
+
when(chatbotService.platformsAuthCredentials(platformId)).thenReturn(credentials);
ResponseEntity<List<PlatformAuthCredentialVO>> response =
chatbotController.platformsAuthCredential(platformId);
@@ -108,12 +108,12 @@ class ChatbotControllerTest {
@Test
void addAuthorizedPlatform() {
- PlatformReq platformReq = new PlatformReq();
- PlatformAuthorizedVO authorizedVO = new PlatformAuthorizedVO();
+ AuthPlatformReq authPlatformReq = new AuthPlatformReq();
+ AuthPlatformVO authorizedVO = new AuthPlatformVO();
-
when(chatbotService.addAuthorizedPlatform(any(PlatformDTO.class))).thenReturn(authorizedVO);
+
when(chatbotService.addAuthorizedPlatform(any(AuthPlatformDTO.class))).thenReturn(authorizedVO);
- ResponseEntity<PlatformAuthorizedVO> response =
chatbotController.addAuthorizedPlatform(platformReq);
+ ResponseEntity<AuthPlatformVO> response =
chatbotController.addAuthorizedPlatform(authPlatformReq);
assertTrue(response.isSuccess());
assertEquals(authorizedVO, response.getData());