Skip to content

feat(contest): add AOJ_UNIVERSITY contest type for university programming contests#3603

Merged
KATO-Hiro merged 5 commits into
stagingfrom
#3598
May 31, 2026
Merged

feat(contest): add AOJ_UNIVERSITY contest type for university programming contests#3603
KATO-Hiro merged 5 commits into
stagingfrom
#3598

Conversation

@KATO-Hiro
Copy link
Copy Markdown
Collaborator

@KATO-Hiro KATO-Hiro commented May 31, 2026

close #3598

Summary by CodeRabbit

リリースノート

  • New Features

    • AOJ大学系コンテスト(RUPC、HUPC、UAPC)へのサポートを追加しました。これらのコンテストのタスク情報と適切なラベル表示が利用可能になります。
    • 新しいコンテストタスク3件を追加しました。
  • Tests

    • AOJ大学系コンテストの各ユーティリティ機能をカバーするテストケースを追加しました。

KATO-Hiro and others added 5 commits May 31, 2026 13:24
…ming contests

Adds support for RUPC/HUPC/UAPC-style university contests hosted on AOJ,
classified via regex /^AOJ-[A-Z]+PC\d{4}/ with priority 25 and localized
labels (e.g. "(ACPC 2019 in RUPC 2019 Day2)"). Extends AojGenerator.canHandle
so getTaskUrl routes these contests to the correct AOJ problem URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… prevent false positives

Export regexForJag from contest.ts and use it in task.ts URL generation check.
Add test cases for AOJ University contest name formatting.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 31, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: b5f5576f-daa6-46af-b2a7-b1640d535355

📥 Commits

Reviewing files that changed from the base of the PR and between 5b15207 and 5a98807.

📒 Files selected for processing (12)
  • prisma/migrations/20260531130053_add_aoj_university_to_contest_type/migration.sql
  • prisma/schema.prisma
  • prisma/tasks.ts
  • src/lib/types/contest.ts
  • src/lib/utils/contest.ts
  • src/lib/utils/task.ts
  • src/test/lib/utils/contest.test.ts
  • src/test/lib/utils/task.test.ts
  • src/test/lib/utils/test_cases/contest_name_and_task_index.ts
  • src/test/lib/utils/test_cases/contest_name_labels.ts
  • src/test/lib/utils/test_cases/contest_type.ts
  • src/test/lib/utils/test_cases/task_url.ts

📝 Walkthrough

概要

Prisma スキーマと TypeScript 型に ContestType.AOJ_UNIVERSITY を追加し、RUPC・HUPC・UAPC のような AOJ 大学系コンテストを分類・ラベル化・URL 生成できるよう整備。正規表現パターン、分類ロジック、優先度、タスク URL ジェネレータ、包括的なテストカバレッジも同時実装。

変更内容

AOJ University コンテスト対応

Layer / File(s) Summary
スキーマ・型定義
prisma/migrations/..., prisma/schema.prisma, src/lib/types/contest.ts
ContestType enum に AOJ_UNIVERSITY 値を追加。Prisma マイグレーション、スキーマ、TypeScript 型定義を一貫性を保ちながら更新。
コンテスト分類・ラベル生成ロジック
src/lib/utils/contest.ts
AOJ University 用の regexForAojUniversity 正規表現パターンをエクスポート。classifyContestAOJ_UNIVERSITY 分岐を追加。getContestNameLabel で JAG 判定後に University 判定を実施し、getAojUniversityContestLabel 関数で接頭辞除去・表記正規化・括弧ラベル生成を行う。isAojContest に University 判定を追加。
優先度・メタデータ
src/lib/utils/contest.ts
contestTypePrioritiesAOJ_UNIVERSITY エントリ(優先度 25)を追加。優先度説明コメントも更新。
タスク URL・ジェネレータ統合
src/lib/utils/task.ts, prisma/tasks.ts
AojGenerator.canHandle に正規表現ベースの AOJ University 判定を統合。import を分割化し正規表現を再利用。新規タスク 3 件(3058・2903・3171)を Prisma tasks に追加。
テスト・カバレッジ
src/test/lib/utils/contest.test.ts, src/test/lib/utils/task.test.ts, src/test/lib/utils/test_cases/*
classifyContestgetContestPrioritygetContestNameLabeladdContestNameToTaskIndexgetTaskUrl の各関数に AOJ University テストケースを追加。テストデータ定義ファイル 4 件で contest-id~期待値対応を整備。

🎯 3 (Moderate) | ⏱️ ~20 minutes

関連 PR

🎓 大学の光、流れのごと
RUPC・HUPC・UAPC、
正規の門をくぐりて、
優先度 25、ラベルに映る。
AOJ の新たなる道 ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR タイトルは、メインの変更である AOJ_UNIVERSITY コンテスト型の追加を明確かつ簡潔に要約している。
Linked Issues check ✅ Passed リンク済みの issue #3598 の全要件が満たされている:UAPC/RUPC/HUPC の 3 コンテストタイプの対応、正規表現マッピング、優先度設定、ラベル生成、テスト実装が完備されている。
Out of Scope Changes check ✅ Passed 全ての変更が AOJ_UNIVERSITY コンテスト型の追加と関連テストに限定されており、スコープ外の変更は確認されない。

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch #3598

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Collaborator Author

@KATO-Hiro KATO-Hiro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@KATO-Hiro KATO-Hiro merged commit a1072a2 into staging May 31, 2026
3 checks passed
@KATO-Hiro KATO-Hiro deleted the #3598 branch May 31, 2026 22:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] AOJ のフローの問題をインポートできるようにしましょう

1 participant