Beta Sprint Day 1-2: Alpha Issue Fixes Initiated + Mobile Project Setup

Sprint Phase: Beta Day 1-2 / 8

Team Name: 心屿开发团队 (Xinyu Development Team)

Project Name: 心屿 (MindCarrer) - AI-Driven Mental Health Social Support Platform

Github Respository


1. SCRUM

1.1 Team Member Progress

Member Completed Tasks Time Spent Issues Encountered Next Plan
吴志斌 Multi-user data isolation design & implementation 8h SQLite concurrency conflicts Android server adaptation
江贤晟 Android project architecture setup, network module migration 8h NDK compatibility Login page migration
杨媛真 Android UI layout design, login page UI 6h Font display issues Main page UI design
方利喆 iOS environment setup, project structure preparation 6h Complex Mac environment iOS project framework
连泽政 Multi-user testing plan, concurrency testing execution 5h None Community feature testing
林泽君 Local cache testing, data isolation verification 5h None Android login testing
范禛 Alpha issue consolidation, Beta planning documentation 4h None Assist functional testing
杨越 Android icon design, UI color optimization 4h None Page UI beautification
陈毅鹏 Sprint article writing, technical documentation 3h None Record development progress
吴昱霆 Android push notification research, FCM study 3h FCM restrictions in China Push solution design
连森涛 Android material collection, Qt documentation 2h None Technical data collection

Total Hours : 54 hours | Average: 4.9h/person


1.2 Code Check-in Records

1. Multi-user Data Isolation Implementation

Committer: 吴志斌

Issue: #Beta-001 Local cache multi-user data isolation

Core Code : localstore.cpp

复制代码
// Create independent database for each user
QString LocalStore::getUserDbPath(const QString& userId) const {
    QString base = QStandardPaths::writableLocation(
        QStandardPaths::AppDataLocation);
    QDir().mkpath(base);
    return base + QString("/user_%1.sqlite").arg(userId);
}

// Switch user database
bool LocalStore::switchUser(const QString& userId) {
    if (m_currentUserId == userId && db.isOpen()) {
        return true;
    }
    
    if (db.isOpen()) {
        db.close();
    }
    
    m_currentUserId = userId;
    QString dbPath = getUserDbPath(userId);
    db = QSqlDatabase::addDatabase("QSQLITE", userId);
    db.setDatabaseName(dbPath);
    
    if (!db.open()) {
        qDebug() << "Failed to open DB for user:" << userId;
        return false;
    }
    
    initTables();
    qDebug() << "Switched to user:" << userId;
    return true;
}

Affected Files:

  • Client_Code/localstore.h

  • Client_Code/localstore.cpp

  • Client_Code/mainwindow.cpp


2. Android Project Architecture Setup

Committer: 江贤晟

Issue: #Beta-002 Android project infrastructure

Project Structure:

复制代码
Client_Code_Android/
├── android/
│   ├── AndroidManifest.xml
│   ├── build.gradle
│   └── res/
├── *.h, *.cpp, *.ui (Migrated from Windows version)
├── resources.qrc
└── MindCarrer_Android.pro

Key Configuration : MindCarrer_Android.pro

复制代码
QT += core gui widgets network sql concurrent

android {
    QT += androidextras
    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
    ANDROID_MIN_SDK_VERSION = 26
    ANDROID_TARGET_SDK_VERSION = 33
    
    ANDROID_PERMISSIONS += \
        android.permission.INTERNET \
        android.permission.ACCESS_NETWORK_STATE
}

3. Network Communication Module Migration

Committer: 吴志斌

Issue: #Beta-003 Android network module migration

Android Network Initialization:

复制代码
#ifdef Q_OS_ANDROID
void FrontClient::initAndroidNetwork() {
    QtAndroid::requestPermissionsSync(
        QStringList() << "android.permission.INTERNET"
    );
    
    mainSocket.setSocketOption(
        QAbstractSocket::LowDelayOption, 1);
    mainSocket.setSocketOption(
        QAbstractSocket::KeepAliveOption, 1);
}
#endif

1.3 Testing Evidence

Multi-user Data Isolation Testing

Testers: 连泽政, 林泽君

Test Scenarios:

Scenario Test Cases Passed Failed Pass Rate
Concurrent Login 5 5 0 100%
Chat Record Isolation 10 10 0 100%
Database File Verification 8 8 100%
User Switching 7 7 0 100%
Total 30 30 0 **100%**​
复制代码
Database File Verification:
C:\Users\用户名\AppData\Local\MindCarrer\
├── user_13800000001.sqlite  (128 KB)
├── user_13800000002.sqlite  (96 KB)
└── config.ini

Multi-user Concurrency Test:
✅ Client 1: User A's 10 chat records
✅ Client 2: User B's 10 chat records
✅ Data completely isolated, no crossover

Android Project Compilation Test

Test Device: Xiaomi Pad 7

Compilation Results:

Step Status Time Notes
Clean Project 5s Remove old builds
Configure Project 12s qmake configuration
Compile Source 3m45s 120 source files
Package APK 1m20s APK: 28.5MB

Runtime Tests:

Test Item Result Notes
App Launch 2.8 seconds
Login Page UI normal
Network Connection Connection successful
Login Function Login successful

1.4 Stand-up Meeting Photos


2. PM Report

2.1 Project Progress

Sprint Period: January 1-8, 2026 (8 days)

Current Progress: Day 2 / 8

Completion Rate: 25%

Task Statistics
Category Planned Completed In Progress Not Started Completion Rate
Alpha Issue Fixes 4 2 0 2 50%
Mobile Development 6 1 1 4 17%
New Features 3 0 0 3 0%
Performance Optimization 2 0 0 2 0%
Testing & Documentation 5 1 1 3 20%
Total 20 4 2 14 **20%**​
Completed Tasks
  1. ✅ Local cache multi-user isolation (吴志斌, 8h)

  2. ✅ Android project architecture setup (江贤晟, 8h)

  3. ✅ Network communication module migration (江贤晟, 6h)

  4. ✅ Multi-user concurrency testing (连泽政/林泽君, 10h)

Tasks in Progress
  1. 🔄 Android login page development (杨媛真, 60%)

  2. 🔄 iOS project environment configuration (方利喆, 40%)

Hours Statistics
Date Planned Actual Difference Cumulative
Day 1 44h 44h 0h 44h
Day 2 44h 44h 0h 88h
Total 88h 88h 0h 88h

Remaining Hours: 264 hours


2.2 Burn-down Chart

复制代码
Remaining Hours (h)
352 |●
    |  ●
300 |    ●
    |      ●
250 |        ●
    |          ●
200 |            ●
    |              ●
150 |                ●
    |                  ●
100 |                    ●
    |                      ●
 50 |                        ●
    |                          ●
  0 |____________________________●
    Day1  Day2  Day3  Day4  Day5  Day6  Day7  Day8

● Ideal Burn-down Line
■ Actual Burn-down Line

Current: Day 2
Ideal Remaining: 264h
Actual Remaining: 264h
Deviation: 0h ✅

Analysis:

  • ✅ Progress normal, consistent with ideal timeline

  • ✅ Hours control good, average 4.9h/person/day

  • ✅ Task allocation reasonable, load balanced


2.3 Task Volume Changes

New Tasks
New Task Discovery Time Priority Hours Owner
Android font display optimization Day 1 Medium 4h 杨媛真
Database concurrency lock optimization Day 1 High 6h 吴志斌
iOS certificate configuration Day 2 High 8h 方利喆
Android permission management Day 2 Medium 4h 江贤晟

Added Hours: 22 hours

Adjusted Total Hours: 374 hours


2.4 Running Screenshots and Demos

Multi-user Data Isolation Demo

Scenario: Two users logged in simultaneously, data completely isolated

Android Application Running Demo

Device: Xiaomi Pad 7


3. Technical Highlights

3.1 Multi-user Data Isolation Solution

Design Approach

Problem: In Alpha stage, all users shared one database, causing data chaos

Solution: Each user uses independent SQLite database file

Architecture Design
复制代码
User Login
    ↓
LocalStore::switchUser(userId)
    ↓
Close current database connection
    ↓
Open user-specific database
    ↓
user_<userId>.sqlite
    ↓
Initialize table structure
    ↓
Data completely isolated
Core Implementation
复制代码
// Database path generation
QString getUserDbPath(const QString& userId) const {
    QString base = QStandardPaths::writableLocation(
        QStandardPaths::AppDataLocation);
    return base + QString("/user_%1.sqlite").arg(userId);
}

// User switching
bool switchUser(const QString& userId) {
    // 1. Close current connection
    if (db.isOpen()) db.close();
    
    // 2. Open new user database
    db.setDatabaseName(getUserDbPath(userId));
    if (!db.open()) return false;
    
    // 3. Initialize table structure
    initTables();
    return true;
}
Advantages
  • Data Isolation: Each user's data completely independent

  • Concurrency Safety: No conflicts with multiple simultaneous logins

  • Easy Management: Database files clearly visible

  • Performance Optimization: Avoids large table queries, improves speed


3.2 Android Project Architecture Design

Cross-platform Strategy

Goal: Maximize code reuse, minimize platform differences

Approach:

  1. Core business logic 100% reused

  2. UI layout files 100% reused

  3. Platform-specific code uses conditional compilation

Project Structure
复制代码
Client_Code_Android/
├── Core Code (Reused)
│   ├── frontclient.cpp      # Network communication
│   ├── localstore.cpp       # Local storage
│   ├── mainwindow.cpp       # Main window
│   └── ...
├── UI Files (Reused)
│   ├── authwindow.ui
│   ├── mainwindow.ui
│   └── ...
├── Android Specific
│   ├── android/
│   │   ├── AndroidManifest.xml
│   │   ├── build.gradle
│   │   └── res/
│   └── MindCarrer_Android.pro
Conditional Compilation Example
复制代码
// Platform-specific initialization
#ifdef Q_OS_ANDROID
    initAndroidNetwork();
    requestAndroidPermissions();
#elif defined(Q_OS_IOS)
    initIOSNetwork();
    requestIOSPermissions();
#else
    // Windows/Linux/macOS
    initDesktopNetwork();
#endif
Advantages
  • Code Reuse Rate: Over 85%

  • Low Maintenance Cost: One modification, multiple platforms effective

  • High Development Efficiency: Quick migration to new platforms

  • Good Consistency: Unified user experience


4. Problems and Solutions

Problem 1: SQLite Concurrent Access Conflicts

Symptom: Occasional errors when multiple users operated database simultaneously

Cause: SQLite doesn't support high-concurrency writes by default

Solution:

复制代码
// Enable WAL mode
db.exec("PRAGMA journal_mode=WAL;");
db.exec("PRAGMA synchronous=NORMAL;");

// Set timeout
sqlite3_busy_timeout(db_, 5000);

Effect: ✅ Concurrency conflicts completely resolved


Problem 2: NDK Version Compatibility

Symptom: Android project compilation failed,提示NDK version mismatch

Cause: Qt 6.5.3 requires NDK 25.x, but system had NDK 21.x installed

Solution:

复制代码
# Download NDK 25.1.8937393
sdkmanager "ndk;25.1.8937393"

# Configure NDK path in Qt Creator
Tools → Options → Devices → Android
NDK Location: E:/AndrioSDK/SDKQT/ndk/25.1.8937393

Effect: ✅ Compilation passed successfully


Problem 3: Android Font Display Abnormalities

Symptom: Some Chinese characters displayed as squares

Cause: Android system fonts didn't match Qt default fonts

Solution:

复制代码
#ifdef Q_OS_ANDROID
    QFont font("Roboto");
    font.setPointSize(14);
    QApplication::setFont(font);
#endif

Effect: ✅ Font display normal


5. Days 1-2 Summary

Completion Status

Completed:

  • ✅ Multi-user data isolation design & implementation

  • ✅ Android project infrastructure setup

  • ✅ Network communication module migration

  • ✅ Multi-user concurrency testing (100% pass)

In Progress:

  • 🔄 Android login page development (60%)

Completion Rate: 20% (4/20 tasks)


Team Collaboration

Strengths:

  • ✅ Task allocation reasonable, everyone has clear goals

  • ✅ Stand-up communication timely, problems resolved quickly

  • ✅ Code review strict, quality assured

Improvements:

  • ⚠️ Some members unfamiliar with Android development, need enhanced learning

Technical Gains

  1. Multi-user Data Isolation: Learned SQLite multi-database management

  2. Cross-platform Development: Mastered Qt for Android development workflow

  3. Conditional Compilation: Understood cross-platform code organization

  4. Concurrency Testing: Improved test design capabilities


6. Next Plan (Days 3-4)

Main Tasks

  1. Community Features Improvement

    • Fix like functionality

    • Fix comment functionality (async loading)

    • Optimize community page performance

  2. Window Size Unification

    • Adjust login/registration pages to 1200x800

    • Maintain consistency with main page size

    • Optimize window switching animations

  3. Windows Message Notifications

    • Implement hourly check mechanism

    • Add cute notification message library

    • Integrate Windows Toast notifications

  4. Android Feature Completion

    • Complete login/registration pages

    • Develop main page UI

    • Implement bottom navigation bar

Expected Goals

  • Complete 50% of Alpha legacy issues

  • Android development progress reach 40%

  • Cumulative completion rate achieve 51%


Document Version: v1.0

Author: 陈毅鹏

Reviewer: 吴志斌

相关推荐
龚礼鹏1 天前
Android应用程序 c/c++ 崩溃排查流程三——ndk-stack工具使用
android
煎蛋学姐1 天前
SSM校园兼职平台52t96(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·用户管理·ssm 框架·校园兼职平台
独角鲸网络安全实验室1 天前
CVE-2025-61882深度分析:Oracle Concurrent Processing BI Publisher集成远程接管漏洞的技术原理与防御策略
数据库·网络安全·oracle·漏洞·ebs·cve-2025-61882·xml 注入
光子物联单片机1 天前
STM32传感器模块编程实践(十七)DIY智能电子门锁套件模型
c语言·stm32·单片机·嵌入式硬件·mcu
zhengfei6111 天前
CVE-2025-13156 - Vitepos WooCommerce 的销售(POS) 系统漏洞
android
Leon-Ning Liu1 天前
Oracle 自动统计信息收集任务:维护窗口创建与删除
数据库·oracle
乞丐哥1 天前
乞丐哥的私房菜(Ubuntu OpenCV篇——Image Processing 节 之 Out-of-focus Deblur Filter 失焦去模糊滤波器 滤镜)
c++·图像处理·opencv·ubuntu·计算机视觉
福楠1 天前
C++ STL | 容器适配器
c语言·开发语言·数据结构·c++
莳花微语1 天前
磐维数据库双中心容灾流复制集群搭建
服务器·数据库·oracle