Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
7c8a3b4
[feat]: 组织管理基本功能
Xian-Yu0 May 12, 2025
5ce6150
[feat]: 组织管理基本功能
Xian-Yu0 May 14, 2025
75fd5af
[feat]: 组织管理基本功能
Xian-Yu0 May 23, 2025
8af0227
[feat]: 组织管理基本功能
Xian-Yu0 May 23, 2025
8483e17
Merge pull request #75 from BUAA-SE-coders007/feature/group_basic_man…
coder0xe May 23, 2025
c4366ee
[feat]: 实现图床
Fantasylee21 May 25, 2025
6fea4fc
[feat]: 更新头像位置
Fantasylee21 May 25, 2025
255929f
[docs]: 更新requirements.txt
Fantasylee21 May 25, 2025
da39a51
[fix]: 修补存储问题
Fantasylee21 May 25, 2025
bb0d212
[fix]: 修补存储问题
Fantasylee21 May 25, 2025
e700694
Merge pull request #76 from BUAA-SE-coders007/feat/img
Fantasylee21 May 25, 2025
46eef76
[feat]: 完成搜索功能
Fantasylee21 May 25, 2025
9d9ff28
[feat]: 增加搜索条件
Fantasylee21 May 25, 2025
590401c
Merge pull request #78 from BUAA-SE-coders007/feature/search
Fantasylee21 May 25, 2025
5d4eb57
[feat]: 增加ai相关功能
Fantasylee21 May 26, 2025
2d493f8
[docs]: 更新requirements.txt
Fantasylee21 May 26, 2025
fd34cc4
Merge pull request #79 from BUAA-SE-coders007/feature/relatedai
Fantasylee21 May 26, 2025
ccf0706
[fix]: 完成文献综述
Fantasylee21 May 27, 2025
450a7b7
Merge pull request #81 from BUAA-SE-coders007/fix/80
Fantasylee21 May 27, 2025
d6a8a2b
[feat]: 组织管理功能
Xian-Yu0 May 28, 2025
ca2f0e5
[feat]: 增加智能推荐
Fantasylee21 May 28, 2025
01da005
[feat]: 组织管理功能
Xian-Yu0 May 28, 2025
de361f2
Merge pull request #82 from BUAA-SE-coders007/feature/group_management
coder0xe May 29, 2025
c79bda5
[chore]: 增加接口返回信息
Xian-Yu0 May 30, 2025
62cba83
Merge pull request #83 from BUAA-SE-coders007/chore/add_return_info
coder0xe May 30, 2025
452e9c2
[feat]: query note permission
Xian-Yu0 May 31, 2025
c578e49
Merge pull request #84 from BUAA-SE-coders007/feature/query_note_perm…
Xian-Yu0 May 31, 2025
6f1c052
[fix]: 纵向排列
Fantasylee21 May 31, 2025
377cc6b
Merge pull request #87 from BUAA-SE-coders007/fix/85
Fantasylee21 May 31, 2025
cc9fae8
[fix]: 增加文献简介
Fantasylee21 Jun 1, 2025
831ed4c
Merge pull request #89 from BUAA-SE-coders007/fix/88
coder0xe Jun 1, 2025
2eeb340
[chore]: 获取权限增加返回id
Xian-Yu0 Jun 1, 2025
f60c409
Merge pull request #90 from BUAA-SE-coders007/chore/get_permissions_r…
Xian-Yu0 Jun 1, 2025
6e6d68c
[fix]: AI端修复支持组织文献转存
Fantasylee21 Jun 2, 2025
e82a917
Merge pull request #92 from BUAA-SE-coders007/fix/91
Fantasylee21 Jun 2, 2025
c57e26f
[feat]: 在个人文献中搜索
Xian-Yu0 Jun 6, 2025
f32efc1
Merge pull request #93 from BUAA-SE-coders007/feature/search_self_art…
Xian-Yu0 Jun 6, 2025
23cca5a
[fix]: 限制通过id阅读所有文献
Xian-Yu0 Jun 6, 2025
3c8cee2
Merge pull request #95 from BUAA-SE-coders007/fix/94
coder0xe Jun 6, 2025
c84b36c
[fix]: 修复笔记保存内容长度限制
Xian-Yu0 Jun 6, 2025
e0aff9f
Merge pull request #97 from BUAA-SE-coders007/fix/96
Xian-Yu0 Jun 6, 2025
4f26f94
[fix]: 修复文献库文献转储路径
Xian-Yu0 Jun 6, 2025
13181ea
[fix]: 修复500报错
Fantasylee21 Jun 7, 2025
2ab444a
Merge pull request #99 from BUAA-SE-coders007/fix/98
Fantasylee21 Jun 7, 2025
1967811
[fix]: 完成组织转存
Fantasylee21 Jun 7, 2025
1bf936c
[fix]: 进一步完善潜在bug
Fantasylee21 Jun 7, 2025
f845f70
Merge pull request #101 from BUAA-SE-coders007/fix/100
Fantasylee21 Jun 7, 2025
e97a784
[feat]: 组织基本信息新增创建时间
Xian-Yu0 Jun 7, 2025
834631b
Merge pull request #102 from BUAA-SE-coders007/feature/provide_create…
Xian-Yu0 Jun 7, 2025
3f89699
[fix]: 修复组织文献不可阅读
Xian-Yu0 Jun 7, 2025
6e4d0aa
Merge pull request #104 from BUAA-SE-coders007/fix/103
Xian-Yu0 Jun 7, 2025
2e549c4
[fix]: 完善提示词
Fantasylee21 Jun 7, 2025
1aab435
Merge pull request #106 from BUAA-SE-coders007/fix/105
Fantasylee21 Jun 7, 2025
d738ca3
[fix]: 更新点击量设置
Fantasylee21 Jun 7, 2025
64b1e75
Merge pull request #108 from BUAA-SE-coders007/fix/107
Fantasylee21 Jun 7, 2025
bb605ca
[fix]: 修改密钥并进行隐藏
Fantasylee21 Jun 8, 2025
18eeb27
[fix]: 针对更新内容增加env
Fantasylee21 Jun 8, 2025
76a8357
Merge pull request #114 from BUAA-SE-coders007/fix/109
Fantasylee21 Jun 8, 2025
f4897b4
[fix]: 增加权限控制
Xian-Yu0 Jun 8, 2025
c7eff65
Merge pull request #116 from BUAA-SE-coders007/fix/112
Xian-Yu0 Jun 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .env

This file was deleted.

15 changes: 13 additions & 2 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,18 @@ jobs:
pip install -r requirements.txt

- name: Check FastAPI Server
env:
ALGORITHM: ${{ secrets.ALGORITHM }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
FERNET_SECRET_KEY: ${{ secrets.FERNET_SECRET_KEY }}
KIMI_API_KEY: ${{ secrets.KIMI_API_KEY }}
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_PATH: ${{ secrets.REMOTE_PATH }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
SECRET_KEY: ${{ secrets.SECRET_KEY }}
SENDER_PASSWORD: ${{ secrets.SENDER_PASSWORD }}
SERVER_SSH_KEY: ${{ secrets.SERVER_SSH_KEY }}
SQLALCHEMY_DATABASE_URL: ${{ secrets.SQLALCHEMY_DATABASE_URL }}
run: |
uvicorn app.main:app --host 0.0.0.0 --port 8000 --log-level warning &
sleep 5
curl -f http://localhost:8000/docs
sleep 5
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
env
__pycache__
articles
app.log
app.log
.env
1 change: 0 additions & 1 deletion alembic.ini
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ version_path_separator = os
# are written from script.py.mako
# output_encoding = utf-8

sqlalchemy.url = mysql+pymysql://root:[email protected]:3306/JieNote


[post_write_hooks]
Expand Down
7 changes: 6 additions & 1 deletion alembic/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,17 @@
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
import os
from dotenv import load_dotenv

# 加载.env文件
load_dotenv()
# Interpret the config file for Python logging.
# This line sets up loggers basically.
if config.config_file_name is not None:
fileConfig(config.config_file_name)

sqlalchemy_url = os.environ.get("DATABASE_URL")
config.set_main_option("sqlalchemy.url", sqlalchemy_url)
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""Article、ArticleDB表增加点击量

Revision ID: 023952869ee6
Revises: f89d896e9b57
Create Date: 2025-05-27 20:53:36.631307

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '023952869ee6'
down_revision: Union[str, None] = 'f89d896e9b57'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('articleDB', sa.Column('clicks', sa.Integer(), nullable=False))
op.add_column('articles', sa.Column('clicks', sa.Integer(), nullable=False))
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('articles', 'clicks')
op.drop_column('articleDB', 'clicks')
# ### end Alembic commands ###
32 changes: 32 additions & 0 deletions alembic/versions/0ff7f968ec3b_增加文献库简介.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""增加文献库简介

Revision ID: 0ff7f968ec3b
Revises: 9256d579f585
Create Date: 2025-06-01 19:36:53.514027

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '0ff7f968ec3b'
down_revision: Union[str, None] = '9256d579f585'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('articleDB', sa.Column('intro', sa.Text(), nullable=True))
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('articleDB', 'intro')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Article表增加所属个人或组织

Revision ID: 56dcd6190dd0
Revises: 023952869ee6
Create Date: 2025-05-27 21:37:05.492437

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '56dcd6190dd0'
down_revision: Union[str, None] = '023952869ee6'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('articles', sa.Column('user_id', sa.Integer(), nullable=True))
op.add_column('articles', sa.Column('group_id', sa.Integer(), nullable=True))
op.create_foreign_key(None, 'articles', 'groups', ['group_id'], ['id'])
op.create_foreign_key(None, 'articles', 'users', ['user_id'], ['id'])
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(None, 'articles', type_='foreignkey')
op.drop_constraint(None, 'articles', type_='foreignkey')
op.drop_column('articles', 'group_id')
op.drop_column('articles', 'user_id')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"""权限定义、删除申请表,Article表URL

Revision ID: 618f8bcbc41e
Revises: 56dcd6190dd0
Create Date: 2025-05-27 23:08:11.483163

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '618f8bcbc41e'
down_revision: Union[str, None] = '56dcd6190dd0'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('delete_applications',
sa.Column('group_id', sa.Integer(), nullable=True),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('item_type', sa.Integer(), nullable=False),
sa.Column('item_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['groups.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.PrimaryKeyConstraint('user_id', 'item_type', 'item_id')
)
op.create_table('operate_permissions',
sa.Column('group_id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('item_type', sa.Integer(), nullable=False),
sa.Column('item_id', sa.Integer(), nullable=False),
sa.Column('accessible', sa.Boolean(), nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['groups.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.PrimaryKeyConstraint('group_id', 'user_id', 'item_type', 'item_id')
)
op.add_column('articles', sa.Column('url', sa.String(length=200), nullable=False))
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('articles', 'url')
op.drop_table('operate_permissions')
op.drop_table('delete_applications')
# ### end Alembic commands ###
34 changes: 34 additions & 0 deletions alembic/versions/6a0b40746e6c_note表group_id.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""Note表group_id

Revision ID: 6a0b40746e6c
Revises: 618f8bcbc41e
Create Date: 2025-05-27 23:56:45.363419

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '6a0b40746e6c'
down_revision: Union[str, None] = '618f8bcbc41e'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('notes', sa.Column('group_id', sa.Integer(), nullable=True))
op.create_foreign_key(None, 'notes', 'groups', ['group_id'], ['id'])
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(None, 'notes', type_='foreignkey')
op.drop_column('notes', 'group_id')
# ### end Alembic commands ###
38 changes: 38 additions & 0 deletions alembic/versions/9256d579f585_组织管理数据库.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""组织管理数据库

Revision ID: 9256d579f585
Revises: 6a0b40746e6c
Create Date: 2025-05-28 23:35:01.332825

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '9256d579f585'
down_revision: Union[str, None] = '6a0b40746e6c'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint('articles_ibfk_2', 'articles', type_='foreignkey')
op.create_foreign_key(None, 'articles', 'groups', ['group_id'], ['id'], ondelete='CASCADE')
op.drop_constraint('notes_ibfk_4', 'notes', type_='foreignkey')
op.create_foreign_key(None, 'notes', 'groups', ['group_id'], ['id'], ondelete='CASCADE')
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(None, 'notes', type_='foreignkey')
op.create_foreign_key('notes_ibfk_4', 'notes', 'groups', ['group_id'], ['id'])
op.drop_constraint(None, 'articles', type_='foreignkey')
op.create_foreign_key('articles_ibfk_2', 'articles', 'groups', ['group_id'], ['id'])
# ### end Alembic commands ###
32 changes: 32 additions & 0 deletions alembic/versions/f89d896e9b57_作者名字.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""作者名字

Revision ID: f89d896e9b57
Revises: fd8714315ad3
Create Date: 2025-05-25 17:48:14.924693

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'f89d896e9b57'
down_revision: Union[str, None] = 'fd8714315ad3'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
47 changes: 47 additions & 0 deletions alembic/versions/fd8714315ad3_优化user_group和group表.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"""优化user_group和group表

Revision ID: fd8714315ad3
Revises: 004c4aa2b3f3
Create Date: 2025-05-23 13:09:52.425623

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import mysql

# revision identifiers, used by Alembic.
revision: str = 'fd8714315ad3'
down_revision: Union[str, None] = '004c4aa2b3f3'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('enter_application')
op.add_column('groups', sa.Column('avatar', sa.String(length=100), nullable=True))
op.add_column('user_group', sa.Column('level', sa.Integer(), nullable=True))
op.drop_column('user_group', 'is_admin')
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('user_group', sa.Column('is_admin', mysql.TINYINT(display_width=1), autoincrement=False, nullable=True))
op.drop_column('user_group', 'level')
op.drop_column('groups', 'avatar')
op.create_table('enter_application',
sa.Column('user_id', mysql.INTEGER(), autoincrement=False, nullable=False),
sa.Column('group_id', mysql.INTEGER(), autoincrement=False, nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['groups.id'], name='enter_application_ibfk_1'),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name='enter_application_ibfk_2'),
sa.PrimaryKeyConstraint('user_id', 'group_id'),
mysql_collate='utf8mb4_0900_ai_ci',
mysql_default_charset='utf8mb4',
mysql_engine='InnoDB'
)
# ### end Alembic commands ###
Loading