diff --git a/Template/ADR_Template.md b/Template/ADR_Template.md index d2f3fd8..27b52e2 100644 --- a/Template/ADR_Template.md +++ b/Template/ADR_Template.md @@ -5,21 +5,27 @@ * **日期**: [YYYY-MM-DD] ## 1. 背景 (Context) + *描述我们需要解决的问题是什么,以及当前的限制条件。* *例如:当前的标书生成速度过慢(平均 5分钟),因为是同步调用 LLM。并发量上来后,服务器阻塞严重。* ## 2. 决策 (Decision) + *描述我们决定做什么。* *例如:我们将引入 Celery + Redis 实现异步任务队列,将生成任务剥离出主线程。* ## 3. 备选方案 (Alternatives) + *我们还考虑了什么方案?为什么没选?* + * **方案 A**:使用 Python 原生 asyncio。 - * *原因*:CPU 密集型任务下 asyncio 表现不佳,且无法跨机器扩展。 + * *原因*:CPU 密集型任务下 asyncio 表现不佳,且无法跨机器扩展。 * **方案 B**:使用 Kafka。 - * *原因*:对于当前体量,Kafka 运维成本过高,Redis 足够轻量。 + * *原因*:对于当前体量,Kafka 运维成本过高,Redis 足够轻量。 ## 4. 后果 (Consequences) + *决策带来的好处和坏处(权衡)。* + * **好**:API 响应时间降至 100ms;支持水平扩展 Worker 节点。 -* **坏**:增加了运维 Redis 和 Celery Worker 的复杂度;调试异步任务比同步代码困难。 \ No newline at end of file +* **坏**:增加了运维 Redis 和 Celery Worker 的复杂度;调试异步任务比同步代码困难。 diff --git a/Template/ADR_Template.pdf b/Template/ADR_Template.pdf new file mode 100644 index 0000000..583f688 Binary files /dev/null and b/Template/ADR_Template.pdf differ diff --git a/Template/ChangeLog_template.md b/Template/ChangeLog_template.md index 24471b1..1f97637 100644 --- a/Template/ChangeLog_template.md +++ b/Template/ChangeLog_template.md @@ -3,16 +3,23 @@ 本项目的所有显著更改都将记录在此文件中。 ## [Unreleased] + ### Added + - 新增了 Docker 部署脚本 (MR-102)。 - 支持了 GPT-4o 模型接口。 ## [1.0.1] - 2025-11-04 + ### Fixed + - 修复了用户登录时 Token 过期导致的 500 错误 (#45)。 - 修复了移动端 CSS 样式错乱问题。 ## [1.0.0] - 2025-10-01 + ### Added + - 初始化项目,完成基础架构搭建。 -- 实现标书生成的 MVP 版本。 \ No newline at end of file +- 实现标书生成的 MVP 版本。 + \ No newline at end of file diff --git a/Template/ChangeLog_template.pdf b/Template/ChangeLog_template.pdf new file mode 100644 index 0000000..b145e9b Binary files /dev/null and b/Template/ChangeLog_template.pdf differ diff --git a/Template/README_Template.md b/Template/README_Template.md index e5570ed..21324d4 100644 --- a/Template/README_Template.md +++ b/Template/README_Template.md @@ -6,6 +6,7 @@ 这里写项目描述。例如:本项目是“南方电网标书生成系统”的后端服务,基于 LLM 实现标书内容的自动化生成与审核。 🛠 技术栈 + - **Language**: Python 3.10+ - **Framework**: FastAPI, LangChain - **Database**: PostgreSQL, Redis @@ -15,6 +16,7 @@ 1. 环境准备 确保本地已安装: + - Docker & Docker Compose - Python 3.10+ (推荐使用 Conda) @@ -32,32 +34,33 @@ pip install -r requirements.txt docker-compose up -d db redis 启动服务 uvicorn main:app --reload -访问 http://localhost:8000/docs 查看 API 文档。 +访问 查看 API 文档。 🏗 架构与目录结构 目录结构 -/src + +```/src /api # 接口层 /core # 核心配置与工具 /services # 业务逻辑 /models # 数据库模型 tests/ # 单元测试 docs/ # 详细文档 +``` -. -├─docs # 详细文档 +```. +├─docs # 详细文档 ├─src -│ ├─api # 接口层 -│ ├─core # 核心配置与工具 -│ ├─models # 数据库模型 -│ └─services # 业务逻辑 -└─tests # 单元测试 +│ ├─api # 接口层 +│ ├─core # 核心配置与工具 +│ ├─models # 数据库模型 +│ └─services # 业务逻辑 +└─tests # 单元测试 +``` 架构图 这里插入图片链接 -👥 维护者 -· Owner:@管元恺(oldpipe0123@gmail.com) +👥 维护者 +· Owner:@管元恺() · Backup:@陈长文 - -🤝 贡献指南(公司项目不需要) \ No newline at end of file diff --git a/Template/README_Template.pdf b/Template/README_Template.pdf new file mode 100644 index 0000000..52d9dbb Binary files /dev/null and b/Template/README_Template.pdf differ diff --git a/Template/git_commit_template.md b/Template/git_commit_template.md new file mode 100644 index 0000000..c2ec9e5 --- /dev/null +++ b/Template/git_commit_template.md @@ -0,0 +1,21 @@ +# git commit template + +## type (必填):提交的类别 + +- feat: 新功能 (feature) +- fix: 修补 bug +- docs: 仅文档更改 (documentation) +- style: 格式变动,不影响代码运行 (whitespace, formatting, missing semi-colons) +- refactor: 重构 (即不是新增功能,也不是修改bug的代码变动) +- perf: 提高性能的代码更改 +- test: 增加测试或修改现有测试 +- chore: 构建过程或辅助工具的变动 (maintain) +- revert: 回滚提交 + +## scope (选填):说明影响的范围(如模块名、组件名) + +例:feat(auth): ..., fix(nav-bar): ... + +## subject (必填) + +简短描述,不超过 50 个字符,使用祈使句,结尾不加句号。 diff --git a/Template/git_commit_template.pdf b/Template/git_commit_template.pdf new file mode 100644 index 0000000..fed5f9c Binary files /dev/null and b/Template/git_commit_template.pdf differ diff --git a/Template/pull_request_template.md b/Template/pull_request_template.md index c2acc21..322de26 100644 --- a/Template/pull_request_template.md +++ b/Template/pull_request_template.md @@ -1,17 +1,25 @@ +# PULL REQUEST TEMPLATE + ## 📝 变更目的 (Objective) + ## 🛠 变更内容 (Changes) + - [ ] 核心逻辑:修改了 X 算法的权重计算方式 - [ ] 数据库:新增 `user_status` 字段 - [ ] 配置:在 `config.yaml` 中添加了 Redis 超时设置 ## 📸 测试截图/证据 (Screenshots / Proof) + ## 🧪 测试计划 (Test Plan) + 1. 单元测试:运行 `pytest tests/auth` 通过 2. 手动测试:模拟用户登录失败 3 次,验证验证码是否弹出 ## ⚠️ 风险与副作用 (Risks & Side Effects) + ## ✅ 自查清单 (Self Checklist) + - [ ] 我的代码遵循项目的代码风格 (Lint 通过) - [ ] 我已经添加了必要的注释/文档 - [ ] 我没有提交敏感信息 (Passwords/Tokens) -- [ ] 本地测试全部通过 \ No newline at end of file +- [ ] 本地测试全部通过 diff --git a/Template/pull_request_template.pdf b/Template/pull_request_template.pdf new file mode 100644 index 0000000..d6ca703 Binary files /dev/null and b/Template/pull_request_template.pdf differ diff --git a/java/java-style.xm b/java/java-style.xml similarity index 99% rename from java/java-style.xm rename to java/java-style.xml index 7572aa2..4052b43 100644 --- a/java/java-style.xm +++ b/java/java-style.xml @@ -1,337 +1,337 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vscode/.editorconfig b/vscode/.editorconfig new file mode 100644 index 0000000..a0c3f0f --- /dev/null +++ b/vscode/.editorconfig @@ -0,0 +1,50 @@ +root = true + +# --- 全局设置 --- +[*] +charset = utf-8 +indent_style = tab +indent_size = 4 +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 100 + +# --- C# 专属设置 (关键) --- +[*.cs] +# 1. 缩进:强制 Tab +indent_style = tab + +# 2. 大括号风格:K&B (Open brace on same line) +# 这是一个“叛逆”的设置,因为 C# 默认是换行的 +csharp_new_line_before_open_brace = none +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true + +# 3. 命名规范检查 (适配您的 UserDetail / GetUser / userName) +# 说明:EditorConfig 可以配置 Roslyn 分析器来检查命名 + +# 类 (Class) -> PascalCase (UserDetail) +dotnet_naming_rule.classes_must_be_pascal_case.severity = warning +dotnet_naming_rule.classes_must_be_pascal_case.symbols = classes +dotnet_naming_rule.classes_must_be_pascal_case.style = pascal_case + +dotnet_naming_symbols.classes.applicable_kinds = class, struct, enum, interface +dotnet_naming_style.pascal_case.capitalization = pascal_case + +# 方法 (Method) -> PascalCase (GetUser) +dotnet_naming_rule.methods_must_be_pascal_case.severity = warning +dotnet_naming_rule.methods_must_be_pascal_case.symbols = methods +dotnet_naming_rule.methods_must_be_pascal_case.style = pascal_case + +dotnet_naming_symbols.methods.applicable_kinds = method + +# 局部变量/参数 (Function Name/Local) -> camelCase (userName) +dotnet_naming_rule.locals_must_be_camel_case.severity = warning +dotnet_naming_rule.locals_must_be_camel_case.symbols = locals +dotnet_naming_rule.locals_must_be_camel_case.style = camel_case + +dotnet_naming_symbols.locals.applicable_kinds = local, parameter + +dotnet_naming_style.camel_case.capitalization = camel_case diff --git a/vscode/extensions.json b/vscode/extensions.json index c0b9565..5dff57c 100644 --- a/vscode/extensions.json +++ b/vscode/extensions.json @@ -1,22 +1,24 @@ { - "recommendations": [ - "ms-python.python", - "ms-python.black-formatter", - "ms-python.flake8", - - "ms-vscode.cpptools", - "ms-vscode.cpptools-extension-pack", - - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - - "vscjava.vscode-java-pack", - "shengchen.vscode-checkstyle", - - "editorconfig.editorconfig", - "eamodio.gitlens", - "mhutchie.git-graph" - ], - - "unwantedRecommendations": [] -} + "recommendations": [ + // --- Python 核心与工具 --- + "ms-python.python", + "ms-python.pylint", // 替换 Flake8,用于静态检查 (命名规范、错误) + "ms-python.autopep8", // 替换 Black,用于代码格式化 (支持 Tab 缩进) + // --- C++ 开发 --- + "ms-vscode.cpptools", + "ms-vscode.cpptools-extension-pack", + // --- Java 开发 --- + "vscjava.vscode-java-pack", + "shengchen.vscode-checkstyle", // 配合 google_checks.xml 修改版可强制 Java 规范 + // --- 前端/通用 (JS/TS) --- + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", // 注意:需配置 .prettierrc 以支持 Tab + // --- 通用工具 --- + "editorconfig.editorconfig", // 核心:统一控制所有语言的 Tab/缩进 + "eamodio.gitlens", + "mhutchie.git-graph" + ], + "unwantedRecommendations": [ + "ms-python.black-formatter" // 明确列入黑名单,防止误装 + ] +} \ No newline at end of file diff --git a/vscode/settings.json b/vscode/settings.json index 3b22a08..92413bf 100644 --- a/vscode/settings.json +++ b/vscode/settings.json @@ -1,39 +1,76 @@ -// .vscode/settings.json { - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.organizeImports": "explicit" - }, - - "[python]": { - "editor.defaultFormatter": "ms-python.black-formatter" - }, - - "C_Cpp.clang_format_style": "file", - - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" - } - }, - - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" - } - }, - - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - - "[java]": { - "editor.defaultFormatter": "redhat.java" }, - "java.format.settings.url": "java-style.xml", - "java.format.settings.profile": "GoogleStyle", - "java.checkstyle.enabled": true, - "java.checkstyle.configuration": "${workspaceFolder}/checkstyle.xml", - "java.checkstyle.version": "10.12.0" + // --- 全局核心风格配置 --- + // 强制使用 Tab,严禁空格 + "editor.insertSpaces": false, + "editor.tabSize": 4, + "editor.detectIndentation": false, // 防止打开非标文件时被带偏 + // 行宽 100 字符辅助线 + "editor.rulers": [ + 100 + ], + "editor.wordWrapColumn": 100, + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.organizeImports": "explicit" + }, + // --- Python 配置 (关键修改) --- + "[python]": { + // 替换 Black 为 Autopep8 (因为 Black 不支持 Tab) + "editor.defaultFormatter": "ms-python.autopep8", + "editor.insertSpaces": false, + "editor.tabSize": 4 + }, + // Autopep8 参数:强制 100 字符行宽,允许 Tab + "autopep8.args": [ + "--max-line-length", + "100", + "--ignore", + "E121" // 忽略部分缩进对齐警告 + ], + // Pylint 参数:指定配置文件路径 + "pylint.args": [ + "--rcfile=${workspaceFolder}/.pylintrc" + ], + // Python 环境管理 (保留您原有的设置) + "python-envs.defaultEnvManager": "ms-python.python:conda", + "python-envs.defaultPackageManager": "ms-python.python:conda", + "python-envs.pythonProjects": [], + // --- C++ 配置 --- + // 读取根目录的 .clang-format 文件 (Tab, K&B, BigCamel 等规则由此文件控制) + "C_Cpp.clang_format_style": "file", + // --- JavaScript / TypeScript 配置 --- + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.insertSpaces": false, // 覆盖 Prettier 默认的 Space + "editor.tabSize": 4, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + } + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.insertSpaces": false, // 覆盖 Prettier 默认的 Space + "editor.tabSize": 4, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + } + }, + // 注意:Prettier 通常优先读取 .prettierrc 文件。 + // 如果您有 .prettierrc,请务必在其中设置 "useTabs": true, "tabWidth": 4 + // --- JSON 配置 --- + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + // --- Java 配置 --- + "[java]": { + "editor.defaultFormatter": "redhat.java", + "editor.insertSpaces": false, + "editor.tabSize": 4 + }, + // Java 格式化规则文件 (需要您确保这两个 XML 也是配置为 Tab 缩进) + "java.format.settings.url": "java-style.xml", + "java.format.settings.profile": "GoogleStyle", + "java.checkstyle.enabled": true, + "java.checkstyle.configuration": "${workspaceFolder}/checkstyle.xml", + "java.checkstyle.version": "10.12.0" } \ No newline at end of file