Browse Source

commit 增加疑似错误标注

Hai Lin 2 days ago
parent
commit
e5348f19b5
5 changed files with 98 additions and 0 deletions
  1. 27 0
      app.py
  2. 10 0
      templates/add_member.html
  3. 6 0
      templates/member_detail.html
  4. 1 0
      templates/members.html
  5. 54 0
      templates/suspected_errors.html

+ 27 - 0
app.py

@@ -1046,6 +1046,31 @@ def members():
     
     return render_template('members.html', members=members, search_name=search_name, page=page, total_pages=total_pages, total=total)
 
+@app.route('/manager/suspected_errors')
+def suspected_errors():
+    if 'user_id' not in session:
+        return redirect(url_for('login'))
+    
+    conn = get_db_connection()
+    try:
+        with conn.cursor() as cursor:
+            # Get members with suspected errors
+            query = "SELECT id, name, simplified_name, sex, name_word_generation, birthday, suspected_error FROM family_member_info WHERE suspected_error IS NOT NULL AND suspected_error != '' ORDER BY name"
+            cursor.execute(query)
+            members = cursor.fetchall()
+            
+            # Format birthday for display
+            for member in members:
+                if member['birthday']:
+                    member['birthday_str'] = format_timestamp(member['birthday'])
+                else:
+                    member['birthday_str'] = '未知'
+            
+    finally:
+        conn.close()
+        
+    return render_template('suspected_errors.html', members=members)
+
 @app.route('/manager/tree')
 def tree():
     if 'user_id' not in session:
@@ -1386,6 +1411,7 @@ def add_member():
                 'family_rank': request.form.get('family_rank'),
                 'tags': request.form.get('tags'),
                 'notes': request.form.get('notes'),
+                'suspected_error': request.form.get('suspected_error') or '',
                 'source_record_id': request.form.get('source_record_id') or None,  # Save source record ID
                 'create_uid': session['user_id']  # 记录当前操作人
             }
@@ -1545,6 +1571,7 @@ def edit_member(member_id):
                 'family_rank': request.form.get('family_rank'),
                 'tags': request.form.get('tags'),
                 'notes': request.form.get('notes'),
+                'suspected_error': request.form.get('suspected_error') or '',
                 'source_record_id': request.form.get('source_record_id') or None,
                 'create_uid': session['user_id']  # 记录当前操作人
             }

+ 10 - 0
templates/add_member.html

@@ -235,6 +235,16 @@
                         </div>
                     </div>
                     
+                    <div class="section-title">疑似错误标注</div>
+                    <div class="row g-3 mb-4">
+                        <div class="col-md-12">
+                            <textarea name="suspected_error" class="form-control" rows="2">
+                                {{ '' if not member or not member.suspected_error or member.suspected_error in ['None', 'none', 'NULL', 'null'] else member.suspected_error }}
+                            </textarea>
+                            <div class="form-text mt-1">请在此标注该成员信息中可能存在的错误,例如出生日期矛盾、关系冲突等</div>
+                        </div>
+                    </div>
+                    
                     <!-- 悬浮的保存按钮,始终保持在一屏内或跟随页面底部 -->
                     <div class="d-grid gap-2 mb-4 sticky-bottom bg-white py-2 border-top" style="z-index: 1020;">
                         <button type="submit" class="btn btn-success btn-lg">

+ 6 - 0
templates/member_detail.html

@@ -244,6 +244,12 @@
                     <label class="info-label d-block mb-2">人员备注:</label>
                     <div class="p-3 bg-light rounded">{{ member.notes or '暂无' }}</div>
                 </div>
+                <div class="mb-4">
+                    <label class="info-label d-block mb-2">疑似错误标注:</label>
+                    <div class="p-3 bg-warning bg-opacity-10 border border-warning rounded text-warning">
+                        {{ member.suspected_error or '暂无' }}
+                    </div>
+                </div>
                 <div class="mb-4">
                     <label class="info-label d-block mb-2">职业背景:</label>
                     <div class="p-3 bg-light rounded">{{ member.occupation or '暂无信息' }}</div>

+ 1 - 0
templates/members.html

@@ -41,6 +41,7 @@
             </div>
         </form>
         <a href="{{ url_for('add_member') }}" class="btn btn-primary text-nowrap"><i class="bi bi-plus-lg"></i> 录入新成员</a>
+        <a href="{{ url_for('suspected_errors') }}" class="btn btn-warning text-nowrap"><i class="bi bi-exclamation-triangle"></i> 疑似汇总</a>
     </div>
 </div>
 

+ 54 - 0
templates/suspected_errors.html

@@ -0,0 +1,54 @@
+{% extends "layout.html" %}
+
+{% block title %}疑似错误汇总 - 家谱管理系统{% endblock %}
+
+{% block content %}
+<div class="d-flex justify-content-between align-items-center mb-4">
+    <h2><i class="bi bi-exclamation-triangle"></i> 疑似错误汇总</h2>
+    <a href="{{ url_for('members') }}" class="btn btn-outline-secondary"><i class="bi bi-arrow-left"></i> 返回成员列表</a>
+</div>
+
+<div class="card shadow-sm border-0">
+    <div class="card-body p-0">
+        <div class="table-responsive">
+            <table class="table table-hover align-middle mb-0">
+                <thead class="table-light">
+                    <tr>
+                        <th>ID</th>
+                        <th>姓名</th>
+                        <th>性别</th>
+                        <th>出生日期</th>
+                        <th>世系世代</th>
+                        <th>疑似错误标注</th>
+                        <th>操作</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    {% for member in members %}
+                    <tr>
+                        <td>{{ member.id }}</td>
+                        <td>{{ member.name }} {% if member.simplified_name and member.simplified_name != member.name %}({{ member.simplified_name }}){% endif %}</td>
+                        <td>{{ '男' if member.sex == 1 else '女' }}</td>
+                        <td>{{ member.birthday_str }}</td>
+                        <td>{{ member.name_word_generation or '未知' }}</td>
+                        <td>
+                            <div class="text-warning">
+                                {{ member.suspected_error }}
+                            </div>
+                        </td>
+                        <td>
+                            <a href="{{ url_for('member_detail', member_id=member.id) }}" class="btn btn-sm btn-primary"><i class="bi bi-eye"></i> 查看详情</a>
+                            <a href="{{ url_for('edit_member', member_id=member.id) }}" class="btn btn-sm btn-outline-secondary"><i class="bi bi-pencil"></i> 编辑</a>
+                        </td>
+                    </tr>
+                    {% else %}
+                    <tr>
+                        <td colspan="7" class="text-center text-muted">暂无标注疑似错误的成员</td>
+                    </tr>
+                    {% endfor %}
+                </tbody>
+            </table>
+        </div>
+    </div>
+</div>
+{% endblock %}