EBU6304 group project implementation branch.
Servlet (Controller) -> Service -> Repository -> FileStore- Text-only persistence with JSON Lines (
data/*.jsonl) - No database, compliant with handout constraints
GET /jobs(list + filter)POST /applications(TA idempotent submit, session-based)GET /applications(TA status query, session-based)POST /mo/jobs(MO post job)GET /mo/candidates(MO screening + filter)PUT /mo/applications(MO update application status)GET /admin/workload(workload summary)GET /hr/candidates(ADMIN candidate list/detail for HR review)POST /ai/match(LLM-assisted applicant-job matching)POST /ai/missing-skills(missing skill diagnosis + suggestions)GET /ai/workload-suggestion(workload-aware shortlist recommendation)POST /ai/hr-assessment(one-click resume summary + match score + explanation)
- Memory: lightweight
id/statusindexes, paged reads, no unbounded cache - Stability: input validation, explicit error response, append-only writes, atomic compaction
- Frontend: iPhone-inspired glass style, mobile-first layout, distinct visual hierarchy
data/jobs.jsonldata/applications.jsonldata/users.jsonl
mvn test
mvn jetty:runThen open:
- `http://localhost:8080/
http://localhost:8080/jobs.jsphttp://localhost:8080/mo.jsphttp://localhost:8080/admin.jsphttp://localhost:8080/ai.jsp
Demo credentials after data seeding:
- ADMIN (HR): role
ADMIN, identifierhradmin, passwordHrDemo@123 - TA sample: role
TA, identifierta001, passwordTaDemo@123
Default local config file:
config/ai.local.properties (ignored by git)
openai.api.key=<your_api_key>
openai.model=gpt-4.1
openai.api.endpoint=https://api.openai.com/v1/chat/completionsYou can also override by environment variables:
export OPENAI_API_KEY=\"<your_api_key>\"
export OPENAI_MODEL=\"gpt-4.1\"
export OPENAI_API_ENDPOINT=\"https://api.openai.com/v1/chat/completions\"If OPENAI_API_KEY is not set, the system automatically falls back to deterministic rule-based reasoning so demos remain stable.
# all unit/integration tests
mvn test
# one-click acceptance (after mvn jetty:run)
bash scripts/acceptance/run_acceptance.shDetails:
docs/TESTING_AND_ACCEPTANCE.mddocs/USER_MANUAL.mddocs/screenshots/README.mdTEST_DOCS_DELIVERY_SUMMARY.md
`
- personal branch -> PR ->
project-ta-system - no direct push to
mainfor code