mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
refactor(interaction-api): extract interaction data models into new Partner-Interaction-Api module and update imports/dependencies
This commit is contained in:
20
Partner-Interaction-Api/pom.xml
Normal file
20
Partner-Interaction-Api/pom.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>work.slhaf.partner</groupId>
|
||||
<artifactId>partner</artifactId>
|
||||
<version>0.5.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>partner-interaction-api</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>21</maven.compiler.source>
|
||||
<maven.compiler.target>21</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,14 @@
|
||||
package work.slhaf.partner.api
|
||||
|
||||
open class InputData(
|
||||
val source: String,
|
||||
val content: String
|
||||
) {
|
||||
private val _meta = mutableMapOf<String, String>()
|
||||
val meta: Map<String, String>
|
||||
get() = _meta
|
||||
|
||||
fun addMeta(key: String, value: String) {
|
||||
_meta[key] = value
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package work.slhaf.partner.api
|
||||
|
||||
import java.time.ZonedDateTime
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
sealed class InteractionEvent {
|
||||
|
||||
/**
|
||||
* event type
|
||||
*/
|
||||
abstract val event: Event
|
||||
|
||||
/**
|
||||
* event sending status
|
||||
*/
|
||||
abstract val status: EventStatus
|
||||
|
||||
/**
|
||||
* the target send to
|
||||
*/
|
||||
abstract val target: String
|
||||
|
||||
private val _meta = mutableMapOf<String, String>(
|
||||
"datetime" to ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
|
||||
)
|
||||
val meta: Map<String, String>
|
||||
get() = _meta
|
||||
|
||||
fun addMeta(key: String, value: String) {
|
||||
_meta[key] = value
|
||||
}
|
||||
|
||||
enum class Event {
|
||||
REPLY,
|
||||
MODULE,
|
||||
SYSTEM
|
||||
}
|
||||
|
||||
enum class EventStatus {
|
||||
RUNNING,
|
||||
ERROR,
|
||||
DONE
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data class ReplyEvent @JvmOverloads constructor(
|
||||
override val status: EventStatus,
|
||||
override val target: String,
|
||||
val content: String,
|
||||
val mode: ContentMode = ContentMode.REPLACE,
|
||||
val seq: Long? = null
|
||||
) : InteractionEvent() {
|
||||
override val event = Event.REPLY
|
||||
|
||||
enum class ContentMode {
|
||||
APPEND,
|
||||
REPLACE
|
||||
}
|
||||
}
|
||||
|
||||
data class ModuleEvent(
|
||||
override val status: EventStatus,
|
||||
override val target: String,
|
||||
val data: Data
|
||||
) : InteractionEvent() {
|
||||
override val event = Event.MODULE
|
||||
|
||||
data class Data(
|
||||
val module: String,
|
||||
val content: String
|
||||
)
|
||||
}
|
||||
|
||||
data class SystemEvent @JvmOverloads constructor(
|
||||
override val status: EventStatus,
|
||||
override val target: String,
|
||||
val title: String,
|
||||
val content: String,
|
||||
val urgency: Urgency = Urgency.NORMAL
|
||||
) : InteractionEvent() {
|
||||
override val event = Event.SYSTEM
|
||||
|
||||
enum class Urgency {
|
||||
LOW,
|
||||
NORMAL,
|
||||
HIGH,
|
||||
CRITICAL
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user