task(740424d0-c60b-47bd-a601-ded7a24bf7a6): Add M5 survey point data module (2.9/2.14/2.15 + manual entry)
补偿提交:commitOnArchive 连续第三轮未落盘(M3/M4 同款故障),由主控在子会话工作树直接补交。 M5 采集·测点数据模块四功能点: - M5-01 (2.9) PointApi/PointModels/PointRepository 归一提取 + SurveyGroupPointSource 平台测点选择器(pointId 贯通 payload)+ 测组监测点列表页(TaskDetail 入口) - M5-02 (2.14) + M5-03 (2.15) 采集页上下文信息卡(并发拉取、失败降级不阻塞) - M5-04 手动录入:buildManual 同构 payload 入同一条 Room 上传队列 (entrySource=MANUAL),复核确认 + 已入队反馈 - upload_queue entry_source 列迁移 v1→v2(ALTER TABLE 非破坏迁移)
This commit is contained in:
@@ -14,7 +14,7 @@ import androidx.room.RoomDatabase
|
||||
entities = [
|
||||
UploadQueueEntity::class,
|
||||
],
|
||||
version = 1,
|
||||
version = 2,
|
||||
exportSchema = false,
|
||||
)
|
||||
abstract class AppDatabase : RoomDatabase() {
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.stec.cmd.core.database
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import androidx.room.migration.Migration
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
@@ -14,6 +16,15 @@ import javax.inject.Singleton
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object DatabaseModule {
|
||||
|
||||
/** v1→v2:upload_queue 加 entry_source 列(M5-04 手动录入来源标识),保数据非破坏迁移。 */
|
||||
private val MIGRATION_1_2 = object : Migration(1, 2) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) {
|
||||
db.execSQL(
|
||||
"ALTER TABLE upload_queue ADD COLUMN entry_source TEXT NOT NULL DEFAULT 'BLE'",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideAppDatabase(
|
||||
@@ -22,7 +33,7 @@ object DatabaseModule {
|
||||
context,
|
||||
AppDatabase::class.java,
|
||||
AppDatabase.DATABASE_NAME,
|
||||
).build()
|
||||
).addMigrations(MIGRATION_1_2).build()
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
|
||||
@@ -49,6 +49,10 @@ data class UploadQueueEntity(
|
||||
/** 上传成功时间(epoch 毫秒),未上传为 null。 */
|
||||
@ColumnInfo(name = "uploaded_at")
|
||||
val uploadedAt: Long? = null,
|
||||
|
||||
/** 入队来源:BLE 蓝牙采集 / MANUAL 手动录入(见 [UploadEntrySource],M5-04)。 */
|
||||
@ColumnInfo(name = "entry_source", defaultValue = UploadEntrySource.BLE)
|
||||
val entrySource: String = UploadEntrySource.BLE,
|
||||
)
|
||||
|
||||
/** 队列状态常量(S0 用 Int 避免 Room TypeConverter 样板,S1 可按需替换为枚举)。 */
|
||||
@@ -65,3 +69,12 @@ object UploadStatus {
|
||||
/** 失败待重试。 */
|
||||
const val FAILED = 3
|
||||
}
|
||||
|
||||
/** 入队来源常量(M5-04:手动录入与蓝牙采集共用一条队列,来源字段区分)。 */
|
||||
object UploadEntrySource {
|
||||
/** 蓝牙采集(M4 动线,历史数据缺省值)。 */
|
||||
const val BLE = "BLE"
|
||||
|
||||
/** 手动录入/补录(M5-04,无法蓝牙采集时人工录入)。 */
|
||||
const val MANUAL = "MANUAL"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user