feat(project): 初始化项目结构和配置

- 添加.gitignore和.flaskenv环境配置文件
- 创建Flask应用基础架构,包括models、services、utils模块
- 配置数据库模型User和Setting,集成SQLAlchemy和Alembic迁移
- 添加前端Vue项目结构,包含Element Plus组件库
- 配置前后端API路由和蓝prints模块
- 实现书籍下载服务BookService功能模块
- 添加代码规范配置.editorconfig、.oxfmtrc.json、.oxlintrc.json
- 配置VSCode推荐插件和前端构建工具链
- 实现文件服务FileService和相关业务逻辑
This commit is contained in:
2026-04-19 15:43:45 +08:00
parent b9fad6344f
commit ade1b6c9b0
63 changed files with 9610 additions and 1 deletions
@@ -0,0 +1,24 @@
"""手动修改
Revision ID: 622c1972f4af
Revises: b961883c5443
Create Date: 2026-03-27 17:22:02.655446
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '622c1972f4af'
down_revision = 'b961883c5443'
branch_labels = None
depends_on = None
def upgrade():
pass
def downgrade():
pass
+54
View File
@@ -0,0 +1,54 @@
"""init
Revision ID: b961883c5443
Revises:
Create Date: 2026-03-25 19:08:34.121849
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'b961883c5443'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('setting',
sa.Column('name', sa.String(length=64), nullable=False),
sa.Column('mod', sa.String(length=64), nullable=True),
sa.Column('fid', sa.Integer(), nullable=False),
sa.Column('orderby', sa.String(length=64), nullable=True),
sa.Column('baseUrl', sa.String(length=64), nullable=True),
sa.Column('targetDate', sa.String(length=64), nullable=True),
sa.Column('targetCountDownPage', sa.Integer(), nullable=True),
sa.Column('totalPage', sa.Integer(), nullable=True),
sa.Column('privilegeLevel', sa.Integer(), nullable=True),
sa.PrimaryKeyConstraint('fid')
)
with op.batch_alter_table('setting', schema=None) as batch_op:
batch_op.create_index(batch_op.f('ix_setting_mod'), ['mod'], unique=True)
op.create_table('user',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('username', sa.String(length=80), nullable=False),
sa.Column('email', sa.String(length=120), nullable=False),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('email'),
sa.UniqueConstraint('username')
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('user')
with op.batch_alter_table('setting', schema=None) as batch_op:
batch_op.drop_index(batch_op.f('ix_setting_mod'))
op.drop_table('setting')
# ### end Alembic commands ###