feat: P1 合盘/星座/问答与测测完整设计包及模拟器取证工具
落地 synastry/star/ask API 与 H5 页面,补齐 cece-frontend-re complete-design 证据文档,并加入 Android 模拟器截图抓取脚本。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
// AskThread binds a conversation to a profile.
|
||||
type AskThread struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
ProfileID uuid.UUID `json:"profile_id"`
|
||||
Scene *string `json:"scene,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// AskMessage is one turn in a thread.
|
||||
type AskMessage struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
ThreadID uuid.UUID `json:"thread_id"`
|
||||
Role string `json:"role"`
|
||||
Content string `json:"content"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
// GrowthPlan is a small personal growth goal.
|
||||
type GrowthPlan struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Title string `json:"title"`
|
||||
Focus string `json:"focus"`
|
||||
Status string `json:"status"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// GrowthCheckin is a daily check-in on a plan.
|
||||
type GrowthCheckin struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
PlanID uuid.UUID `json:"plan_id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Day string `json:"day"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
// Mood is a daily mood check-in.
|
||||
type Mood struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Day string `json:"day"`
|
||||
Score *int `json:"score,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
@@ -8,14 +8,30 @@ import (
|
||||
|
||||
// Profile is a personal archive (self or other).
|
||||
type Profile struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Relation string `json:"relation"`
|
||||
DisplayName string `json:"display_name"`
|
||||
BirthDate time.Time `json:"birth_date"`
|
||||
BirthTime *string `json:"birth_time,omitempty"`
|
||||
BirthPlace *string `json:"birth_place,omitempty"`
|
||||
Gender *string `json:"gender,omitempty"`
|
||||
RelationType *string `json:"relation_type,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Relation string `json:"relation"`
|
||||
DisplayName string `json:"display_name"`
|
||||
BirthDate time.Time `json:"birth_date"`
|
||||
BirthTime *string `json:"birth_time,omitempty"`
|
||||
BirthPlace *string `json:"birth_place,omitempty"`
|
||||
Gender *string `json:"gender,omitempty"`
|
||||
RelationType *string `json:"relation_type,omitempty"`
|
||||
GeoLat *float64 `json:"geo_lat,omitempty"`
|
||||
GeoLng *float64 `json:"geo_lng,omitempty"`
|
||||
GeoVisible bool `json:"geo_visible"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// SynastryInvite is a shareable pair invite.
|
||||
type SynastryInvite struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
Token string `json:"token"`
|
||||
HostUserID uuid.UUID `json:"host_user_id"`
|
||||
HostProfileID uuid.UUID `json:"host_profile_id"`
|
||||
ExpiresAt time.Time `json:"expires_at"`
|
||||
GuestUserID *uuid.UUID `json:"guest_user_id,omitempty"`
|
||||
GuestProfileID *uuid.UUID `json:"guest_profile_id,omitempty"`
|
||||
ReportID *uuid.UUID `json:"report_id,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user