Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
customer-recall
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tools
customer-recall
Commits
51baad37
Commit
51baad37
authored
Aug 08, 2025
by
yiling.shen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加回访记录API到auth_system;支持内存存储作为数据库备用方案
parent
6f95a187
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
143 additions
and
2 deletions
+143
-2
auth_system.py
+143
-2
No files found.
auth_system.py
View file @
51baad37
...
...
@@ -13,6 +13,15 @@ import time
from
flask
import
Flask
,
request
,
jsonify
,
session
,
redirect
,
render_template_string
,
send_file
,
url_for
from
datetime
import
datetime
,
timedelta
# 尝试导入回访记录相关模块
try
:
from
callback_record_mysql
import
MySQLCallbackRecordManager
,
CallbackRecord
from
database_config
import
DatabaseConfig
CALLBACK_AVAILABLE
=
True
except
ImportError
as
e
:
print
(
f
"⚠️ 回访记录模块导入失败: {e}"
)
CALLBACK_AVAILABLE
=
False
# 尝试导入clinic_config,如果失败则使用默认配置
try
:
from
clinic_config
import
DEFAULT_USERS
,
get_user_by_username
,
get_clinic_info
...
...
@@ -172,11 +181,36 @@ class AuthSystem:
# 创建Flask应用
app
=
Flask
(
__name__
)
app
.
secret_key
=
os
.
environ
.
get
(
'SECRET_KEY'
,
'dev_secret_key_2024'
)
app
.
secret_key
=
os
.
getenv
(
'SECRET_KEY'
,
'dev_secret_key_2024'
)
#
创建认证系统实例
#
初始化认证系统
auth_system
=
AuthSystem
()
# 初始化回访记录管理器
db_manager
=
None
# 临时存储(当数据库不可用时使用)
temp_callback_records
=
{}
if
CALLBACK_AVAILABLE
:
try
:
# 直接使用环境变量构建数据库配置
db_config
=
{
'host'
:
os
.
getenv
(
'DB_HOST'
,
'mysql'
),
'port'
:
int
(
os
.
getenv
(
'DB_PORT'
,
'3306'
)),
'user'
:
os
.
getenv
(
'DB_USER'
,
'callback_user'
),
'password'
:
os
.
getenv
(
'DB_PASSWORD'
,
''
),
'database'
:
os
.
getenv
(
'DB_NAME'
,
'callback_system'
),
'charset'
:
'utf8mb4'
}
print
(
f
"尝试连接数据库: {db_config['host']}:{db_config['port']}"
)
db_manager
=
MySQLCallbackRecordManager
(
db_config
)
print
(
"✅ 回访记录数据库管理器初始化成功"
)
except
Exception
as
e
:
print
(
f
"⚠️ 回访记录数据库管理器初始化失败: {e}"
)
print
(
"将使用临时内存存储"
)
db_manager
=
None
# 登录页面HTML模板
LOGIN_HTML
=
'''
<!DOCTYPE html>
...
...
@@ -303,6 +337,113 @@ LOGIN_HTML = '''
</html>
'''
@app.route
(
'/api/health'
,
methods
=
[
'GET'
])
def
health_check
():
"""健康检查端点"""
return
jsonify
({
'status'
:
'ok'
,
'timestamp'
:
datetime
.
now
()
.
isoformat
(),
'service'
:
'auth_system'
,
'version'
:
'1.0.0'
})
@app.route
(
'/api/callback-records'
,
methods
=
[
'POST'
])
def
save_callback_record
():
"""保存回访记录API"""
try
:
data
=
request
.
get_json
()
# 验证必需字段
required_fields
=
[
'caseNumber'
,
'callbackMethods'
]
for
field
in
required_fields
:
if
field
not
in
data
or
not
data
[
field
]:
return
jsonify
({
'success'
:
False
,
'message'
:
f
'缺少必需字段: {field}'
}),
400
# 构建回访记录内容
callback_record
=
data
.
get
(
'callbackRecord'
,
''
)
if
not
callback_record
:
# 如果没有提供callbackRecord,根据其他字段构建
result
=
data
.
get
(
'callbackResult'
,
'成功'
)
methods
=
', '
.
join
(
data
.
get
(
'callbackMethods'
,
[]))
callback_record
=
f
"回访方式: {methods}, 回访结果: {result}"
if
result
==
'成功'
and
data
.
get
(
'nextAppointmentTime'
):
callback_record
+=
f
", 下次预约时间: {data['nextAppointmentTime']}"
elif
result
==
'不成功'
and
data
.
get
(
'failureReason'
):
callback_record
+=
f
", 失败原因: {data['failureReason']}"
elif
result
==
'放弃回访'
and
data
.
get
(
'abandonReason'
):
callback_record
+=
f
", 放弃原因: {data['abandonReason']}"
if
db_manager
:
# 使用数据库存储
record
=
CallbackRecord
(
case_number
=
data
[
'caseNumber'
],
callback_methods
=
data
[
'callbackMethods'
],
callback_record
=
callback_record
,
operator
=
data
.
get
(
'operator'
,
'系统用户'
)
)
record_id
=
db_manager
.
save_record
(
record
)
else
:
# 使用临时内存存储
case_number
=
data
[
'caseNumber'
]
if
case_number
not
in
temp_callback_records
:
temp_callback_records
[
case_number
]
=
[]
record_id
=
len
(
temp_callback_records
[
case_number
])
+
1
temp_callback_records
[
case_number
]
.
append
({
'id'
:
record_id
,
'case_number'
:
case_number
,
'callback_methods'
:
data
[
'callbackMethods'
],
'callback_record'
:
callback_record
,
'operator'
:
data
.
get
(
'operator'
,
'系统用户'
),
'create_time'
:
datetime
.
now
()
.
isoformat
()
})
return
jsonify
({
'success'
:
True
,
'id'
:
record_id
,
'message'
:
'保存成功'
,
'timestamp'
:
datetime
.
now
()
.
isoformat
(),
'storage'
:
'database'
if
db_manager
else
'memory'
})
except
Exception
as
e
:
print
(
f
"保存回访记录失败: {e}"
)
return
jsonify
({
'success'
:
False
,
'message'
:
f
'保存失败: {str(e)}'
}),
500
@app.route
(
'/api/callback-records/<case_number>'
,
methods
=
[
'GET'
])
def
get_callback_records
(
case_number
):
"""获取回访记录API"""
try
:
if
db_manager
:
# 从数据库获取
records
=
db_manager
.
get_records_by_case_number
(
case_number
)
record_data
=
[
record
.
to_dict
()
for
record
in
records
]
else
:
# 从临时内存获取
record_data
=
temp_callback_records
.
get
(
case_number
,
[])
return
jsonify
({
'success'
:
True
,
'data'
:
record_data
,
'count'
:
len
(
record_data
),
'timestamp'
:
datetime
.
now
()
.
isoformat
(),
'storage'
:
'database'
if
db_manager
else
'memory'
})
except
Exception
as
e
:
print
(
f
"获取回访记录失败: {e}"
)
return
jsonify
({
'success'
:
False
,
'message'
:
f
'获取失败: {str(e)}'
}),
500
@app.route
(
'/'
)
def
index
():
"""主页 - 重定向到登录页面"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment