FocusFlow β Sprint Blog Series (Part 1) - Forgot Password Feature Optimization Details
目录
- Project Overview
- Burn-up chart
- SCRUM Table
- Feature Optimization Background
- Pain Points Analysis in Original Function
- Optimization Goals
- Technical Implementation Details
- 1. Frontend Page Restructuring
- 2. Backend Logic Optimization
- 3. Countdown Function Implementation
- 4. User Experience Optimization Details
- Security Mechanism Design
- 1. Misoperation Protection
- 2. Data Validation Mechanism
- Performance Optimization Results
- 1. Query Performance Improvement
- 2. User Experience Metrics
- Test Case Design
- 1. Functional Test Cases
- 2. Edge Case Testing
- Deployment and Monitoring
- 1. Log Monitoring
- 2. Performance Monitoring Metrics
- Summary and Future Outlook
- Optimization Results Summary
- Future Optimization Directions
- Photos of team members working together
Project Overview
| Course | 2501_MU_SE_FZU |
|---|---|
| Assignment Requirement | Sixth Assignment - Beta Sprint |
| Team Name | Focus_2025 |
| Goal of this assignment | Clarify Code Standards, Sprint Tasks, and Plans for the team Beta Sprint |
| Other references | IEEE Std 830-1998, GB/T 8567-2006 |
Written by: Hantao Wu
Burn-up chart

SCRUM Table
| Member | ID | Role | Completed Tasks | Time Spent | Remaining Time Estimate | Issues / Difficulties | Plans Until Tomorrow's Stand-up |
|---|---|---|---|---|---|---|---|
| Jiayao Hu | 832301310 | Project Manager | 1. Coordinated password reset feature optimization prioritization 2. Tracked UX/backend synchronization for simplified flow 3. Organized user testing session for new reset process | 4 hours | 1.5 hours (analyzing user feedback data) | UX team and backend team had different interpretations of "simplified flow" | 1. Finalize optimization metrics report 2. Coordinate cross-team alignment meeting 3. Prepare Beta deployment checklist |
| Hantao Wu | 832302129 | Backend Developer | Optimized forgot password API response time by 67% (150ms → 50ms) | 5 hours | 2 hours (load testing) | Simplified query (phone-only) raised security concerns about potential abuse | 1. Implement rate limiting for reset attempts 2. Add suspicious activity logging 3. Complete load testing for 100+ concurrent users |
| Zhihao Liu | 832301110 | Backend Developer | Implemented new validation mechanism with password strength checking | 4 hours | 1 hour (security audit) | Edge cases with international phone number formats causing validation failures | 1. Enhance phone number validation for international formats 2. Complete security audit with penetration testing 3. Update API documentation |
| Yitan Fang | 832302110 | Backend Developer | Developed countdown security mechanism backend logic | 3.5 hours | 1.5 hours (integration testing) | Countdown state persistence issues during page refresh | 1. Implement session-based countdown state management 2. Test countdown recovery after network interruption 3. Coordinate with frontend for state synchronization |
| Jiazhuo He | 832302130 | Backend Developer | Added comprehensive logging and monitoring for reset attempts | 4 hours | 2 hours (alert configuration) | High volume of log data affecting database performance | 1. Optimize log storage strategy 2. Configure real-time alerts for suspicious patterns 3. Implement log rotation mechanism |
| Shengpeng Yang | 832301120 | Backend Developer | Reduced password reset operation from 5 to 3 steps (40% reduction) | 6 hours | 1 hour (performance benchmarking) | Backward compatibility issues with existing reset links | 1. Create migration path for existing reset requests 2. Finalize performance benchmarks 3. Document API versioning strategy |
| Chenhe Zhu | 832301108 | Backend Developer | Implemented new data validation with comprehensive error handling | 5 hours | 1.5 hours (edge case testing) | Password strength requirements conflicting with some legacy accounts | 1. Add grandfather clause for existing weak passwords 2. Complete comprehensive edge case testing 3. Update user notification system for policy changes |
Feature Optimization Background
Pain Points Analysis in Original Function
In the Alpha version, the forgot password feature had the following user experience issues:
- Complex Verification Process: Required input of phone number, username, school information, and other fields
- Username Recognition Difficulty: Users might use nicknames or hard-to-remember usernames
- Case Sensitivity Issues: Usernames were case-sensitive, prone to input errors
- Information Forgetting Risk: Users might forget detailed information filled during registration
Optimization Goals
- Simplify verification process, requiring only phone number to start reset process
- Add information confirmation step to ensure operational security
- Add 10-second countdown to prevent misoperations
- Improve user experience and operational convenience
Technical Implementation Details
1. Frontend Page Restructuring
Complex Form Structure Before Optimization:
<!-- Original code: required multiple information inputs -->
<form id="forgotPasswordForm">
<input type="tel" name="phone" placeholder="Phone Number" required>
<input type="text" name="username" placeholder="Username" required>
<input type="text" name="school" placeholder="School Information" required>
<button type="submit">Verify Identity</button>
</form>
Simplified Process After Optimization:
<!-- Step 1: Only phone number required -->
<div id="step1" class="step active">
<form id="phoneForm">
<div class="form-group">
<label for="phone">Phone Number</label>
<input type="tel" id="phone" name="phone" required
placeholder="Enter your registered phone number">
</div>
<button type="submit" class="btn">Next</button>
</form>
</div>
<!-- Step 2: Information Confirmation (New 10-second countdown) -->
<div id="step2" class="step" style="display: none;">
<div class="user-info-card">
<h3>User Information</h3>
<div class="user-details">
<div class="info-row">
<span class="label">First Name:</span>
<span id="userFirstName" class="value"></span>
</div>
<div class="info-row">
<span class="label">Last Name:</span>
<span id="userLastName" class="value"></span>
</div>
<div class="info-row">
<span class="label">School/Institution:</span>
<span id="userSchool" class="value"></span>
</div>
</div>
<div class="confirmation-message">
<p>Please confirm that this is you</p >
<p class="warning-text">Unauthorized access may result in account suspension.</p >
</div>
<div class="step-buttons">
<button type="button" class="btn btn-secondary" onclick="goBack()">Back</button>
<button type="button" class="btn btn-primary" id="confirmBtn" disabled
onclick="confirmIdentity()">
<span id="confirmText">Confirm</span>
<span id="countdown" style="display: none;">(10s)</span>
</button>
</div>
</div>
</div>
Figure 1: Forgot Password Feature Interface Optimization Comparison

2. Backend Logic Optimization
Original Verification Logic (Complex Query):
# Original code: required multiple field verification
user = conn.execute('''
SELECT * FROM users
WHERE phone = ? AND username = ? AND school = ?
''', (phone, username, school)).fetchone()
Simplified Logic After Optimization:
@app.route('/verify_phone', methods=['POST'])
def verify_phone():
data = request.get_json()
phone = data.get('phone')
conn = get_db_connection()
try:
# Simplified query: verify by phone number only
user = conn.execute('SELECT * FROM users WHERE phone = ?', (phone,)).fetchone()
if user:
return jsonify({
'success': True,
'user': {
'phone': user['phone'],
'first_name': user['first_name'],
'last_name': user['last_name'],
'school': user['school'],
'email': user['email']
}
})
else:
return jsonify({'success': False, 'message': 'Phone number not found'})
finally:
conn.close()
3. Countdown Function Implementation
JavaScript Countdown Logic:
let countdownInterval = null;
function startConfirmCountdown() {
// Clear previous timer
if (countdownInterval) {
clearInterval(countdownInterval);
}
const confirmBtn = document.getElementById('confirmBtn');
const confirmText = document.getElementById('confirmText');
const countdown = document.getElementById('countdown');
let seconds = 10;
// Reset button state
confirmBtn.disabled = true;
confirmText.style.display = 'inline';
countdown.style.display = 'inline';
countdown.textContent = `(${seconds}s)`;
// Start countdown
countdownInterval = setInterval(() => {
seconds--;
countdown.textContent = `(${seconds}s)`;
if (seconds <= 0) {
clearInterval(countdownInterval);
countdownInterval = null;
confirmBtn.disabled = false;
confirmText.style.display = 'inline';
countdown.style.display = 'none';
}
}, 1000);
}
Figure 2: 10-Second Countdown Confirmation Interface

4. User Experience Optimization Details
CSS Style Optimization:
.user-info-card {
background: #f8f9fa;
border-radius: 8px;
padding: 20px;
margin-bottom: 20px;
}
.info-row {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
padding: 8px 0;
border-bottom: 1px solid #e9ecef;
}
.confirmation-message {
text-align: center;
margin: 20px 0;
padding: 15px;
background: #fff3cd;
border: 1px solid #ffeaa7;
border-radius: 5px;
}
.btn:disabled {
background-color: #6c757d;
border-color: #6c757d;
cursor: not-allowed;
opacity: 0.6;
}
Security Mechanism Design
1. Misoperation Protection
- 10-second countdown: Prevents users from rushing operations causing misconfirmation
- Information display: Shows complete user information for confirmation
- Security warnings: Clearly states consequences of unauthorized access
2. Data Validation Mechanism
def validate_reset_request(phone, new_password, confirm_password):
# Null value check
if not all([phone, new_password, confirm_password]):
return False, "All fields are required"
# Password consistency check
if new_password != confirm_password:
return False, "Passwords do not match"
# Password strength check
if len(new_password) < 8:
return False, "Password must be at least 8 characters"
return True, "Validation passed"
Performance Optimization Results
1. Query Performance Improvement
| Query Type | Response Time Before | Response Time After | Improvement |
|---|---|---|---|
| User Verification | 150ms | 50ms | 67% |
| Password Reset | 200ms | 80ms | 60% |
2. User Experience Metrics
| Metric | Before Optimization | After Optimization | Improvement |
|---|---|---|---|
| Operation Steps | 5 steps | 3 steps | 40% reduction |
| Input Fields | 6 fields | 1 field | 83% reduction |
| Completion Time | 45 seconds | 20 seconds | 56% reduction |
(Space reserved for performance comparison charts)
Figure 3: Feature Optimization Performance Comparison Chart
- Response time comparison bar chart
- User operation step flowchart
- Satisfaction survey results
Test Case Design
1. Functional Test Cases
def test_forgot_password_flow():
# Test normal flow
test_phone = "13800138000"
# Step 1: Enter phone number
response = client.post('/verify_phone', json={'phone': test_phone})
assert response.status_code == 200
assert response.json['success'] == True
# Step 2: Verify countdown function
# Simulate 10-second wait
import time
time.sleep(10)
# Step 3: Reset password
new_password = "newpassword123"
response = client.post('/reset_password', json={
'phone': test_phone,
'new_password': new_password,
'confirm_password': new_password
})
assert response.status_code == 200
assert response.json['success'] == True
2. Edge Case Testing
- Invalid phone number handling
- User not found scenarios
- Network timeout retry mechanism
- Concurrent request handling
Deployment and Monitoring
1. Log Monitoring
@app.route('/reset_password', methods=['POST'])
def reset_password():
logger.info(f"Password reset request for phone: {data.get('phone')}")
try:
# Reset logic...
logger.info("Password reset successful")
return jsonify({'success': True, 'message': 'Password reset successfully'})
except Exception as e:
logger.error(f"Password reset failed: {str(e)}")
return jsonify({'success': False, 'message': 'Reset failed'})
2. Performance Monitoring Metrics
- Average response time < 100ms
- Error rate < 1%
- Concurrent user support > 100
Summary and Future Outlook
Optimization Results Summary
Through this Beta sprint optimization, the forgot password feature has been significantly improved in the following aspects:
- User Experience: Operation flow simplified by 83%, completion time reduced by 56%
- Security: Added information confirmation and countdown protection mechanisms
- Performance: Query response time improved by over 60%
- Reliability: Comprehensive error handling and edge case management
Future Optimization Directions
- Biometric Integration: Fingerprint or facial recognition verification
- Multi-factor Authentication: Additional SMS verification code
- Intelligent Recommendations: Security question recommendations based on user behavior
- Internationalization: Support for more languages and regional formats
(Space reserved for complete feature demonstration flowchart)
Figure 4: Complete Forgot Password Feature Flowchart
- Complete process from phone number input to successful reset
- State transition diagram for each step
- Exception handling branch paths
Technical Implementation Highlights:
- AJAX asynchronous verification for improved page response speed
- Secure countdown confirmation mechanism implementation
- Database query performance optimization
- Comprehensive error handling and user feedback
This optimization fully demonstrates user-centered design principles, significantly improving operational convenience while ensuring security.
Photos of team members working together

相关推荐
机械三维3D设计图-等离子清洗机.zip
机械三维3D设计图-等离子清洗机.zip
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
内容概要:本文提出了一种基于神经网络的数据驱动迭代学习控制(ILC)算法,专门针对具有未知动态模型和重复任务需求的非线性单输入单输出(SISO)离散时间系统,应用于无人车路径跟踪问题,并提供了完整的Matlab代码实现。该方法充分利用神经网络强大的非线性逼近能力和数据驱动特性,结合迭代学习控制在周期性任务中逐次提升控制性能的优势,无需依赖被控对象的精确数学模型,即可实现对期望轨迹的高精度、渐进式跟踪。文中系统阐述了算法的整体架构设计、关键控制律的构建方式、权重更新机制以及在无人车系统中的具体实施流程,展示了其在复杂非线性环境下的有效性和鲁棒性。; 适合人群:具备自动控制理论、机器学习基础知识和Matlab编程能力的研究生、科研人员,以及从事自动驾驶、智能控制、机器人控制等领域的工程技术人员。; 使用场景及目标:①解决无人车、工业机器人等在执行重复性路径任务时的高精度轨迹跟踪问题;②为研究数据驱动控制、迭代学习控制与神经网络的深度融合提供一个完整的仿真案例和技术参考;③辅助研究人员复现先进控制算法,服务于学术论文的验证、课题研究或实际工程项目的技术预研。; 阅读建议:建议读者在学习过程中紧密结合所提供的Matlab代码,深入剖析算法各模块的具体实现逻辑,推荐预先掌握迭代学习控制的基本原理和神经网络的相关知识,并通过Simulink搭建仿真环境,进行不同工况下的实验验证,以深刻理解算法的控制效果、收敛特性及关键参数的调优策略。
机械三维3D设计图-线圈自动包绝缘胶纸机.zip
机械三维3D设计图-线圈自动包绝缘胶纸机.zip
MATLABSimulink模拟及会议论文,关于具备自动温度控制和能耗分析的智能太阳能热水系统。.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
英特尔无线网卡AC8265驱动
英特尔无线网卡AC8265驱动


