diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml new file mode 100644 index 0000000..9773fdf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -0,0 +1,91 @@ +name: "🐛 Bug 报告" +description: "报告一个可复现的错误或问题" +title: "[Bug] " +labels: ["bug", "triage"] +body: + - type: markdown + attributes: + value: "## 感谢您提交错误报告!\n请提供详细的信息以便我们快速定位和解决问题。" + + - type: checkboxes + id: prerequisites + attributes: + label: "提交前确认" + description: "请确认以下事项" + options: + - label: "我已经搜索过现有的Issue,没有找到相同问题" + required: true + - label: "我已在最新版本中验证此问题仍然存在" + required: true + + - type: input + id: version + attributes: + label: "版本信息" + description: "您使用的项目版本、Commit Hash或发布日期" + placeholder: "例如:v2.1.0 或 a1b2c3d" + validations: + required: true + + - type: dropdown + id: environment + attributes: + label: "环境类型" + description: "选择问题发生的环境" + options: + - "开发环境" + - "测试环境" + - "生产环境" + - "本地环境" + validations: + required: true + + - type: input + id: os + attributes: + label: "操作系统" + description: "操作系统和版本号" + placeholder: "例如:Windows 11 22H2, Ubuntu 22.04, macOS 14.0" + + - type: textarea + id: steps + attributes: + label: "复现步骤" + description: "清晰描述如何复现这个问题" + placeholder: "1. 进入 '...'\n2. 点击 '....'\n3. 滚动到 '....'\n4. 看到错误" + validations: + required: true + + - type: textarea + id: expected + attributes: + label: "预期行为" + description: "您期望发生什么?" + placeholder: "清晰简洁地描述您期望的结果" + validations: + required: true + + - type: textarea + id: actual + attributes: + label: "实际行为" + description: "实际发生了什么?" + placeholder: "清晰简洁地描述实际发生的结果" + validations: + required: true + + - type: textarea + id: logs + attributes: + label: "相关日志/截图" + description: "如果有错误日志、控制台输出或截图,请在此提供" + render: shell + + - type: checkboxes + id: terms + attributes: + label: "行为准则确认" + description: "请确认遵守项目的行为准则" + options: + - label: "我同意遵守此项目的行为准则" + required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..d85db41 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: "📚 查阅文档" + url: "https://github.com/Flyleague-Collection/Operating-document" + about: "请先查阅项目文档,很多问题已有解答" + - name: "💬 社区讨论" + url: "https://github.com/orgs/Flyleague-Collection/discussions" + about: "欢迎在这里提出想法和问题" \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml new file mode 100644 index 0000000..67e6248 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -0,0 +1,61 @@ +name: "📚 文档改进" +description: "报告文档问题或建议文档改进" +title: "[Docs] " +labels: ["documentation"] +body: + - type: markdown + attributes: + value: "## 感谢您帮助我们改进文档!\n清晰的文档对每个用户都很重要。" + + - type: input + id: doc_location + attributes: + label: "文档位置" + description: "相关文档的URL或文件路径" + placeholder: "例如:https://... 或 docs/getting-started.md" + validations: + required: true + + - type: dropdown + id: issue_type + attributes: + label: "问题类型" + description: "请选择文档问题的类型" + options: + - "拼写错误或语法问题" + - "信息不准确或过时" + - "内容缺失或不完整" + - "难以理解或混乱" + - "翻译问题" + - "其他" + validations: + required: true + + - type: textarea + id: current_content + attributes: + label: "当前内容" + description: "引用或描述当前的文档内容" + placeholder: "当前文档说:..." + validations: + required: true + + - type: textarea + id: suggested_content + attributes: + label: "建议的改进" + description: "您认为应该如何改进" + placeholder: "建议改为:..." + validations: + required: true + + - type: checkboxes + id: terms + attributes: + label: "确认事项" + description: "请确认以下事项" + options: + - label: "我已搜索过现有Issue,没有找到相同建议" + required: true + - label: "我同意遵守此项目的行为准则" + required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml new file mode 100644 index 0000000..f202710 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/enhancement.yml @@ -0,0 +1,50 @@ +name: "✨ 功能增强" +description: "对现有功能提出改进建议(非新功能)" +title: "[Enhance] " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: "## 感谢您提出改进建议!\n这个模板用于优化现有功能,而非请求全新功能。" + + - type: input + id: feature + attributes: + label: "相关功能" + description: "您希望改进哪个现有功能?" + placeholder: "例如:用户登录流程、数据导出功能等" + validations: + required: true + + - type: textarea + id: current_behavior + attributes: + label: "当前行为" + description: "当前这个功能是如何工作的?有什么不足?" + validations: + required: true + + - type: textarea + id: proposed_behavior + attributes: + label: "建议的改进" + description: "您希望如何改进这个功能?" + validations: + required: true + + - type: textarea + id: benefits + attributes: + label: "预期收益" + description: "这个改进会带来什么好处?" + + - type: checkboxes + id: terms + attributes: + label: "确认事项" + description: "请确认以下事项" + options: + - label: "我已搜索过现有Issue,没有找到相同建议" + required: true + - label: "我同意遵守此项目的行为准则" + required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000..1d111ab --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,54 @@ +name: "🚀 功能请求" +description: "为项目建议一个新功能或改进" +title: "[Feature] " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: "## 感谢您提出功能建议!\n请详细描述您的需求,帮助我们更好地理解。" + + - type: textarea + id: problem + attributes: + label: "问题描述" + description: "您希望解决什么问题?请描述您遇到的痛点或需求" + placeholder: "例如:我经常需要...,但目前系统不支持..." + validations: + required: true + + - type: textarea + id: solution + attributes: + label: "建议的解决方案" + description: "清晰描述您希望实现的功能" + placeholder: "我希望系统能够..." + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: "考虑的替代方案" + description: "您考虑过哪些替代方案?" + + - type: dropdown + id: priority + attributes: + label: "对您的重要程度" + description: "请选择这个功能对您的重要程度" + options: + - "非常重要 - 没有这个功能我很难使用" + - "重要 - 能显著改善使用体验" + - "一般 - 有的话会更好" + - "较低 - 只是一个想法" + + - type: checkboxes + id: terms + attributes: + label: "确认事项" + description: "请确认以下事项" + options: + - label: "我已搜索过现有Issue,没有找到相同建议" + required: true + - label: "我同意遵守此项目的行为准则" + required: true \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a30fd1..1de8925 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,12 +5,21 @@ on: branches: [main] pull_request: branches: [main] + workflow_dispatch: # 允许手动触发 + inputs: + skip_checks: + description: '跳过变更检测,强制构建和部署' + required: false + default: false + type: boolean permissions: contents: write jobs: build: +# needs: check_changes +# if: needs.check_changes.outputs.should_build == 'true' runs-on: ubuntu-latest outputs: commit_hash: ${{ steps.build-info.outputs.commit_hash }} @@ -19,6 +28,7 @@ jobs: python_version: ${{ steps.build-info.outputs.python_version }} build_date: ${{ steps.build-info.outputs.build_date }} branch_name: ${{ steps.build-info.outputs.branch_name }} + is_manual_trigger: ${{ github.event_name == 'workflow_dispatch' }} steps: - uses: actions/checkout@v4 @@ -32,17 +42,25 @@ jobs: cache: pip - name: Install Dependencies - run: pip install -r requirements.txt + run: | + python -m pip install --upgrade pip + # 确保安装 zensical 和项目依赖 + if [ -f requirements.txt ]; then + pip install -r requirements.txt + fi + # 确保 zensical 可用 + pip install zensical - name: Get build information id: build-info run: | echo "commit_hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT echo "commit_hash_long=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - echo "commit_message=$(git log -1 --pretty=%B | head -n 1)" >> $GITHUB_OUTPUT + echo "commit_message=$(git log -1 --pretty=%B | head -n 1 | tr -d '\n')" >> $GITHUB_OUTPUT echo "python_version=$(python --version | cut -d' ' -f2)" >> $GITHUB_OUTPUT echo "build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT + echo "is_manual_trigger=${{ github.event_name == 'workflow_dispatch' }}" >> $GITHUB_OUTPUT - name: Build Document run: zensical build @@ -52,59 +70,107 @@ jobs: with: name: site path: site + retention-days: 1 deploy_build: - needs: build - if: always() # <--- 即使 build 或 deploy_pages失败也执行 +# needs: [check_changes, build] + needs: [build] +# if: needs.check_changes.outputs.should_build == 'true' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/download-artifact@v4 with: name: site - path: site + path: ./site - name: Deploy to build branch +# if: steps.check_build_changes.outputs.no_changes == 'false' run: | - git init + # 修复:使用更简单直接的方法部署到 build 分支 + cd $GITHUB_WORKSPACE + + # 删除现有的 build 分支(如果存在)并重新创建 + git branch -D build 2>/dev/null || true git checkout --orphan build - cp -r site/. . + + # 清空当前分支内容 + git rm -rf . || true + + # 复制新构建的文件 + cp -r ./site/* ./ + + # 添加所有文件 git add . + + # 配置 Git 用户 git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - + + # 提交更改 git commit -m "Build: ${{ needs.build.outputs.commit_hash }} from ${{ needs.build.outputs.branch_name }} Python: ${{ needs.build.outputs.python_version }} Message: ${{ needs.build.outputs.commit_message }} - Date: ${{ needs.build.outputs.build_date }}" - - git remote add origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git - git push origin build --force + Date: ${{ needs.build.outputs.build_date }} + Manual Trigger: ${{ needs.build.outputs.is_manual_trigger }}" + + # 推送到 build 分支 + git push -f origin build + echo "✅ Successfully deployed to build branch" deploy_pages: - needs: build - if: always() # <--- 即使 build 或 deploy_build失败也执行 + needs: [build] + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/download-artifact@v4 with: name: site - path: site + path: ./site - name: Deploy to gh-pages branch +# if: steps.check_pages_changes.outputs.no_changes == 'false' run: | - git init + # 修复:使用更简单直接的方法部署到 gh-pages 分支 + cd $GITHUB_WORKSPACE + + # 删除现有的 gh-pages 分支(如果存在)并重新创建 + git branch -D gh-pages 2>/dev/null || true git checkout --orphan gh-pages - cp -r site/. . + + # 清空当前分支内容 + git rm -rf . || true + + # 复制新构建的文件 + cp -r ./site/* ./ + + # 添加 CNAME 文件(如果域名配置需要) echo "docs.master-gui.cn" > CNAME + # 添加所有文件 git add . + + # 配置 Git 用户 git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - + + # 提交更改 git commit -m "gh-pages: ${{ needs.build.outputs.commit_hash }} from ${{ needs.build.outputs.branch_name }} Python: ${{ needs.build.outputs.python_version }} Message: ${{ needs.build.outputs.commit_message }} - Date: ${{ needs.build.outputs.build_date }}" - - git remote add origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git - git push origin gh-pages --force + Date: ${{ needs.build.outputs.build_date }} + Manual Trigger: ${{ needs.build.outputs.is_manual_trigger }}" + + # 推送到 gh-pages 分支 + git push -f origin gh-pages + echo "✅ Successfully deployed to gh-pages branch" \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4bd1bec..fde9c04 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,68 +1,179 @@ - # 导出 build 分支且只包含其文件,防止 workflow 污染 - - - name: Prepare build branch for release artifacts - run: | - rm -rf build_files - git fetch origin build - git checkout build - # 导出 build 分支全部文件到 build_files - git ls-tree -z -r build --name-only | xargs -0 -I{} cp --parents {} build_files/ - git checkout main +name: Auto Release - - name: Create zipped artifact and record hash/size - run: | - cd build_files - zip -r ../build-artifacts.zip ./* - cd .. - sha256=$(sha256sum build-artifacts.zip | awk '{print $1}') - size_bytes=$(stat --format="%s" build-artifacts.zip) - if [ $size_bytes -gt 1048576 ]; then - size_str="$(echo "scale=1; $size_bytes/1048576" | bc) MB" - else - size_str="$size_bytes bytes" - fi - echo "$sha256" > build-artifacts.sha256 - echo "$size_str" > build-artifacts.size - date -u > build-artifacts.date +on: + schedule: + # 每天UTC时间12:00运行(对应北京时间20:00) + - cron: '0 12 * * *' + workflow_dispatch: # 允许手动触发 + inputs: + skip_check: + description: '跳过变更检测直接发布' + required: false + default: false + type: boolean + +env: + BUILD_BRANCH: 'build' # 设置构建分支 - - name: Advanced release note formatting and empty artifact checks - id: generate_body - run: | - last_tag="${{ steps.latest_tag.outputs.value }}" - version="${{ steps.next_version.outputs.value }}" - n_commit=$(git log "$last_tag"..HEAD --pretty=format:"%h" | wc -l) - n_contrib=$(git log "$last_tag"..HEAD --pretty=format:"%an" | sort | uniq | wc -l) - body="${version} 最新发行版\n\n本次更新共 ${n_commit} 个 commit,${n_contrib} 位贡献者。\n\n---\n" - # ... 分组 commit 分类 shell 如你现有 … - body+="\n---\n" - body+="### 贡献者\n" - git log "$last_tag"..HEAD --pretty=format:"%an" | sort | uniq | awk '{print "- " $0}' >> contributors.txt - body+="$(cat contributors.txt)\n" - body+="\n---\n" - # 附件格式优化 - size=$(cat build-artifacts.size) - hash=$(cat build-artifacts.sha256) - date=$(cat build-artifacts.date) - body+="### 附件资源包\n" - if [ ! -s build-artifacts.zip ] || [ "$size" = "0 bytes" ]; then - body+="未检测到 build 分支内容或打包文件为空(请检查build分支是否有实际内容)\n" +jobs: + check-changes: + runs-on: ubuntu-latest + outputs: + has_changes: ${{ steps.check-changes.outputs.has_changes }} + next_tag: ${{ steps.get-next-tag.outputs.next_tag }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ env.BUILD_BRANCH }} + fetch-depth: 0 # 获取所有历史记录 + + - name: Get next tag version + id: get-next-tag + run: | + # 获取最新的v1.0.x标签 + LATEST_TAG=$(git tag -l "v1.0.*" --sort=-v:refname | head -n 1 || echo "") + if [ -z "$LATEST_TAG" ]; then + NEXT_TAG="v1.0.0" + else + # 递增版本号 + BASE_VERSION=$(echo $LATEST_TAG | cut -d. -f1-2) + PATCH_VERSION=$(echo $LATEST_TAG | awk -F. '{print $3}') + NEXT_PATCH=$((PATCH_VERSION + 1)) + NEXT_TAG="${BASE_VERSION}.${NEXT_PATCH}" + fi + echo "next_tag=$NEXT_TAG" >> $GITHUB_OUTPUT + echo "Next tag: $NEXT_TAG" + + - name: Check for changes and set release flag + id: check-changes + run: | + # 如果是手动触发且选择跳过检测,则直接设置has_changes为true + if ${{ github.event_name == 'workflow_dispatch' && inputs.skip_check }}; then + echo "has_changes=true" >> $GITHUB_OUTPUT + echo "Manual trigger with skip check, forcing release" + else + # 否则,检查自上一个标签以来的变更 + LATEST_TAG=$(git tag -l "v1.0.*" --sort=-v:refname | head -n 1 || echo "") + if [ -z "$LATEST_TAG" ]; then + echo "has_changes=true" >> $GITHUB_OUTPUT + echo "No existing tags, proceeding with release" else - body+="**build-artifacts.zip**\n" - body+="sha256: \`${hash}\`\n" - body+="大小: ${size}\n" - body+="打包时间: ${date}\n" - body+="> 校验文件完整性建议:下载后可用 sha256 值校验\n" + # 检查是否有变更 + CHANGES=$(git diff --name-only $LATEST_TAG HEAD) + if [ -n "$CHANGES" ]; then + echo "has_changes=true" >> $GITHUB_OUTPUT + echo "Changes detected since $LATEST_TAG" + echo "Changes: $CHANGES" + else + echo "has_changes=false" >> $GITHUB_OUTPUT + echo "No changes detected since $LATEST_TAG" + fi fi - echo "body<> "$GITHUB_OUTPUT" - echo -e "$body" >> "$GITHUB_OUTPUT" - echo "EOF" >> "$GITHUB_OUTPUT" + fi + + create-release: + needs: check-changes + # 修复条件判断,确保有变更时才运行 + if: ${{ needs.check-changes.outputs.has_changes == 'true' }} + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Debug outputs + run: | + echo "Has changes: ${{ needs.check-changes.outputs.has_changes }}" + echo "Next tag: ${{ needs.check-changes.outputs.next_tag }}" + + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ env.BUILD_BRANCH }} + fetch-depth: 0 + + - name: Get commit history + id: get-history + run: | + NEXT_TAG="${{ needs.check-changes.outputs.next_tag }}" + LATEST_TAG=$(git tag -l "v1.0.*" --sort=-v:refname | head -n 1 || echo "") + + echo "Latest tag: $LATEST_TAG" + echo "Next tag: $NEXT_TAG" + + # 获取提交历史 + if [ -z "$LATEST_TAG" ]; then + COMMIT_RANGE="HEAD" + echo "No previous tag, using all commits" + else + COMMIT_RANGE="$LATEST_TAG..HEAD" + echo "Commit range: $COMMIT_RANGE" + fi + + # 生成变更内容 + echo "变更内容:" > commit_history.txt + git log $COMMIT_RANGE --pretty=format:"%h: %s" >> commit_history.txt + + # 获取去重后的贡献者列表 + echo "贡献者:" > contributors.txt + git log $COMMIT_RANGE --pretty=format:"%an" | sort -u | awk '{print "- " $0}' >> contributors.txt + + # 显示提交历史用于调试 + echo "Commit history:" + cat commit_history.txt + echo "Contributors:" + cat contributors.txt + + - name: Create package + run: | + # 创建时间戳用于文件名 + TIMESTAMP=$(date +%Y%m%d_%H%M%S) + # 打包build分支所有内容,排除.git目录 + tar --exclude='.git' -czf build-package-$TIMESTAMP.tar.gz . + echo "Package created: build-package-$TIMESTAMP.tar.gz" + ls -la *.tar.gz + + - name: Create Git tag + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git tag ${{ needs.check-changes.outputs.next_tag }} + git push origin ${{ needs.check-changes.outputs.next_tag }} + echo "Tag ${{ needs.check-changes.outputs.next_tag }} created and pushed" + + - name: Generate release notes + run: | + TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") + { + echo "自动发布版本: ${{ needs.check-changes.outputs.next_tag }}" + echo "" + cat commit_history.txt + echo "" + cat contributors.txt + echo "" + echo "---" + echo "构建SHA: ${{ github.sha }}" + echo "构建时间: $TIMESTAMP" + } > release_notes.md + + echo "Release notes:" + cat release_notes.md + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ needs.check-changes.outputs.next_tag }} + name: Release ${{ needs.check-changes.outputs.next_tag }} + body_path: release_notes.md + files: build-package-*.tar.gz + draft: false + prerelease: false - - name: Create & Publish Release With Artifact - uses: ncipollo/release-action@v1 - with: - tag: ${{ steps.next_version.outputs.value }} - name: "Operating-document ${{ steps.next_version.outputs.value }} 最新发行版" - body: ${{ steps.generate_body.outputs.body }} - artifacts: build-artifacts.zip - draft: false - prerelease: false + no-release-needed: + needs: check-changes + if: ${{ needs.check-changes.outputs.has_changes == 'false' }} + runs-on: ubuntu-latest + steps: + - name: Skip release + run: | + echo "🚫 没有检测到变更,跳过发布Release" + echo "当前最新标签: $(git tag -l 'v1.0.*' --sort=-v:refname | head -n 1 || echo '无')" \ No newline at end of file diff --git a/.github/workflows/sync-templates.yml b/.github/workflows/sync-templates.yml new file mode 100644 index 0000000..fcff385 --- /dev/null +++ b/.github/workflows/sync-templates.yml @@ -0,0 +1,81 @@ +name: Sync Issue Templates +on: + schedule: + # 每周一凌晨0点(UTC时间)自动同步,相当于北京时间周一早上8点 + - cron: '0 0 * * 1' + workflow_dispatch: # 支持手动触发 + push: + branches: [ main ] + paths: + - '.github/workflows/sync-templates.yml' # 当工作流文件本身更新时也触发 + +jobs: + sync-templates: + runs-on: ubuntu-latest + permissions: + contents: write # 需要写入权限来提交更改 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 # 获取所有历史记录,便于推送 + + - name: Set up Git + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: Sync templates from issue-templates repository + run: | + # 克隆模板仓库到临时目录 + git clone https://github.com/Flyleague-Collection/issue-templates temp-templates + + # 确保目标目录存在 + mkdir -p .github/ISSUE_TEMPLATE + + # 备份可能存在的自定义配置文件(如果有的话) + if [ -f ".github/ISSUE_TEMPLATE/config.yml" ]; then + cp .github/ISSUE_TEMPLATE/config.yml config-backup.yml + fi + + # 复制所有模板文件(排除可能不需要的文件) + cp -r temp-templates/.github/ISSUE_TEMPLATE/* .github/ISSUE_TEMPLATE/ || true + + # 如果有备份的配置文件,恢复它(保持仓库特定的配置) + if [ -f "config-backup.yml" ]; then + cp config-backup.yml .github/ISSUE_TEMPLATE/config.yml + rm config-backup.yml + fi + + # 清理临时目录 + rm -rf temp-templates + + - name: Check for changes + id: changes + run: | + # 检查是否有文件变更 + if git diff --quiet; then + echo "changes=false" >> $GITHUB_OUTPUT + echo "🔄 没有检测到模板变更" + else + echo "changes=true" >> $GITHUB_OUTPUT + echo "📝 检测到模板变更" + git status + git diff --name-only + fi + + - name: Commit and push if changes + if: steps.changes.outputs.changes == 'true' + run: | + git add .github/ISSUE_TEMPLATE/ + git commit -m "🔁 chore: 自动同步最新的 issue 模板 [skip ci]" + git push origin main + + echo "✅ 模板同步完成并已提交" + + - name: No changes + if: steps.changes.outputs.changes == 'false' + run: | + echo "✅ 模板已是最新版本,无需更新" \ No newline at end of file diff --git a/.gitignore b/.gitignore index c9b24fb..8ab616d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,111 @@ -# obsidian -.obsidian/ +# CC0 1.0 Universal +# +# Statement of Purpose +# +# The laws of most jurisdictions throughout the world automatically confer +# exclusive Copyright and Related Rights (defined below) upon the creator and +# subsequent owner(s) (each and all, an "owner") of an original work of +# authorship and/or a database (each, a "Work"). +# +# Certain owners wish to permanently relinquish those rights to a Work for the +# purpose of contributing to a commons of creative, cultural and scientific +# works ("Commons") that the public can reliably and without fear of later +# claims of infringement build upon, modify, incorporate in other works, reuse +# and redistribute as freely as possible in any form whatsoever and for any +# purposes, including without limitation commercial purposes. These owners may +# contribute to the Commons to promote the ideal of a free culture and the +# further production of creative, cultural and scientific works, or to gain +# reputation or greater distribution for their Work in part through the use and +# efforts of others. +# +# For these and/or other purposes and motivations, 和 without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. +# +# 1. Copyright and Related Rights. A Work made available under CC0 may be +# protected by copyright and related or neighboring rights ("Copyright and +# Related Rights"). Copyright and Related Rights include, but are not limited +# to, the following: +# +# i. the right to reproduce, adapt, distribute, perform, display, communicate, 和 translate a Work; +# +# ii. moral rights retained by the original author(s) and/or performer(s); +# +# iii. publicity and privacy rights pertaining to a person's image or likeness +# depicted in a Work; +# +# iv. rights protecting against unfair competition in regards to a Work, +# subject to the limitations in paragraph 4(a), below; +# +# v. rights protecting the extraction, dissemination, use and reuse of data in +# a Work; +# +# vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, 和 under any national implementation thereof, including any amended or successor version of such directive); and +# +# vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, 和 any national implementations thereof. +# +# 2. Waiver. To the greatest extent permitted by, but not in contravention of, +# applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +# unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +# and Related Rights and associated claims and causes of action, whether now +# known or unknown (including existing as well as future claims and causes of +# action), in the Work (i) in all territories worldwide, (ii) for the maximum +# duration provided by applicable law or treaty (including future time +# extensions), (iii) in any current or future medium and for any number of +# copies, and (iv) for any purpose whatsoever, including without limitation +# commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes +# the Waiver for the benefit of each member of the public at large and to the +# detriment of Affirmer's heirs and successors, fully intending that such Waiver +# shall not be subject to revocation, rescission, cancellation, termination, or +# any other legal or equitable action to disrupt the quiet enjoyment of the Work +# by the public as contemplated by Affirmer's express Statement of Purpose. +# +# 3. Public License Fallback. Should any part of the Waiver for any reason be +# judged legally invalid or ineffective under applicable law, then the Waiver +# shall be preserved to the maximum extent permitted taking into account +# Affirmer's express Statement of Purpose. In addition, to the extent the Waiver +# is so judged Affirmer hereby grants to each affected person a royalty-free, +# non transferable, non sublicensable, non exclusive, irrevocable and +# unconditional license to exercise Affirmer's Copyright and Related Rights in +# the Work (i) in all territories worldwide, (ii) for the maximum duration +# provided by applicable law or treaty (including future time extensions), (iii) +# in any current or future medium and for any number of copies, and (iv) for any +# purpose whatsoever, including without limitation commercial, advertising or +# promotional purposes (the "License"). The License shall be deemed effective as +# of the date CC0 was applied by Affirmer to the Work. Should any part of the +# License for any reason be judged legally invalid or ineffective under +# applicable law, such partial invalidity or ineffectiveness shall not +# invalidate the remainder of the License, and in such case Affirmer hereby +# affirms that he or she will not (i) exercise any of his or her remaining +# Copyright and Related Rights in the Work or (ii) assert any associated claims +# and causes of action with respect to the Work, in either case contrary to +# Affirmer's express Statement of Purpose. +# +# 4. Limitations and Disclaimers. +# +# a. No trademark or patent rights held by Affirmer are waived, abandoned, +# surrendered, licensed or otherwise affected by this document. +# +# b. Affirmer offers the Work as-is and makes no representations or warranties +# of any kind concerning the Work, express, implied, statutory or otherwise, +# including without limitation warranties of title, merchantability, fitness +# for a particular purpose, non infringement, or the absence of latent or +# other defects, accuracy, or the present or absence of errors, whether or not +# discoverable, all to the greatest extent permissible under applicable law. +# +# c. Affirmer disclaims responsibility for clearing rights of other persons +# that may apply to the Work or any use thereof, including without limitation +# any person's Copyright and Related Rights in the Work. Further, Affirmer +# disclaims responsibility for obtaining any necessary consents, permissions +# or other rights required for any use of the Work. +# +# d. Affirmer understands and acknowledges that Creative Commons is not a +# party to this document and has no duty or obligation with respect to this +# CC0 or use of the Work. +# +# For more information, please see +# + +# Files is from: https://github.com/github/gitignore/blob/main/Python.gitignore +# Only this file use # Byte-compiled / optimized / DLL files __pycache__/ @@ -45,6 +151,7 @@ htmlcov/ .nox/ .coverage .coverage.* +.cache nosetests.xml coverage.xml *.cover @@ -114,8 +221,8 @@ ipython_config.py # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. # https://pdm-project.org/en/latest/usage/project/#working-with-version-control -pdm.lock -pdm.toml +# pdm.lock +# pdm.toml .pdm-python .pdm-build/ @@ -168,7 +275,6 @@ venv.bak/ # mkdocs documentation /site -mkdocs.yml # mypy .mypy_cache/ @@ -189,7 +295,64 @@ cython_debug/ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. -# .idea/ +# Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 +.idea/ + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ +.idea/sonarlint.xml # see https://community.sonarsource.com/t/is-the-file-idea-idea-idea-sonarlint-xml-intended-to-be-under-source-control/121119 + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based HTTP Client +.idea/httpRequests +http-client.private.env.json + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +# Apifox Helper cache +.idea/.cache/.Apifox_Helper +.idea/ApifoxUploaderProjectSetting.xml # Abstra # Abstra is an AI-powered process automation framework. @@ -198,11 +361,20 @@ cython_debug/ .abstra/ # Visual Studio Code -# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore -# and can be added to the global gitignore or merged into this file. However, if you prefer, +# and can be added to the global gitignore or merged into this file. However, if you prefer, # you could uncomment the following to ignore the entire vscode folder -# .vscode/ +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets +!*.code-workspace + +# Built Visual Studio Code Extensions +*.vsix # Ruff stuff: .ruff_cache/ @@ -216,4 +388,7 @@ marimo/_lsp/ __marimo__/ # Streamlit -.streamlit/secrets.toml \ No newline at end of file +.streamlit/secrets.toml + +# Obsidian +.obsidian/ \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..360c839 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,251 @@ +# 贡献指南 + +Contribution Guidelines + + + +## User Guide / 使用指南 + +### Python 库 + +#### 基础库 + +| Package | Version | +| -------- |---------| +| zensical | 0.0.8 | + +#### 依赖库 + +``` +Package Version +------------------ ------- +click 8.3.0 +colorama 0.4.6 +deepmerge 2.0 +Markdown 3.10 +pip 25.3 +Pygments 2.19.2 +pymdown-extensions 10.16.1 +PyYAML 6.0.3 +``` + +#### 部署教程 + +##### 一、使用 `zensical` 进行部署 + +1. 确保有python环境(>=3.12) + +2. 克隆本项目到本地 + ```shell + git clone https://github.com/Flyleague-Collection/Operating-document.git + ``` + +3. 创建虚拟环境 + 你也可以使用conda或者pdm之类的包管理软件, 这里我们使用python原生的venv做示范 + ```shell + python -m venv ./.venv + ``` + +4. 激活虚拟环境 + ```cmd + ; cmd + .\.venv\Scripts\activate.bat + ``` + ```powershell + ; powershell + .\.venv\Scripts\activate + ``` + +5. 安装所需的库 + ```shell + pip install -r requirements.txt + ``` + +6. 运行开发服务器 + ```shell + zensical serve + ``` + +7. 进行编写 + +##### 二、使用bat脚本部署 + +1. 运行项目根目录下的`DevEnv-Launcher.bat`一键配置环境及打开Vscode + +2. 运行开发服务器 + ```shell + zensical serve + ``` + +3. 进行编写 + +##### 三、生成 `requirements.txt` + +1. 安装freeze + ```shell + pip freeze + ``` + +2. 生成requirements.txt + ```shell + pip freeze > requirements.txt + ``` + +##### 四、更新 `zensical` + +1. 前往 [`Zensical` Github releases](https://github.com/zensical/zensical/releases) 查看版本 + +2. 更新`zensical` + ```shell + pip install --upgrade --force-reinstall zensical + ``` + +3. 参考[生成requirements.txt](#requirementstxt),更新requirements.txt + +### 文件分类的说明 + +本文档站有许多分文件夹,以下将讲述他们的用途,这些文件夹均在`/docs`内: + +```markdown +General - 总则,通适用于任何用户的文件 +CTD - 管制员训练部,培训管制员所用到的材料等 + Learning_Center - 学习中心,培训管制员所用到的一些理论资料 +PTD - 飞行员训练部,培训飞行员所用到的材料等 + Learning_Center - 学习中心,培训飞行员所用到的一些理论资料 +Document - 文档,存放上述Markdown文件的docs、pdf格式文件 +``` + + + +--- + + + +## Repository Community / 仓库社区 + +### 讨论(Discussions) + +[仓库讨论专栏](https://github.com/Flyleague-Collection/Operating-document/discussions),您可以在此进行一些讨论、请教,我们会第一时间进行回复。 + +![Discussions](./assets/discussions.png) + +### 议题(Issues) + +[议题专栏](https://github.com/Flyleague-Collection/Operating-document/issues/new/choose),您可以在此对仓库提供一些有建设性的建议,例如: + +- Bug 报告:汇报文档中存在的错误、失效链接或技术问题 +- 文档改进:帮助完善现有文档内容,提升文档质量 +- 功能增强:对现有功能提出优化建议 +- 功能申请:申请添加全新的功能或内容模块 + +![Issues](./assets/issues.png) + +### 发展路线图(Roadmap) + +[项目专栏](https://github.com/orgs/Flyleague-Collection/projects/2),您可以再次查阅我们的[Issues](#)完成情况,及我们下一步的发展路线 + +![Projects](./assets/projects.png) + + + +--- + + + +## Code of Conduct / 社区行为准则(贡献者公约) + +您可以查看Markdown文件版本,[在此查看](./CODE_OF_CONDUCT.md) + +### 我们的承诺 + +身为社区成员、贡献者和领袖,我们承诺使社区参与者不受骚扰,无论其年龄、体型、可见或不可见的缺陷、族裔、性征、性别认同和表达、经验水平、教育程度、社会与经济地位、国籍、相貌、种族、种姓、肤色、宗教信仰、性倾向或性取向如何。 + +我们承诺以有助于建立开放、友善、多样化、包容、健康社区的方式行事和互动。 + +### 我们的准则 + +有助于为我们的社区创造积极环境的行为例子包括但不限于: + +* 表现出对他人的同情和善意 +* 尊重不同的主张、观点和感受 +* 提出和大方接受建设性意见 +* 承担责任并向受我们错误影响的人道歉 +* 注重社区共同诉求,而非个人得失 + +不当行为例子包括: + +* 使用情色化的语言或图像,及性引诱或挑逗 +* 嘲弄、侮辱或诋毁性评论,以及人身或政治攻击 +* 公开或私下的骚扰行为 +* 未经他人明确许可,公布他人的私人信息,如物理或电子邮件地址 +* 其他有理由认定为违反职业操守的不当行为 + +### 责任和权力 + +社区领袖有责任解释和落实我们所认可的行为准则,并妥善公正地对他们认为不当、威胁、冒犯或有害的任何行为采取纠正措施。 + +社区领导有权力和责任删除、编辑或拒绝或拒绝与本行为准则不相符的评论(comment)、提交(commits)、代码、维基(wiki)编辑、议题(issues)或其他贡献,并在适当时机知采取措施的理由。 + +### 适用范围 + +本行为准则适用于所有社区场合,也适用于在公共场所代表社区时的个人。 + +代表社区的情形包括使用官方电子邮件地址、通过官方社交媒体帐户发帖或在线上或线下活动中担任指定代表。 + +### 监督 + +辱骂、骚扰或其他不可接受的行为可通过 [插入联系方式] 向负责监督的社区领袖报告。 所有投诉都将得到及时和公平的审查和调查。 + +所有社区领袖都有义务尊重任何事件报告者的隐私和安全。 + +### 处理方针 + +社区领袖将遵循下列社区处理方针来明确他们所认定违反本行为准则的行为的处理方式: + +#### 1. 纠正 + +**社区影响**:使用不恰当的语言或其他在社区中被认定为不符合职业道德或不受欢迎的行为。 + +**处理意见**:由社区领袖发出非公开的书面警告,明确说明违规行为的性质,并解释举止如何不妥。或将要求公开道歉。 + +#### 2. 警告 + +**社区影响**:单个或一系列违规行为。 + +**处理意见**:警告并对连续性行为进行处理。在指定时间内,不得与相关人员互动,包括主动与行为准则执行者互动。这包括避免在社区场所和外部渠道中的互动。违反这些条款可能会导致临时或永久封禁。 + +#### 3. 临时封禁 + +**社区影响**: 严重违反社区准则,包括持续的不当行为。 + +**处理意见**: 在指定时间内,暂时禁止与社区进行任何形式的互动或公开交流。在此期间,不得与相关人员进行公开或私下互动,包括主动与行为准则执行者互动。违反这些条款可能会导致永久封禁。 + +#### 4. 永久封禁 + +**社区影响**:行为模式表现出违反社区准则,包括持续的不当行为、骚扰个人或攻击或贬低某个类别的个体。 + +**处理意见**:永久禁止在社区内进行任何形式的公开互动。 + +### 参见 + +本行为准则改编自 [Contributor Covenant][homepage] 2.1 版, 参见 [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]。 + +社区处理方针灵感来源于 [Mozilla's code of conduct enforcement ladder][Mozilla CoC]。 + +有关本行为准则的常见问题的答案,参见 [https://www.contributor-covenant.org/faq][FAQ]。 其他语言翻译参见 [https://www.contributor-covenant.org/translations][translations]。 + +--- + + + +## 后记 + +🎉🎉🎉感谢您的贡献!🎉🎉🎉 + + + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md index 4749431..26c9c23 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,13 +1,26 @@ # CC BY-SA 4.0 License +知识共享署名-相同方式共享 4.0 国际许可协议 + +--- + +> [!NOTE] +> +> 注:此文本并未为协议的法律文本,详见:[https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans](https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans) + 本项目采用 [知识共享署名-相同方式共享 4.0 国际许可协议 (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans) 授权。 您可以自由地: + - 分享 — 在任何媒介以任何形式复制、发行本作品 - 演绎 — 修改、转换或以本作品为基础进行创作 惟须遵守以下条件: + - **署名** — 您必须给予适当的署名,提供许可协议链接,并指明是否作了修改。 - **相同方式共享** — 若您再混合、转换或者基于本作品进行创作,必须基于与原先许可协议相同的许可分发。 完整协议请参见 [https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans](https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans)。 + +--- + diff --git a/README.md b/README.md index 2ab53a8..84cb64e 100644 --- a/README.md +++ b/README.md @@ -1,184 +1,34 @@ # 运行文档 Operating-document +![homepage](./docs/assets/homepage.png) + [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg?style=for-the-badge)](https://creativecommons.org/licenses/by-nc-sa/4.0) ![Markdown](https://img.shields.io/badge/Markdown-000000?style=for-the-badge&logo=Markdown&logoColor=ffffff) ![BuildStateCard](https://img.shields.io/github/actions/workflow/status/Flyleague-Collection/Operating-document/ci.yml?style=for-the-badge&logo=github&label=build) ![LastCommitCard](https://img.shields.io/github/last-commit/Flyleague-Collection/Operating-document?display_timestamp=committer&style=for-the-badge&logo=github) +## 项目简介 + +![Logo](./docs/assets/Logo_25.png) **欢迎来到 Operating-document 文档站!** + 本项目是一个以Markdown语言以及[Zensical](https://zensical.org/)文档站(原[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)))组成的一个模拟飞行平台运营所集成的所有文档,这包括: - 行为准则 - 管制员考核大纲 +- SOP(标准操作流程) - ...... -# Roadmap - -您可以在我们的[github仓库项目](https://github.com/orgs/Flyleague-Collection/projects/2)中,查阅我们的发展路线 - - - -# 官方讨论渠道 - -您可以前往我们的github仓库、[Discussions板块](https://github.com/Flyleague-Collection/Operating-document/discussions)与我们一同进行讨论,请务必遵守[社区行为准则](CODE_OF_CONDUCT.md)哦 - - - -## 使用指南 - -- 将本仓库Fork下来,再用Github page将此项目运营在github服务器上 -- 将本仓库Fork下来,和我们一起对其进行编写! -- 也可以将此项目部署在本地服务器上 - - - -## 使用Python库 - -### 基础库: - -| Package | Version | -| -------- | ------- | -| zensical | 0.0.6 | - - - -### 依赖库: - -``` -Package Version ------------------- ------- -click 8.3.0 -colorama 0.4.6 -deepmerge 2.0 -Markdown 3.10 -pip 25.3 -Pygments 2.19.2 -pymdown-extensions 10.16.1 -PyYAML 6.0.3 -``` - - - -## 部署教程 - -### 使用`zensical`进行部署 - -1. 确保有python环境(>=3.12) - -2. 克隆本项目到本地 - ```shell - git clone https://github.com/Flyleague-Collection/Operating-document.git - ``` - -3. 创建虚拟环境 - - 你也可以使用conda或者pdm之类的包管理软件, 这里我们使用python原生的venv做示范 - - ```shell - python -m venv ./.venv - ``` - -4. 激活虚拟环境 - ```cmd - ; cmd - .\.venv\Scripts\activate.bat - ``` - - ```powershell - ; powershell - .\.venv\Scripts\activate - ``` - -5. 安装所需的库 - - ```shell - pip install -r requirements.txt - ``` - -6. 运行开发服务器 - ```shell - zensical serve - ``` - -7. 进行编写 - - - -### 使用bat脚本部署 - -1. 运行项目根目录下的`DevEnv-Launcher.bat`一键配置环境及打开Vscode - -2. 运行开发服务器 - - ```shell - zensical serve - ``` - -3. 进行编写 - - - -### 添加requirements.txt - -1. 安装freeze - - ```shell - pip freeze - ``` - -2. 生成requirements.txt - - ```shell - pip freeze > requirements.txt - ``` - - - -### 更新Zensical - -1. 前往[Github releases](https://github.com/zensical/zensical/releases)查看版本 - -2. 更新Zensical - - ```shell - pip install --upgrade --force-reinstall zensical - ``` - -3. 参考[添加requirements.txt](#添加requirementstxt) 更新requirements.txt - - - -## 贡献方式 - -您可以将本项目进行 [fork](https://github.com/Flyleague-Collection/Operating-document/fork),并查看 [#3](https://github.com/Flyleague-Collection/Operating-document/issues/3) 内的Todo list以查看需要完成的任务 - - - -## 文件分类的说明 - -本文档站有许多分文件夹,以下将讲述他们的用途: - -```markdown -General - 总则,通适用于任何用户的文件 -CTD - 管制员训练部,培训管制员所用到的材料等 - Learning_Center - 学习中心,培训管制员所用到的一些理论资料 -PTD - 飞行员训练部,培训飞行员所用到的材料等 -Document - 文档,存放上述Markdown文件的docs、pdf格式文件 -``` - - - -## 适用的平台 - -目前我们已经将这套方案启用于“APOCFLY 天启模拟飞行平台”上,您可以[点此](https://qm.qq.com/q/5qyq2c4n9m)加群。 - - - ## 许可证 本项目的全部文字在 CC BY-SA 4.0(知识共享 署名-相同方式共享 4.0协议) 之条款下提供,附加条款亦可能应用。 -```markdown -本项目采用:知识共享署名-相同方式共享 4.0 国际许可协议 CC BY-SA 4.0(https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans) 授权。 +> [!NOTE] +> +> 注:此文本并未为协议的法律文本,详见:[https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans](https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans) + +### CC BY-SA 4.0 License + +本项目采用 [知识共享署名-相同方式共享 4.0 国际许可协议 (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans) 授权。 您可以自由地: @@ -187,13 +37,10 @@ Document - 文档,存放上述Markdown文件的docs、pdf格式文件 惟须遵守以下条件: -- 署名 — 您必须给予适当的署名,提供许可协议链接,并指明是否作了修改。 -- 相同方式共享 — 若您再混合、转换或者基于本作品进行创作,必须基于与原先许可协议相同的许可分发。 - -完整协议请参见: https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans。 -``` - +- **署名** — 您必须给予适当的署名,提供许可协议链接,并指明是否作了修改。 +- **相同方式共享** — 若您再混合、转换或者基于本作品进行创作,必须基于与原先许可协议相同的许可分发。 +完整协议请参见 [https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans](https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans)。 --- diff --git a/assets/Logo.png b/assets/Logo.png deleted file mode 100644 index 70c4ec9..0000000 Binary files a/assets/Logo.png and /dev/null differ diff --git a/assets/Markdown-000000.svg b/assets/Markdown-000000.svg deleted file mode 100644 index a69c211..0000000 --- a/assets/Markdown-000000.svg +++ /dev/null @@ -1 +0,0 @@ -MARKDOWNMARKDOWN \ No newline at end of file diff --git a/assets/qrcode_1759422014906.jpg b/assets/qrcode_1759422014906.jpg deleted file mode 100644 index 6529046..0000000 Binary files a/assets/qrcode_1759422014906.jpg and /dev/null differ diff --git a/docs/CTD/Learning_Center/index.md b/docs/CTD/Learning_Center/index.md index 6009941..9410e0b 100644 --- a/docs/CTD/Learning_Center/index.md +++ b/docs/CTD/Learning_Center/index.md @@ -2,7 +2,7 @@ ## 一、简介 -本学习中心是与 [管制员考核大纲](../OPDOC-CTD-202501-R3-SC.md) 配套的一个学习理论知识的地方,也是任何管制员的必经之路,在完成每一章的学习后,我们会有一个考试,这是为了检测你的理论知识是否符合大纲的要求,也就是符合该席位上管的要求。 +本学习中心是与 [管制员考核大纲](../OPDOC-CTD-202501-R4-SC.md) 配套的一个学习理论知识的地方,也是任何管制员的必经之路,在完成每一章的学习后,我们会有一个考试,这是为了检测你的理论知识是否符合大纲的要求,也就是符合该席位上管的要求。 任何Sweatbox训练的前提都是理论,如果一个管制员的理论知识不够熟练,那么再次前提下继续Sweatbox训练都将是徒劳的,没有用的。 @@ -70,4 +70,4 @@ ## 三、参考资料 -[1] [管制员考核大纲](../OPDOC-CTD-202501-R3-SC.md) \ No newline at end of file +[1] [管制员考核大纲](../OPDOC-CTD-202501-R4-SC.md) \ No newline at end of file diff --git a/docs/CTD/OPDOC-CTD-202501-R3-SC.md b/docs/CTD/OPDOC-CTD-202501-R4-SC.md similarity index 77% rename from docs/CTD/OPDOC-CTD-202501-R3-SC.md rename to docs/CTD/OPDOC-CTD-202501-R4-SC.md index 1de27c4..07ebe1c 100644 --- a/docs/CTD/OPDOC-CTD-202501-R3-SC.md +++ b/docs/CTD/OPDOC-CTD-202501-R4-SC.md @@ -1,8 +1,8 @@ # 管制员培训大纲 -发行日期:2025年10月2日 +发行日期:2025年11月15日 -文件编号:OPDOC-CTD-202501-R3-SC +文件编号:OPDOC-CTD-202501-R4-SC @@ -25,12 +25,13 @@ ## 修订记录 -| 版本 | 时间 | 描述 | 编者 | -| ---- | ---------- | ------------------------------------------ | -------------------------- | -| R0 | 2025.05.22 | 初版 | 2352 | -| R1 | 2025.07.09 | 重构
增加内容 | 2352
Yiheng Gui(5516) | -| R2 | 2025.09.14 | 重构
增加至Operating-document | Yiheng Gui(5516) | -| R3 | 2025.10.02 | 取消连飞小时数要求
增加教员、教师部分 | Yiheng Gui(5516) | +| 版本 | 时间 | 描述 | 编者 | +| ---- | ---------- | ------------------------------------------------------------ | ---------------------------------------- | +| R0 | 2025.05.22 | 初版 | Half nothing(2352) | +| R1 | 2025.07.09 | 重构
增加内容 | Half nothing(2352)
Yiheng Gui(5516) | +| R2 | 2025.09.14 | 重构
增加至Operating-document | Yiheng Gui(5516) | +| R3 | 2025.10.02 | 取消连飞小时数要求
增加教员、教师部分 | Yiheng Gui(5516) | +| R4 | 2025.11.15 | 增加关于solo的事宜
增加监管运行模式
明确在ATC INFO中的填写信息 | Yiheng Gui(5516) | @@ -46,7 +47,7 @@ 1.4 本规则会根据平台情况适时调整,请关注最新培训要求。 -1.5 本规则最终解释权归行政管理组所有,任何疑问请及时反馈。 +1.5 本规则最终解释权归管理组所有,任何疑问请及时反馈。 1.6 有任意两名教员或一名教员与教师在场的情况下,可不进行录音,保护学员隐私。 @@ -54,7 +55,9 @@ ### 2. 管制员行为规范 -注:此行为规范基于主行为准则进行补充,与主COC不冲突。 +!!! Note + + 注:此行为规范基于主行为准则进行补充,与主COC不冲突 2.1 尊重每一个人:如果该管制员在训练过程中有对教员、飞行员或任何平台成员有不尊重或不文明的行为,就可能根据其严重程度,终止本次训练、甚至取消训练资格。 @@ -103,11 +106,13 @@ 2.14 仅允许以下模拟飞行平台的**在职**管制员通过客座管制员的身份加入本平台。 -- Vatprc(其他Vatsim分部的管制,视情况客座) -- Skyline -- Xflysim -- Chinaflier -- Sino +- [Vatprc](https://vatprc.net/)(其他Vatsim分部的管制,视情况客座) +- [Skyline](https://home.skylineflyleague.cn/) +- [Xflysim](https://www.xflysim.com/) +- [Chinaflier](https://www.chinaflier.com/) +- [Sino](https://bbs.sinofsx.org/) + +2.15 遵循ATC INFO规定:在本训练大纲的各部分,例如:Under Mentoring、Solo等,均出现了明确的ATC INFO规定,管制员应遵循此规定。 @@ -141,9 +146,55 @@ 盒子(Sweatbox) - 模拟机。用于对管制员进行训练的手段,通常由操控端和训练端组成。 -向下兼容(Topdown) - 一种管制的运行模式。注:此提倡在尽可能的情况下其用该模式以覆盖多机场的管制。 - -见习(Under Mentoring) - 正在学习管制的阶段,有一定的经验,但还未达到正式的要求。注:该席位的见习者需在责任教员报备,且有教员/教师监管的情况下,方可进行活动管制。日常在线也需要在教员监管下进行。 +向下兼容(Topdown) - 一种管制的运行模式。 +!!! Note + 注: + + 此提倡在尽可能的情况下其用该模式以覆盖多机场的管制。 + + 默认情况下,所有席位均为Topdown模式,如该管制席位不希望运行Topdown,则应在ATC INFO中注明: + + ``` + [Operating] XXXX_XXX Airspace Topdown Operating mode is UNAVBL. + ``` + 例如: + ``` + [Operating] ZBAA_CTR Airspace Topdown Operating mode is UNAVBL. + ``` + + +见习(Under Mentoring) - 正在学习管制的阶段,有一定的经验,但还未达到正式的要求。 +!!! Note + 注: + + 该席位的见习者需在责任教员**报备**,且有教员/教师监管的情况下,方可进行活动管制。日常在线也需要在教员监管下进行。 + + Under Mentoring期间,所有在线活动应在ATC INFO中注明: + ``` + [XX Under Mentoring] Training in progress, mentored by XXXX_I_XXX. + ``` + 例如: + ``` + [S1 Under Mentoring] Training in progress, mentored by ZBAA_I_TWR. + ``` + +Solo - 能够胜任该席位的放单标准,但缺少一定的经验。 +!!! Note + 注: + + 每次Solo证书签至少7天,最多一次性签发14天,共计最多签发70天。 + + 该席位的见习者需在责任教员**报备**,且有教员/教师监管的情况下,方可进行活动管制。但,日常在线**不需要**在教员监管下进行。 + + Solo期间,所有在线活动应在ATC INFO中注明: + + ``` + [XX Solo] Certification expires on XXXX.XX.XX + ``` + 例如: + ``` + [S1 Solo] Certification expires on 2077.02.31 + ``` 教员(Instructor) - 教授学员的人员,且可以负责考核的人员。 @@ -164,11 +215,14 @@ | 观察员 | Observer | OBS | | 仅能进行观察 | | 塔台管制员
(见习) | Student 1 Under Mentoring | S1 UM、S1 见习 | GND/DEL
Ground/Delivery
(地面/放行) | | | 塔台管制员
(正式) | Student 1 | S1 | GND/DEL
Ground/Delivery
(地面/放行) | | +| 无 | Student 1 Solo | S1 Solo | GND/DEL
Ground/Delivery
(地面/放行) | | | 塔台管制员
(资深) | Student 2 | S2 | TWR
Tower
(塔台) | | | 非雷达管制员 | Tier 2 | T2 | Procedural
Tower
(塔台) | | | 进近管制员
(见习) | Student 3 Under Mentoring | S3 UM、S3 见习 | TMA
Termina Control Area
(终端) | | +| 无 | Student 3 Solo | S3 Solo | TMA
Termina Control Area
(终端) | | | 进近管制员
(正式) | Student 3 | S3 | TMA
Termina Control Area
(终端) | | | 区域管制员
(见习) | Control 1
Under Mentoring | C1 UM、C1 见习 | ACC
Area Control Centre
(区域管制中心) | | +| 无 | Control 1 Solo | C1 Solo | ACC
Area Control Centre
(区域管制中心) | | | 区域管制员
(正式) | Control 1 | C1 | ACC
Area Control Centre
(区域管制中心) | | | 区域管制员
(弃用) | Control 2
(弃用) | C2
(弃用) | | 弃用 | | 区域管制员
(资深) | Control 3 | C3 | ACC
Area Control Centre
(区域管制中心) | | @@ -202,6 +256,7 @@ - 拥有对管制工作的热爱 - 注册满48小时 +- 24小时内**未进行**申请 - 机组的中英文陆空能力 - 了解管制员的规章制度 - 简单的Metar报文解读能力 @@ -262,6 +317,15 @@ +### Student 1 Solo + +#### S1 Solo 授予标准 + +- 获得“Student 1 Under Mentoring 塔台管制员(见习)”管制权限 +- 得到责任教员/教师授予的Solo签发证书 + + + ### Student 1 #### S1 在线训练 考核标准 @@ -288,7 +352,7 @@ #### S2 授予标准 - 获得“Student 1 塔台管制员(正式)”管制权限 -- 上管时长达到2小时 +- S1期间上管时长累计达2小时 @@ -413,6 +477,15 @@ Sweatbox文本应含有进离场航空器,10~12架次。 +### Student 3 Solo + +#### S3 Solo 授予标准 + +- 获得“Student 3 Under Mentoring 进近管制员(见习)”管制权限 +- 得到责任教员/教师授予的Solo签发证书 + + + ### **Student 3** #### S3 在线训练 考核标准 @@ -523,6 +596,15 @@ Sweatbox文本应含有对向含有潜在冲突的航空器,**10~12架次。** +### Control 1 Solo + +#### C1 Solo 授予标准 + +- 获得“Control 1 Under Mentoring 区域管制员 (见习)”管制权限 +- 得到责任教员/教师授予的Solo签发证书 + + + ### Control 1 #### C1 在线训练 考核标准 @@ -646,6 +728,64 @@ Sweatbox文本应含有对向含有潜在冲突的航空器,**10~12架次。** +## 第八章 监管运行 +!!! Note + 注此运行模式目前处于试运行状态,如您有任何意见需要反馈的,请前往:[ctd@apocfly.com](mailto:ctd@apocfly.com) + + 教员/教师的监管与此模式并不一致,他们需要以:XXXX_X_XXX的形式上线,例如:ZBAA_I_APP + +### 开放条件 + +- “Student 3 进近管制员(正式)”及以上 +- 获得该权限30天及以上 +- 在线小时在该权限累计>30小时 +- 非活动时段 + + + +### 监管对象 + +比当前权限低一级的Under Mentoring管制员 + +例如:S3监管可以监管S2 Under Mentoring及以下 + + + +### 监管席位: + +上级监管下级,且同时在线 + +例如:ZBAA_APP可以监管ZBAA_TWR、ZBAA_GND、ZBAA_RMP、ZBAA_DEL + +!!! Note + 上级需在ATC INFO填写: + ``` + [XX] I am mentoring ZBAA_TWR. + ``` + + 例如: + + ZBAA_APP + ``` + [S3] I am mentoring ZBAA_TWR. + ``` + + --- + + 下级需在ATC INFO填写: + ``` + [XX XXXXX XXXXXXXXX] Training in progress, mentored by XXXX_XXX. + ``` + 例如: + + ZBAA_TWR + ``` + [S1 Under Mentoring] Training in progress, mentored by ZBAA_APP. + ``` + + + + ## 参考资料 [1] [VATSIM.Globa- Controller Administration Policy (GCAP)](https://cdn.vatsim.net/policy-documents/GCAP_v1.1_Release.pdf) diff --git a/docs/CTD/SOP/Interview.md b/docs/CTD/SOP/Interview.md index fd68ca4..64c2882 100644 --- a/docs/CTD/SOP/Interview.md +++ b/docs/CTD/SOP/Interview.md @@ -74,7 +74,7 @@ Regulatory interview standard operating procedure ### 了解管制员的规章制度 -询问其有没有查看管制员考核大纲,如未查看,在面试后的评语中加入链接:https://docs.apocfly.com/CTD/OPDOC-CTD-202501-R3-SC/ +询问其有没有查看管制员考核大纲,如未查看,在面试后的评语中加入链接:[https://docs.apocfly.com/CTD/OPDOC-CTD-202501-R3-SC/](https://docs.apocfly.com/CTD/OPDOC-CTD-202501-R3-SC/) 查看者,可选择跳,或提问(分值占比不高) @@ -82,7 +82,7 @@ Regulatory interview standard operating procedure Metar报文,应尽量采用中国大陆的,有后续预测的(即,带BECMG的报文),Metar报文 -可进入此网站查阅96小时内的报文,https://aviationweather.gov/data/metar/ +可进入此网站查阅96小时内的报文,[https://aviationweather.gov/data/metar/](https://aviationweather.gov/data/metar/) 例如:METAR ZSSS 081400Z 29005MPS 260V320 9999 BKN016 18/15 Q1019 BECMG TL1540 BKN013 diff --git a/docs/CTD/index.md b/docs/CTD/index.md index 522ccf6..9b74d76 100644 --- a/docs/CTD/index.md +++ b/docs/CTD/index.md @@ -1,6 +1,6 @@ # 第一部分 管制员培训中心 CTD -- 管制员培训大纲 OPDOC-CTD-202501-R3-SC [Markdown](./OPDOC-CTD-202501-R3-SC.md) [PDF](#) [Microsoft Word](#) +- 管制员培训大纲 OPDOC-CTD-202501-R4-SC [Markdown](./OPDOC-CTD-202501-R4-SC.md) [PDF](#) [Microsoft Word](#) --- diff --git a/docs/Contents.md b/docs/Contents.md index 53906af..f1980f8 100644 --- a/docs/Contents.md +++ b/docs/Contents.md @@ -6,23 +6,27 @@ Tutorial-Contents ## 书签 +!!! Note + + 注:打"*"代表有偿使用。 + - TeamSpeak: [ts.apocfly.com](ts3server://ts.apocfly.com) - EuroScope / Swift: fsd.apocfly.com - Chrome等网络浏览器: [www.apocfly.com](https://www.apocfly.com) - 文档站: [docs.apocfly.com](https://docs.apocfly.com) - 模飞资源网盘: [file.apocfly.com/apocfly](https://file.apocfly.com/apocfly) - Github: [github.com/Flyleague-Collection](https://github.com/Flyleague-Collection) -- Navigraph: [navigraph.com](https://navigraph.com/) -- Simbrief: [simbrief.com](https://simbrief.com) -- 班级航路查询: [aips.siniswift.com](https://aips.siniswift.com) +- ***Navigraph**: [navigraph.com](https://navigraph.com/) +- ***Simbrief**: [simbrief.com](https://simbrief.com) +- 班机航路查询: [aips.siniswift.com](https://aips.siniswift.com) - Volanta: [volanta.app](https://volanta.app) -- ICAO机型数据库: https://www2023.icao.int/publications/doc8643/pages/search.aspx +- ICAO机型数据库: [www2023.icao.int/publications/doc8643/pages/search.aspx](https://www2023.icao.int/publications/doc8643/pages/search.aspx) ## 飞行 -- [连线飞行教程](./PTD/Learning_Center/Connected_Flight_Tutorial.md) +- [连线飞行教程](./PTD/Learning_Center/Swift_Connected_Flight_Tutorial.md) - [陆空对话](./PTD/Learning_Center/Radiotelephony_Communications_for_Air_Traffic_Services.md) - [Metar报文解读](./PTD/Learning_Center/References/国际气象报文解码.pdf) - [eAIP航图解读](./PTD/Learning_Center/References/航图识读.pdf) diff --git a/docs/Contribution_guidelines.md b/docs/Contribution_guidelines.md new file mode 100644 index 0000000..360c839 --- /dev/null +++ b/docs/Contribution_guidelines.md @@ -0,0 +1,251 @@ +# 贡献指南 + +Contribution Guidelines + + + +## User Guide / 使用指南 + +### Python 库 + +#### 基础库 + +| Package | Version | +| -------- |---------| +| zensical | 0.0.8 | + +#### 依赖库 + +``` +Package Version +------------------ ------- +click 8.3.0 +colorama 0.4.6 +deepmerge 2.0 +Markdown 3.10 +pip 25.3 +Pygments 2.19.2 +pymdown-extensions 10.16.1 +PyYAML 6.0.3 +``` + +#### 部署教程 + +##### 一、使用 `zensical` 进行部署 + +1. 确保有python环境(>=3.12) + +2. 克隆本项目到本地 + ```shell + git clone https://github.com/Flyleague-Collection/Operating-document.git + ``` + +3. 创建虚拟环境 + 你也可以使用conda或者pdm之类的包管理软件, 这里我们使用python原生的venv做示范 + ```shell + python -m venv ./.venv + ``` + +4. 激活虚拟环境 + ```cmd + ; cmd + .\.venv\Scripts\activate.bat + ``` + ```powershell + ; powershell + .\.venv\Scripts\activate + ``` + +5. 安装所需的库 + ```shell + pip install -r requirements.txt + ``` + +6. 运行开发服务器 + ```shell + zensical serve + ``` + +7. 进行编写 + +##### 二、使用bat脚本部署 + +1. 运行项目根目录下的`DevEnv-Launcher.bat`一键配置环境及打开Vscode + +2. 运行开发服务器 + ```shell + zensical serve + ``` + +3. 进行编写 + +##### 三、生成 `requirements.txt` + +1. 安装freeze + ```shell + pip freeze + ``` + +2. 生成requirements.txt + ```shell + pip freeze > requirements.txt + ``` + +##### 四、更新 `zensical` + +1. 前往 [`Zensical` Github releases](https://github.com/zensical/zensical/releases) 查看版本 + +2. 更新`zensical` + ```shell + pip install --upgrade --force-reinstall zensical + ``` + +3. 参考[生成requirements.txt](#requirementstxt),更新requirements.txt + +### 文件分类的说明 + +本文档站有许多分文件夹,以下将讲述他们的用途,这些文件夹均在`/docs`内: + +```markdown +General - 总则,通适用于任何用户的文件 +CTD - 管制员训练部,培训管制员所用到的材料等 + Learning_Center - 学习中心,培训管制员所用到的一些理论资料 +PTD - 飞行员训练部,培训飞行员所用到的材料等 + Learning_Center - 学习中心,培训飞行员所用到的一些理论资料 +Document - 文档,存放上述Markdown文件的docs、pdf格式文件 +``` + + + +--- + + + +## Repository Community / 仓库社区 + +### 讨论(Discussions) + +[仓库讨论专栏](https://github.com/Flyleague-Collection/Operating-document/discussions),您可以在此进行一些讨论、请教,我们会第一时间进行回复。 + +![Discussions](./assets/discussions.png) + +### 议题(Issues) + +[议题专栏](https://github.com/Flyleague-Collection/Operating-document/issues/new/choose),您可以在此对仓库提供一些有建设性的建议,例如: + +- Bug 报告:汇报文档中存在的错误、失效链接或技术问题 +- 文档改进:帮助完善现有文档内容,提升文档质量 +- 功能增强:对现有功能提出优化建议 +- 功能申请:申请添加全新的功能或内容模块 + +![Issues](./assets/issues.png) + +### 发展路线图(Roadmap) + +[项目专栏](https://github.com/orgs/Flyleague-Collection/projects/2),您可以再次查阅我们的[Issues](#)完成情况,及我们下一步的发展路线 + +![Projects](./assets/projects.png) + + + +--- + + + +## Code of Conduct / 社区行为准则(贡献者公约) + +您可以查看Markdown文件版本,[在此查看](./CODE_OF_CONDUCT.md) + +### 我们的承诺 + +身为社区成员、贡献者和领袖,我们承诺使社区参与者不受骚扰,无论其年龄、体型、可见或不可见的缺陷、族裔、性征、性别认同和表达、经验水平、教育程度、社会与经济地位、国籍、相貌、种族、种姓、肤色、宗教信仰、性倾向或性取向如何。 + +我们承诺以有助于建立开放、友善、多样化、包容、健康社区的方式行事和互动。 + +### 我们的准则 + +有助于为我们的社区创造积极环境的行为例子包括但不限于: + +* 表现出对他人的同情和善意 +* 尊重不同的主张、观点和感受 +* 提出和大方接受建设性意见 +* 承担责任并向受我们错误影响的人道歉 +* 注重社区共同诉求,而非个人得失 + +不当行为例子包括: + +* 使用情色化的语言或图像,及性引诱或挑逗 +* 嘲弄、侮辱或诋毁性评论,以及人身或政治攻击 +* 公开或私下的骚扰行为 +* 未经他人明确许可,公布他人的私人信息,如物理或电子邮件地址 +* 其他有理由认定为违反职业操守的不当行为 + +### 责任和权力 + +社区领袖有责任解释和落实我们所认可的行为准则,并妥善公正地对他们认为不当、威胁、冒犯或有害的任何行为采取纠正措施。 + +社区领导有权力和责任删除、编辑或拒绝或拒绝与本行为准则不相符的评论(comment)、提交(commits)、代码、维基(wiki)编辑、议题(issues)或其他贡献,并在适当时机知采取措施的理由。 + +### 适用范围 + +本行为准则适用于所有社区场合,也适用于在公共场所代表社区时的个人。 + +代表社区的情形包括使用官方电子邮件地址、通过官方社交媒体帐户发帖或在线上或线下活动中担任指定代表。 + +### 监督 + +辱骂、骚扰或其他不可接受的行为可通过 [插入联系方式] 向负责监督的社区领袖报告。 所有投诉都将得到及时和公平的审查和调查。 + +所有社区领袖都有义务尊重任何事件报告者的隐私和安全。 + +### 处理方针 + +社区领袖将遵循下列社区处理方针来明确他们所认定违反本行为准则的行为的处理方式: + +#### 1. 纠正 + +**社区影响**:使用不恰当的语言或其他在社区中被认定为不符合职业道德或不受欢迎的行为。 + +**处理意见**:由社区领袖发出非公开的书面警告,明确说明违规行为的性质,并解释举止如何不妥。或将要求公开道歉。 + +#### 2. 警告 + +**社区影响**:单个或一系列违规行为。 + +**处理意见**:警告并对连续性行为进行处理。在指定时间内,不得与相关人员互动,包括主动与行为准则执行者互动。这包括避免在社区场所和外部渠道中的互动。违反这些条款可能会导致临时或永久封禁。 + +#### 3. 临时封禁 + +**社区影响**: 严重违反社区准则,包括持续的不当行为。 + +**处理意见**: 在指定时间内,暂时禁止与社区进行任何形式的互动或公开交流。在此期间,不得与相关人员进行公开或私下互动,包括主动与行为准则执行者互动。违反这些条款可能会导致永久封禁。 + +#### 4. 永久封禁 + +**社区影响**:行为模式表现出违反社区准则,包括持续的不当行为、骚扰个人或攻击或贬低某个类别的个体。 + +**处理意见**:永久禁止在社区内进行任何形式的公开互动。 + +### 参见 + +本行为准则改编自 [Contributor Covenant][homepage] 2.1 版, 参见 [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]。 + +社区处理方针灵感来源于 [Mozilla's code of conduct enforcement ladder][Mozilla CoC]。 + +有关本行为准则的常见问题的答案,参见 [https://www.contributor-covenant.org/faq][FAQ]。 其他语言翻译参见 [https://www.contributor-covenant.org/translations][translations]。 + +--- + + + +## 后记 + +🎉🎉🎉感谢您的贡献!🎉🎉🎉 + + + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations \ No newline at end of file diff --git a/docs/General/OPDOC-General-202502-R2-SC.md b/docs/General/OPDOC-General-202502-R2-SC.md index 7583705..f4152bf 100644 --- a/docs/General/OPDOC-General-202502-R2-SC.md +++ b/docs/General/OPDOC-General-202502-R2-SC.md @@ -155,6 +155,8 @@ - Chinaflier - Sino +4.11 遵循ATC INFO规定:在本训练大纲的各部分,例如:Under Mentoring、Solo等,均出现了明确的ATC INFO规定,管制员应遵循此规定。 + ## 参考资料 diff --git a/docs/LICENSE.md b/docs/LICENSE.md index 7a811fd..2c567a4 100644 --- a/docs/LICENSE.md +++ b/docs/LICENSE.md @@ -1,12 +1,20 @@ -# License +# CC BY-SA 4.0 License + +知识共享署名-相同方式共享 4.0 国际许可协议 + +!!! Note + + 注:此文本并未为协议的法律文本,详见:[https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans](https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans) 本项目采用 [知识共享署名-相同方式共享 4.0 国际许可协议 (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans) 授权。 您可以自由地: + - 分享 — 在任何媒介以任何形式复制、发行本作品 - 演绎 — 修改、转换或以本作品为基础进行创作 惟须遵守以下条件: + - **署名** — 您必须给予适当的署名,提供许可协议链接,并指明是否作了修改。 - **相同方式共享** — 若您再混合、转换或者基于本作品进行创作,必须基于与原先许可协议相同的许可分发。 diff --git a/docs/Meeting/OPDOC-MT-202501-R0-SC.md b/docs/Meeting/OPDOC-MT-202501-R0-SC.md new file mode 100644 index 0000000..a0a5236 --- /dev/null +++ b/docs/Meeting/OPDOC-MT-202501-R0-SC.md @@ -0,0 +1,102 @@ +# 2025年第一次全体职员会议 + +文件编号:OPDOC-MT-202501-R0-SC + +会议时间:2025年11月15日 22:30 + + + +## 修订记录 + +| 版本 | 时间 | 描述 | 编者 | +| ---- | ---------- | ---- | ----------------------- | +| R0 | 2025.11.15 | 初版 | Yiheng Master Gui(5516) | + + + +## 一、 参会情况 + +(一)出席人员 + +- Zhenquan Wang (8305) - 管制员训练部副主任 +- Quanquan (1234) - 行政管理员 +- Bucong Xu (0926) - 行政管理员 +- Half nothing (2352) - 技术管理员 + +(二)缺席人员 + +- Xiao Zhang (1038) - 管制员训练部主管 + +(三)外部人员 + +- Yiheng Master Gui (5516) - 会议书记员 + + + +## 二、 议题讨论与决议 + +### 议题一:关于管制员标牌移交规范 + +讨论摘要: + +- 会议就塔台与雷达管制员之间标牌移交的可行性与规范进行了深入讨论。 +- 主要分歧在于是否允许以及如何在模拟环境中处理标牌移交,以平衡模拟真实性(现实中塔台通常不进行雷达标牌移交)与平台操作便利性。 +- 观点包括:标牌移交可作为责任划分的依据(2352);塔台可接标牌但不应主动移交(甩牌)(8305);应关注移交状态而非移交行为本身(0926)。 +- 指出模拟飞行大环境鼓励接牌,但与现实管制存在差异。当前平台(EuroScope)的标牌更接近于电子进程单,并非完全的雷达标牌模拟。 + +决议: + +- 明确现阶段不强制规定标牌移交流程。是否进行标牌移交,可由管制员根据具体情况和个人习惯决定。 + +### 议题二:关于机组计划提交与显示问题 + +讨论摘要: + +- 讨论了机组通过Swift或网页提交飞行计划时,出现的计划无法正常显示于管制员客户端(EuroScope)的问题。 +- 技术分析表明,计划数据存储于服务器端,理论上不应丢失。问题可能源于计划提交端或数据传输环节。 +- 强制使用网页提交的方案被提出,但质疑其是否能根本上解决问题(2352)。 +- 提及ACDM系统网页端存在访问异常情况。 + +决议: + +- 此问题暂不做出强制性流程变更。 +- 技术管理员(2352)将牵头进一步观察和尝试复现问题,以定位根本原因。 +- 建议在后续组织一次团队飞行活动进行针对性测试。 + +#### 议题三:关于管制员训练违反CoC 2.1的问题 + +讨论摘要: + +- 此议题未展开讨论。 + +决议: + +- 严格依据现有规则(CoC 2.1)进行处理,无特殊通融。 + +#### 议题四:关于管制员考核大纲的审阅 + +决议: + +- 经审议,新版管制员考核大纲获得全员投票通过(5票赞成)。 + +#### 议题五:关于大群矛盾现象 + +决议: + +- 会议达成共识,将在社群内发布倡导和谐交流的声明,以维护良好的沟通氛围。 + +#### 议题六:关于ACDM系统的运行 + +讨论摘要: + +- 讨论了ACDM系统的使用现状,指出其对机组和管制员均有较高操作门槛,目前难以全面推广实行。 + +决议: + +- 暂无强制性推行计划。承认其在计划提交方面的潜力,但需认识到当前普及存在的困难。 + + + +### 三、 散会 + +会议于 2025年11月15日 23:35 结束。 \ No newline at end of file diff --git a/docs/PTD/Learning_Center/Connected_Flight_Tutorial.md b/docs/PTD/Learning_Center/Swift_Connected_Flight_Tutorial.md similarity index 95% rename from docs/PTD/Learning_Center/Connected_Flight_Tutorial.md rename to docs/PTD/Learning_Center/Swift_Connected_Flight_Tutorial.md index 5172d81..8d25cac 100644 --- a/docs/PTD/Learning_Center/Connected_Flight_Tutorial.md +++ b/docs/PTD/Learning_Center/Swift_Connected_Flight_Tutorial.md @@ -1,6 +1,6 @@ -# 连线飞行教程 +# Swift 连飞教程 -Connected Flight Tutorial +Swift Connected Flight Tutorial @@ -53,7 +53,7 @@ Connected Flight Tutorial -然后根据您的操作系统情况,点击“Assets”下方特定版本的安装包下载 +然后根据您的操作系统及**模拟器**情况,点击“Assets”下方特定版本的安装包下载 ![image007](./Connected_Flight_Tutorial_assets/image007.png) @@ -430,7 +430,7 @@ AIG映射包下载后需要手动解压到MSFS的community目录下,注意不 !!! Note - 根据[CoC 2.9](../../General/OPDOC-General-202502-R2-SC/?h=2.9+%E5%90%88%E7%90%86%E7%9A%84%E5%90%8D%E7%A7%B0%EF%BC%9A%E5%9C%A8%E4%BD%BF%E7%94%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E8%87%B3%E7%BD%91%E7%BB%9C%E6%97%B6%EF%BC%8C%E4%BC%9A%E5%87%BA%E7%8E%B0%22Realname%22%E7%9A%84%E5%A1%AB%E5%86%99%E6%A1%86%EF%BC%8C%E9%9C%80%E4%BD%BF%E7%94%A8%EF%BC%9A%E6%B3%A8%E5%86%8CCID%E3%80%81%E6%B3%A8%E5%86%8C%E6%98%B5%E7%A7%B0%E3%80%81%E6%B3%A8%E5%86%8C%E9%82%AE%E7%AE%B1%E4%B8%AD%E4%BB%BB%E6%84%8F%E4%B8%80%E4%B8%AA%EF%BC%88QQ%E5%8F%B7%E5%9B%A0%E5%9C%A8%E6%B3%A8%E5%86%8C%E6%97%B6%E4%B8%8D%E5%BC%BA%E5%88%B6%E5%A1%AB%E5%86%99%EF%BC%8C%E6%95%85%E4%B8%8D%E4%BD%9C%E4%B8%BA%E8%BA%AB%E4%BB%BD%E7%9A%84%E8%AF%86%E5%88%AB%EF%BC%8C%E4%B8%8D%E8%83%BD%E5%9C%A8%E6%AD%A4%E5%A4%84%E5%A1%AB%E5%86%99%EF%BC%89%E3%80%82#_5)有关规定您必须在Real name,填写以下中一项: + 根据[CoC 2.9](../../General/OPDOC-General-202502-R2-SC/?h=%E5%90%88%E7%90%86%E7%9A%84%E5%90%8D%E7%A7%B0#_5)有关规定您必须在Real name,填写以下中一项: - 注册CID @@ -496,7 +496,7 @@ Swift 版本不同该页面可能会有些许不同,但操作逻辑相同 当显示该页面的并且左下角变成绿色,代表你已经连接成功 !!! Warning - 警告:请不要在跑道/滑行道上出生,这是违反[CoC 3.6](../../General/OPDOC-General-202502-R2-SC.md#_6)的违规行为 + 警告:请不要在跑道/滑行道上出生,这是违反[CoC 3.6](../../General/OPDOC-General-202502-R2-SC.md?h=%E4%B8%8D%E5%BE%97%E5%9C%A8%E7%83%AD%E5%8C%BA%E8%BF%9B%E8%A1%8C%E8%BF%9E%E7%BA%BF#_6)的违规行为 @@ -505,6 +505,10 @@ Swift 版本不同该页面可能会有些许不同,但操作逻辑相同 !!! Note 注:如果您对此部分感到困惑,不妨试试我们的网页提交计划功能,[点此进入](https://www.apocfly.com/flight-plan) + + !!! Note + + 此功能仅限[APOC模拟飞行平台](https://www.apocfly.com)使用 ![image095](./Connected_Flight_Tutorial_assets/image095.png) @@ -566,7 +570,10 @@ Swift 版本不同该页面可能会有些许不同,但操作逻辑相同 !!! Note 注:在管制空域内,此处提交的内容只需要提交一次,若您认为飞行计划有问题或管制员告知您的飞行计划有误时,您仅需要在您的飞机上进行更改,而您的计划,管制员会帮忙进行更改。 + !!! Note + 此功能仅限[APOC模拟飞行平台](https://www.apocfly.com)使用 + --- 确认所有内容填写正确后,点击Send 按钮发送飞行计划到服务器(若不放心您也可以多点几下) @@ -590,6 +597,8 @@ Swift 版本不同该页面可能会有些许不同,但操作逻辑相同 ![image106](./Connected_Flight_Tutorial_assets/image106.png) 那么证明您的计划已经在网页提交了,但是本次飞行的航班呼号和网页提交的不同,请您回至[connect页面](#51-connect)重新检查 + !!! Note + 此功能仅限[APOC模拟飞行平台](https://www.apocfly.com)使用 --- diff --git a/docs/PTD/Learning_Center/index.md b/docs/PTD/Learning_Center/index.md index e210b7d..7ab3d90 100644 --- a/docs/PTD/Learning_Center/index.md +++ b/docs/PTD/Learning_Center/index.md @@ -10,12 +10,13 @@ ## 二、目录 +- [Swift连飞教程](./Swift_Connected_Flight_Tutorial.md) - [陆空对话(空中交通无线电通话用语)](Radiotelephony_Communications_for_Air_Traffic_Services.md) - [Metar报文解读](./References/国际气象报文解码.pdf) - [eAIP航图解读](./References/航图识读.pdf) -- [RVSM飞行高度层](RVSM_flight_level.md) -- [飞行情报区](FIR.md) -- [空域](Airspace.md) +- [RVSM飞行高度层](./RVSM_flight_level.md) +- [飞行情报区](./FIR.md) +- [空域](./Airspace.md) diff --git a/docs/Programming/Sectors/index.md b/docs/Programming/Sectors/index.md new file mode 100644 index 0000000..97a0408 --- /dev/null +++ b/docs/Programming/Sectors/index.md @@ -0,0 +1,106 @@ +# China-Mainland-sector 开源扇区 (中国大陆) +**由于中国港澳台地区使用不同的飞行规则,我们暂时没有制作相关扇区,预计在AIRAC2501能完善港澳台地区的扇区** + +China-Mainland-sector开源扇区项目致力于提供免费、开源的 Euroscope 扇区以帮助来自世界各地的模拟管制爱好者获得更好的模拟飞行体验。 + +如果您在使用扇区的过程中遇到了任何问题、或者有任何好的建议,欢迎在 ``[Issues](https://github.com/Flyleague-Collection/China-Mainland-Sector/issues/new/choose)`` 页向我们提出! + +如果您喜欢本扇区,欢迎您给扇区点点``Star``, 或者在下方赞赏我们,您的支持是我们更新的动力! + +------ + +本扇区虽名为China-Mainland-sector开源扇区,但本质为AirAmaz-Sector的衍生物,按照[GPL-3.0 许可证](https://github.com/Flyleague-Collection/China-Mainland-Sector/blob/main/LICENSE)进行开源处理。 + +------ + +### 飞行情报区 + +FIR|500x500 + +*注:此图转自[https://www.vatprc.net/zh-cn/airspace/fir](https://www.vatprc.net/zh-cn/airspace/fir)* + +!!! Note + + VATPRC对于情报区划分并不一定与真实世界中的情报区划分完全一致。 + + 为避免争议,上述示意图仅为 VATPRC**主要**管辖范围。 + + 请勿误将其当作真实中的情报区划分。 + +| 情报区名称 | 导航数据版本 | +| ---------- | ------------ | +| ZBPE | AIRAC2413 | +| ZGZU | AIRAC2413 | +| ZHWH | AIRAC2413 | +| ZJSA | AIRAC2413 | +| ZLHW | AIRAC2413 | +| ZPKM | AIRAC2413 | +| ZSHA | AIRAC2413 | +| ZWUQ | AIRAC2413 | +| ZYSH | AIRAC2413 | + +------ + +### 前置要求 +1. 为保证扇区能够正常加载,您需要安装最新的 Microsoft Visual C++ (x86) 可再发行程序包版本: + - https://aka.ms/vs/17/release/vc_redist.x86.exe +2. 同时您需要安装 DirectX Runtime 以支持我们的渲染库运行: + - https://www.microsoft.com/en-us/download/details.aspx?id=35 + +------ + +### 包含插件 + +| 插件名称 | 主要作者 | +| --------------------------- | ------------------------------------------------------------ | +| TopSky Plugin(闭源) | [Juha Holopainen](https://forum.vatsim-scandinavia.org/u/839337) | +| Ground Radar plugin(闭源) | [Juha Holopainen](https://forum.vatsim-scandinavia.org/u/839337) | +| MTEPlugin for EuroScope | [KingfuChan](https://github.com/KingfuChan) | +| VCH Plugin | [Jan Fries](https://github.com/DrFreas) | +| Compass for Euroscope(闭源) | [William He](https://github.com/Misaka-Nnnnq) | +| AirAmaz RenderPlugin(闭源) | [William He](https://github.com/Misaka-Nnnnq) | + +------ + +### 外部内容 + +| 名称 | 来源 | +| ------------------- | ------------------------------------------------------------ | +| TopSky Symbols | [uk-controller-pack](https://github.com/VATSIM-UK/uk-controller-pack) | +| TopSky Cursors | [VATPRC](https://www.vatprc.net/) | +| AircraftPerformance | [VATSIM](https://github.com/vatsimnetwork/euroscope-performance-data) | + +------ + +### 更新日志 + +按照[GPL-3.0 许可证](https://github.com/Flyleague-Collection/China-Mainland-Sector/blob/main/LICENSE)要求,我们已经将更新日志将会记录在[CHANGELOG.md](https://github.com/Flyleague-Collection/China-Mainland-Sector/blob/main/CHANGELOG.md)上面 + +文章开头的注释由于本人在制作时没有及时察觉此问题,我们将在近期进行补全 + +------ + +### 贡献者 + +- [William He](https://github.com/Misaka-Nnnnq) +- [Bradley.L](https://github.com/BradleyLu) +- [天真永不消逝](https://github.com/shiguanglindi) +- [Yifan Jin](https://github.com/N28888) +- [8305](https://github.com/wvemil) +- [fulkarl](https://github.com/fulkarl) +- [Dapeng Liu](https://github.com/DapengLiu01) +- [Final.]() +- [tn.]() +- [Zihan Wang]() +- [Master Gui](https://github.com/supermastergui) + +------ + +### 声明 +本项目可能包含来源于公开互联网资源的数据或信息。 + +所有此类内容均为其各自所有者的知识产权。 + +使用这些资源仅限于教育和非商业目的,并遵守适用的版权法律。 + +如果您是所使用内容的所有者并希望其被移除或获得适当的署名,请与我们联系,我们将采取相应措施。 diff --git a/docs/Programming/index.md b/docs/Programming/index.md index 64e16b3..bf39d4a 100644 --- a/docs/Programming/index.md +++ b/docs/Programming/index.md @@ -1,4 +1,5 @@ # 附录 技术专题 - [FSD](./FSD/index.md) -- [文档站](../../../../README.md) \ No newline at end of file +- [文档站](../../../../README.md) +- [扇区](./Sectors/index.md) \ No newline at end of file diff --git a/docs/assets/Github.png b/docs/assets/Github.png new file mode 100644 index 0000000..25309bb Binary files /dev/null and b/docs/assets/Github.png differ diff --git a/docs/assets/Logo_25.png b/docs/assets/Logo_25.png new file mode 100644 index 0000000..f22cad7 Binary files /dev/null and b/docs/assets/Logo_25.png differ diff --git a/docs/assets/background.png b/docs/assets/background.png new file mode 100644 index 0000000..2fd42a4 Binary files /dev/null and b/docs/assets/background.png differ diff --git a/docs/assets/discussions.png b/docs/assets/discussions.png new file mode 100644 index 0000000..668dd9a Binary files /dev/null and b/docs/assets/discussions.png differ diff --git a/docs/assets/homepage.png b/docs/assets/homepage.png new file mode 100644 index 0000000..711e309 Binary files /dev/null and b/docs/assets/homepage.png differ diff --git a/docs/assets/issues.png b/docs/assets/issues.png new file mode 100644 index 0000000..cc06ab9 Binary files /dev/null and b/docs/assets/issues.png differ diff --git a/docs/assets/projects.png b/docs/assets/projects.png new file mode 100644 index 0000000..9ad5842 Binary files /dev/null and b/docs/assets/projects.png differ diff --git a/docs/assets/qrcode_1759422014906.jpg b/docs/assets/qrcode_1759422014906.jpg deleted file mode 100644 index 6529046..0000000 Binary files a/docs/assets/qrcode_1759422014906.jpg and /dev/null differ diff --git a/docs/images/Logo.png b/docs/images/Logo.png deleted file mode 100644 index 19f449a..0000000 Binary files a/docs/images/Logo.png and /dev/null differ diff --git a/docs/images/favicon.ico b/docs/images/favicon.ico deleted file mode 100644 index 3c07264..0000000 Binary files a/docs/images/favicon.ico and /dev/null differ diff --git a/docs/images/favicon.png b/docs/images/favicon.png deleted file mode 100644 index 19f449a..0000000 Binary files a/docs/images/favicon.png and /dev/null differ diff --git a/docs/index.md b/docs/index.md index 5f8b9d6..10be095 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,29 +1,25 @@ # 主页 -## 🚀 **欢迎来到 APOCFLY 文档站!** +![background](./assets/background.png) -Logo +## 项目简介 -> 这里不是普通的说明书,而是 **“把整片天空装进口袋”** 的魔法卷轴! +[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg?style=for-the-badge)](https://creativecommons.org/licenses/by-nc-sa/4.0) ![Markdown](https://img.shields.io/badge/Markdown-000000?style=for-the-badge&logo=Markdown&logoColor=ffffff) ![BuildStateCard](https://img.shields.io/github/actions/workflow/status/Flyleague-Collection/Operating-document/ci.yml?style=for-the-badge&logo=github&label=build) ![LastCommitCard](https://img.shields.io/github/last-commit/Flyleague-Collection/Operating-document?display_timestamp=committer&style=for-the-badge&logo=github) -### ✨ 你能在这里找到什么? +![Logo](./assets/Logo_25.png) **欢迎来到 Operating-document 文档站!** -| 章节 | 一句话剧透 | -| :------------- | :------------------------------------------------ | -| **快速起飞** | 3 分钟完成冷舱→离地,像叫外卖一样简单 | -| **联飞管制** | 告别“谁撞了我”——标准陆空通话复制粘贴即用 | -| **开发者小课堂** | 内涵部分包括但不限于:FSD、网页前后端、API等教程 | +本项目是一个以Markdown语言以及[Zensical](https://zensical.org/)文档站(原[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)))组成的一个模拟飞行平台运营所集成的所有文档,这包括: +- 行为准则 +- 管制员考核大纲 +- SOP(标准操作流程) +- ...... -### 🌈 文档站双件套 -1. 🔍 **搜索框** = 黑匣子,丢关键词就能捞出官方答案 -2. 🗂️ **左侧目录** = 航图,点到哪飞哪,绝不偏航 +## 官方社群 - - -### 📑网页书签 +### 网页书签 | 名称 | 服务器地址 | | ------------------ | ------------------------------------------------------------ | @@ -40,8 +36,13 @@ 本项目的全部文字在 CC BY-SA 4.0(知识共享 署名-相同方式共享 4.0协议) 之条款下提供,附加条款亦可能应用。 -```markdown -本项目采用:知识共享署名-相同方式共享 4.0 国际许可协议 CC BY-SA 4.0(https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans) 授权。 +### CC BY-SA 4.0 License + +!!! Note + + 注:此文本并未为协议的法律文本,详见:[https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans](https://creativecommons.org/licenses/by-sa/4.0/legalcode.zh-hans) + +本项目采用 [知识共享署名-相同方式共享 4.0 国际许可协议 (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans) 授权。 您可以自由地: @@ -50,11 +51,14 @@ 惟须遵守以下条件: -- 署名 — 您必须给予适当的署名,提供许可协议链接,并指明是否作了修改。 -- 相同方式共享 — 若您再混合、转换或者基于本作品进行创作,必须基于与原先许可协议相同的许可分发。 +- **署名** — 您必须给予适当的署名,提供许可协议链接,并指明是否作了修改。 +- **相同方式共享** — 若您再混合、转换或者基于本作品进行创作,必须基于与原先许可协议相同的许可分发。 + +完整协议请参见 [https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans](https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans)。 + +--- + -完整协议请参见: https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans。 -``` diff --git a/requirements.txt b/requirements.txt index bd4ab60..85cdce9 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..a57e8f4 --- /dev/null +++ b/robots.txt @@ -0,0 +1,8 @@ +User-agent: Amazonbot +Disallow: / + +User-agent: GPTBot +Disallow: / + +User-agent: * +Allow: / diff --git a/trace.json b/trace.json deleted file mode 100644 index c44dc44..0000000 --- a/trace.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - -] \ No newline at end of file diff --git a/zensical.toml b/zensical.toml index dec323d..e7364c5 100644 --- a/zensical.toml +++ b/zensical.toml @@ -5,6 +5,9 @@ fonts = "JetBrains Mono" language = "zh" favicon = "images/Logo.svg" logo = "images/Logo.svg" +# icon = [ +# repo = "fontawesome/brands/github" +# ] features = [ "search.highlight", "content.action.edit",