#!/usr/bin/env bash
# Run this script to seed all test memories defined in memory_qa_test.md.
# Usage:
#   bash tests/seed_memories.sh           # seed only (keeps existing DB)
#   bash tests/seed_memories.sh --clean   # delete DB first, then seed

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DB_PATH="${HETA_DB_PATH:-$HOME/.heta/workspace/mem/mem.sqlite3}"

# ── optional clean ──────────────────────────────────────────────────────────
if [[ "${1:-}" == "--clean" ]]; then
    echo ">> Removing existing DB: $DB_PATH"
    rm -f "$DB_PATH" "${DB_PATH}-shm" "${DB_PATH}-wal"
fi

# ── helpers ─────────────────────────────────────────────────────────────────
TOTAL=0
FAILED=0
FAILED_TEXTS=()

run_remember() {
    local text="$1"
    local label="$2"
    TOTAL=$((TOTAL + 1))
    echo ""
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    echo "[$TOTAL] $label"
    echo "    $text"
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    if ! heta remember "$text"; then
        echo "[FAILED] ↑ 上面这条记忆写入失败"
        FAILED=$((FAILED + 1))
        FAILED_TEXTS+=("[$TOTAL] $text")
    fi
}

# ── Phase 1: 基础信息建立 ───────────────────────────────────────────────────
echo ""
echo "============================================================"
echo " 第一阶段：基础信息建立"
echo "============================================================"

run_remember \
    "我叫陈浩，今年28岁，住在北京朝阳区，在一家叫极光科技的初创公司做后端工程师，入职快两年了" \
    "个人基础信息"

run_remember \
    "我平时喜欢爬山，周末经常去香山或者云蒙山，还喜欢打羽毛球，偶尔打篮球，最近开始学习游泳" \
    "爱好与运动"

run_remember \
    "上周去参加了公司的技术分享会，主题是大模型在工程中的落地，大概50人参加，认识了几个做推理优化的同事，收获挺大的" \
    "技术分享会（事件）"

run_remember \
    "昨天和产品经理李薇开了需求评审会，讨论用户画像模块的改版方案，双方争议挺大，最后定下来计划三周后上线" \
    "需求评审会（事件）"

run_remember \
    "公司上个季度给我打了A绩效，HR昨天通知我下个月涨薪，从18k涨到22k" \
    "绩效与涨薪（18k→22k）"

# ── Phase 2: 状态变更（冲突） ───────────────────────────────────────────────
echo ""
echo "============================================================"
echo " 第二阶段：状态变更（制造冲突）"
echo "============================================================"

run_remember \
    "我搬家了，从朝阳区搬到了海淀区，现在离公司更近，通勤时间从原来的1小时缩短到大概20分钟" \
    "搬家：朝阳→海淀（冲突住址）"

run_remember \
    "今天收到消息，用户画像模块上线时间推迟了，改到下下个月，原因是前端人手不够，李薇也很无奈" \
    "项目推迟（冲突上线时间）"

run_remember \
    "公司全员会议宣布下个季度要裁员10%，部门主管说后端组暂时安全，但我还是有点担心" \
    "裁员公告（事件）"

run_remember \
    "我决定换工作了，已经拿到星图数据的offer，职位还是后端工程师，薪资直接给到25k，下周一入职" \
    "换工作决定：极光→星图，25k（冲突薪资/公司）"

run_remember \
    "今天是我在极光科技的最后一天，完成了所有交接，和团队一起吃了散伙饭，挺不舍的" \
    "离职最后一天（事件）"

# ── Phase 3: 新状态建立 + 更多事件 ─────────────────────────────────────────
echo ""
echo "============================================================"
echo " 第三阶段：新状态建立 + 更多事件"
echo "============================================================"

run_remember \
    "在星图数据入职了，新公司在北京望京，团队规模比极光科技大很多，主要做企业数据分析产品" \
    "星图数据入职"

run_remember \
    "上个月和大学同学王强、赵敏、刘洋一起去青岛玩了三天，吃了很多海鲜，住在市南区的民宿，费用AA制大概每人花了1500块" \
    "青岛旅游（事件）"

run_remember \
    "最近开始学习Rust，打算用来做高性能的数据处理模块，买了《Rust程序设计语言》这本书" \
    "学习Rust"

run_remember \
    "妈妈最近血压有点高，上周带她去协和医院检查了，医生说要控制饮食、减少盐分，开了一个月的降压药" \
    "妈妈就医（事件）"

run_remember \
    "星图数据这边技术栈比极光科技更新，主要用Go和Rust，Python只用来做数据脚本，我需要加强Go的经验" \
    "星图技术栈，需学Go"

# ── Phase 4: 进一步冲突与更新 ──────────────────────────────────────────────
echo ""
echo "============================================================"
echo " 第四阶段：进一步冲突与更新"
echo "============================================================"

run_remember \
    "我开始学游泳了，报了公司附近游泳馆的课程，教练说我基础不错，一个月后应该能游50米了" \
    "游泳课（与爱好记忆互补）"

run_remember \
    "搬家了，从海淀区搬到了望京，就在公司附近，步行10分钟就到，房租贵了一些但省去了通勤时间" \
    "再次搬家：海淀→望京（冲突住址+通勤）"

run_remember \
    "星图数据给我调薪了，从25k涨到28k，理由是试用期表现优秀，正式转正同时调薪" \
    "调薪：25k→28k（冲突薪资）"

run_remember \
    "用户画像模块终于上线了，比最初计划晚了将近两个月，上线后首日UV达到2万，李薇发微信说很感谢我之前的配合" \
    "项目上线（事件，首日UV2万）"

run_remember \
    "妈妈复查了，血压已经控制稳定，医生说可以停药了，饮食方面继续保持就行" \
    "妈妈康复（事件，状态更新）"

# ── 汇总 ────────────────────────────────────────────────────────────────────
echo ""
echo "============================================================"
echo " 完成"
echo "============================================================"
echo "总计：$TOTAL 条  成功：$((TOTAL - FAILED)) 条  失败：$FAILED 条"

if [[ $FAILED -gt 0 ]]; then
    echo ""
    echo "失败列表："
    for t in "${FAILED_TEXTS[@]}"; do
        echo "  $t"
    done
    exit 1
fi
